If you have a problem or need to report a bug please email : support@dsprobotics.com
There are 3 sections to this support area:
DOWNLOADS: access to product manuals, support files and drivers
HELP & INFORMATION: tutorials and example files for learning or finding pre-made modules for your projects
USER FORUMS: meet with other users and exchange ideas, you can also get help and assistance here
NEW REGISTRATIONS - please contact us if you wish to register on the forum
Users are reminded of the forum rules they sign up to which prohibits any activity that violates any laws including posting material covered by copyright
MIDI keyboard-state register
3 posts
• Page 1 of 1
MIDI keyboard-state register
When we change a preset on a synth we're all used to nothing much happening until we send some new MIDI notes. However on an organ, if you're already holding some keys down, it's essential that the new sounds commence as soon as you pull the stop / drawbar / press the tab; conversely all the notes stop when you do the opposite.
My HB3 organ project ('Additive Organ Pipes') is intended to produce a single organ stop, so I need to add a means of turning the stop on and off. To enable all held notes to play as soon as the stop is turned ON I guess I need a register that tracks which keys are currently held down. When the stop is turned ON said notes need to play in exactly the same way as they do when they're pressed if the stop is already on, and when the stop is turned OFF they should cease in the same way as they do when the keys are released.
Not sure how I should do that - can someone advise? No doubt I need a keyboard register/buffer to keep track of the keyboard state and I'm wondering if Ruby is the place to go to set this up.
Err, which is definitely my weakest area .. although I'm ready & willing if this is what I should be getting into next!! (But a starter hint from a maestro would be worth its weight in gold .. )
ALSO ... I need to be able to select which MIDI channel a stop responds to, so that if an organ has several keyboards (as they do ..) individual stops can be assigned to a particular keyboard on a particular MIDI channel.
Grateful for any advice on this one!
My HB3 organ project ('Additive Organ Pipes') is intended to produce a single organ stop, so I need to add a means of turning the stop on and off. To enable all held notes to play as soon as the stop is turned ON I guess I need a register that tracks which keys are currently held down. When the stop is turned ON said notes need to play in exactly the same way as they do when they're pressed if the stop is already on, and when the stop is turned OFF they should cease in the same way as they do when the keys are released.
Not sure how I should do that - can someone advise? No doubt I need a keyboard register/buffer to keep track of the keyboard state and I'm wondering if Ruby is the place to go to set this up.
Err, which is definitely my weakest area .. although I'm ready & willing if this is what I should be getting into next!! (But a starter hint from a maestro would be worth its weight in gold .. )
ALSO ... I need to be able to select which MIDI channel a stop responds to, so that if an organ has several keyboards (as they do ..) individual stops can be assigned to a particular keyboard on a particular MIDI channel.
Grateful for any advice on this one!
-
HughBanton - Posts: 265
- Joined: Sat Apr 12, 2008 3:10 pm
- Location: Evesham, Worcestershire
Re: MIDI keyboard-state register
When you change a preset the notes are still sounding and held unless you are using a Clear Audio prim for preset changes. This is my normal practice but you don’t have to do it. I just like everything to clear when I change a preset, especially if delays are involved.
However, you’ll always get a clicky transition as you change presets because the stream is interrupted briefly while the parameters are changed.
The best way to mute or open a sound, without that annoying clicking, is to use a VCA (stream multiply prim) and control it with a de-zipped switch set to 100mS de-zip time. This gives a nice soft on/off effect and your notes will hold because the channel will remain open.
Regarding MIDI channel assigning, I would prefer to do this in the DAW, then the user can choose what’s appropriate for their controller keyboard.
Cheers
Spogg
However, you’ll always get a clicky transition as you change presets because the stream is interrupted briefly while the parameters are changed.
The best way to mute or open a sound, without that annoying clicking, is to use a VCA (stream multiply prim) and control it with a de-zipped switch set to 100mS de-zip time. This gives a nice soft on/off effect and your notes will hold because the channel will remain open.
Regarding MIDI channel assigning, I would prefer to do this in the DAW, then the user can choose what’s appropriate for their controller keyboard.
Cheers
Spogg
-
Spogg - Posts: 3358
- Joined: Thu Nov 20, 2014 4:24 pm
- Location: Birmingham, England
Re: MIDI keyboard-state register
I've figured out the solution I was after. I had to tackle some Ruby at last, so there we are - I've learnt something in the last couple of days.
As far as I can tell the MIDI_Control module in here does exactly as I described -
1) if you're holding notes when you turn the voice off it sends the appropriate MIDI Note_Offs (plus MIDI_all-notes-off for good measure) and
2) if you are already holding notes when you turn the voice on it sends MIDI_Ons for those notes with the correct velocity.
In normal operation it just copies MIDI_In to MIDI_Out so hopefully negligable latency.
And I've put in a MIDI channel selector (filter) as well, although not normally needed if controlling as a vst from a host, as Spogg pointed out. However I've got a Roland keyboard that I regularly use that always sends MIDI out on FOUR channels simultaneously and you can't stop it, most annoying for testing FS projects!
Somebody please tell me if my Ruby code is 'orrible! Novice y'know .....
As far as I can tell the MIDI_Control module in here does exactly as I described -
1) if you're holding notes when you turn the voice off it sends the appropriate MIDI Note_Offs (plus MIDI_all-notes-off for good measure) and
2) if you are already holding notes when you turn the voice on it sends MIDI_Ons for those notes with the correct velocity.
In normal operation it just copies MIDI_In to MIDI_Out so hopefully negligable latency.
And I've put in a MIDI channel selector (filter) as well, although not normally needed if controlling as a vst from a host, as Spogg pointed out. However I've got a Roland keyboard that I regularly use that always sends MIDI out on FOUR channels simultaneously and you can't stop it, most annoying for testing FS projects!
Somebody please tell me if my Ruby code is 'orrible! Novice y'know .....
- Attachments
-
- midi_control_ruby.fsm
- (180.95 KiB) Downloaded 924 times
-
HughBanton - Posts: 265
- Joined: Sat Apr 12, 2008 3:10 pm
- Location: Evesham, Worcestershire
3 posts
• Page 1 of 1
Who is online
Users browsing this forum: Google [Bot] and 72 guests