You’ll need an architect, and a permit for that high rise.
Well I hate to add fuel to a GAS fire, but Hydrasynth is certainly a fabulous instrument in its own right, let alone being a poly AT controller. At a push I would say that the keyboard is slightly more ‘knows what I’m thinking’ on the HS than the one on the Deluxe, but it’s marginal. The extra keys on the Deluxe are certainly welcome.
I don’t need much help on the GAS, but I guess every little helps.
I’ve always been intrigued with the idea of Poly AT, but always felt the original Hydrasynth was a strange package in only having four octaves, so the 76 keys of the deluxe does it it for me in terms of format and that then being a controller (and sound engine of course) on the bottom tier, like my Montage 7 is (excellent controller with a really good sound engine!).
The next thing was how good the synth engine was, as I would say that 90% of what I have seen does not do it justice at all. But over the last month have been finding demos that make me say “I want one of those”!
Hydrasynth sounds fabulous. No problem there. If you don’t like what you’ve heard that says more about the person using it - it can sound however you program and play it to sound.
Whoa! Now that is a cool idea.
Wouldn’t it be great to implement this behavior as a Cantabile filter?
The filter should latch the last note played and convert all incoming Channel AT messages to Poly AT messages for that latched note.
All plugins recognizing Poly AT could be played from a standard controller…unless I am missing something. @brad, would it be possible?
Gabriel
I think that filter idea is a great concept.
Seems to me that the note on would need to be delayed until the Poly AT message was generated and sent to the plug-in, converting all future aftertouch events to that note until the next note was played.
A bit like the way ‘running status’ operates.
If it could be done … wow.
That’s what I am hoping. I live far away from decent music stores, so am quite reliant as to what I can find on the internet in terms of demos, when making buying choices.
I had the same issue when I brought my Prophet X - I found a new one at bargain price, but agonised as to whether to go for it as there were no decent demos that I could find. But I took a punt as the shop had a good returns policy, and was glad I went for it.
I found the same issue with the Hydrasynth, including the ASM demos that you get to find first, but then I found a few including some ASM Demos and from some patch programmers that I look out for, and they tell me a decent story. It’s a bit like organ demos. Why are they usually always cheesy blues, jazz or gospel demos, with very few good rock demos, let alone prog?
Anyway, I will be taking the plunge on the Hydrasynth. Hope to order it on the weekend, so Santa can pick it up ready for crimbo.
I have tested the idea with a simple script in ReaJS. It works! The code works as a MIDI thru except for the selected channel. For that channel, the last played note is remembered and channel pressure messages are converted to poly AT.
I must stress that I had never programmed in ReaJS before…there are probably better ways to do it. I have just had a look at this website
and I have figured it out from other scripts (I also dig out an old book: Advanced MIDI User’s Guide by R.A.Penfold, published in 1991!)
Here is the code:
desc: pseudo-poly-AT
//tags: convert pressure to poly AT
slider2:0<0,15,1{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16}>Input Channel
@init
slider2=1;
noteOn=$x90;
chPress=$xD0;
polyAT=$xA0;
lastNote=0;
@slider
midiCH=slider2
@block
while(
midirecv(off,msgt,msg1,msg23)?
(
(msgt==(noteOn|midiCH))?(
lastNote=msg1;
);
(msgt==(chPress|midiCH)) ? (
midisend(off, polyAT|midiCH,lastNote,msg1); ) : (midisend(off, msgt,msg1,msg23);
);
1;
):0;
);
Edit: Attached a zip file with the ReaJS script. Just uncompress it in the midi effects folder (on my system it is: C:\VstPlugin64\ReaPlugs\JS\Effects\midi, since I place all my 64bit plugins in VstPlugin64).
midipressuretopoly.zip (432 Bytes)
Well done!
I can’t wait to hear how this works with other poly AT synths!
I have tested it with the GX-80 demo and with SurgeXT.
It would be interesting to have a list of all VST plugins which recognize poly AT.
Cheers!
Gabriel
Well Omnisphere, Diva,Cherry Audio’s Sines and Dreamsynth for starters.
Ok, so I have tested it with Sines and pseudo-AT really shines here!
BTW, I own a few Cherry Audio plugins (CA2600, Eight Voice, Miniverse, Elka-X, Sines, Voltage Modular). I have noticed that the last they released (mainly Elka-X and Sines) really stress my system. I easily get well above 100% Time Load, just playing a few four-note chords in sequence.
I have tried switching effects off and reducing polyphony, but the problem is still there (though somewhat reduced). My system is not particularly old:
CPU: Ryzen 5 3400 G (6MB cache, 4.2 GHZ Max boost) actual base speed 3.7 GHz
MotherBoard; Asus PRIME B450M-K II micro ATX
HD: Samsung NVMe M.2 MZ-V7E500 500GB
RAM: G.skill Ripjaws V 32 GB (2x16) DDR4-3000Mhz
I have a Steinberg UR22 mkII interface with the latest ASIO driver and I set Cantabile to 44.1kHz, 512 buffer size, double buffered.
Any hints on how to reduce the load are very much appreciated!
Gabriel
Edit: I forgot to mention that I have already implemented the Glitch Free suggestions and I have run a Decrapifier script to get rid of useless Windows garbage.
Is there a primer on how to get started with JSFX in Cantabile?
The possibilities for me (on a WindSynth) seem appetizing, and I’m trying to reduce the startup curve …
Is ReaJS the only option? I’ve read (other discussion groups) that JSFX itself is significantly more advanced than the “older” ReaJS, and that you can run JSFX under YSFX (https://linuxmusicians.com/viewtopic.php?t=24295), so I’m confused as to which path to attempt …
Any simple description for using this programmable, MIDI-munging technology in Cantabile would really help … THANKS!!
This is absolutely excellent!!!
I see this
“ the same API used by compiled REAPER plug-ins and extensions)”
Can that script be used to produce a VST plugin, along the lines of PIZ MIDI?
I don’t know if one can “compile” the script and so obtain a standalone VST plugin, i.e. with no need of loading ReaJS VST in order to run the script.
As I mentioned, I am new to this business.
What I have done is to load the (free) ReaJS VST plugin in Cantabile. Then I loaded my script into it. Cantabile can even remember the loaded script (each ReaJS script is just a preset from the point of view of Cantabile). So it’s already very close to having a standalone plugin.
Gabriel
Edit: Ok, I recognize that a “standalone plugin” is some kind of oxymoron…
Edit2: I still think that we should check with @brad if this function could be implemented in a filter. I can think also of possible variations when it comes to the latched note: it could be the last played, or the oldest one among the still pressed notes, or the last one played with a velocity above a given threshold…
Not really Cantabile-specific, but here is the general programming guide:
https://www.reaper.fm/sdk/js/js.php
Mainly, JSFX is for programming audio plugins, but it can also be useful for MIDI plugins; here is a specific section on MIDI:
https://www.reaper.fm/sdk/js/midi.php#js_midi
You just need to accept that MIDI plugins process MIDI data in blocks of buffer size, so all MIDI events have a “sample” timestamp (offset) within that buffer. You process MIDI events in the @block section of your code, loop through all MIDI events using while ( midirecv(mpos, msg1, msg2,msg3) ?(…)) and output new events using midisend(mpos, msg1, msg2,msg3), with “mpos” being the position within the buffer.
When you process them, best keep the offset (mpos) intact - or, if your processing affects the time, respect the buffer-chunk processing. You may need to spread your output across multiple buffers, e. g. when creating tempo-based volume ramps, so a bit of clever state management is necessary.
JSFX takes a bit of getting used to - it doesn’t look like C, Java or other “classic” language, but it still is essentially a procedural language.
Currently there is no way that I know to “compile” JSFX scripts to plugins - there are other options if you want to create portable plugins, e.g. Blue Cat’s Plug’n’Script.
Cheers,
Torsten
It’s pretty impressive I did some videos with wind controller with it first came out. Their apps will “phone home” to check for updates, you can turn automatic updates off as a work around. I know that’s an annoyance for some.
There is no doubt that some patches stress systems on the recent Cherry synths and that to get unlimited potential (you might quantify that as using the most demanding possible patch and still retain enough headroom to work on a project or employ other plugins in a host like Cantabile) a recent high powered CPU is recommended. Having said that, I am running very nice GX-80 patches on my aging live machine, a circa 2012 Lenovo T420, at a buffer of 256 samples on a Focusrite Saffire.
You can turn off unused ranks - try alternative effects as you’ve suggested. On the subject of polyphony I’ve requested that Cherry consider providing user defined polyphony instead of forcing 2/4/8/16. You can imagine the jump in demand between 8 and 16. Those release times hang over and the demand becomes huge. The same applies even between 4 and 8 voices.
The fact is, 5 or 6 voices is a very nice limit to set. It allows sophisticated chording and keeps releases in check. If Cherry allow for the same kind of definable polyphony that we see in their other instruments, it will tame, arguably, the hungriest of their creations to date, and allow quite serviceable computers to use, IMO, the most stunning synth they have developed so far.
PIZ MIDI do make a polyphony MIDI plugin. It does help a bit. Set the GX-80 to 8 voice and set the polyphony to 5 or 6.
That doesn’t deal with the release issue but I’ve found it somewhat effective.
I do hope we see a polyphony option like that in their other instruments. That will be a huge CPU saver.
As you’ve used Glitch Free you’re probably in good shape, but it pays to check that all CPU cores are active and nothing is parked.
Yeah, I passed on Sines because of it. Almost didn’t demo GX-80 figuring it would be even worse. Fortunately its completely doable cpu wise and is completely awesome sound wise.