Sustain pedal for e-wind instrument (script that hold the last breath CC value))

Hi !
I use Gig performer with my electronic wind instrument (Sylphyo). I would like to use a sustain pedal to hold my notes while I’m breathing to avoid the sound to cut for a long outro part.
With my favourite plugin Respiro (which is especially designed for e-wind instrument) it’s quite easy: I map the sustain pedal on the note release time at about 4 seconds, and, naturally, when I stop blowing, the sound continues to “live” in a start of a fade out.
I try to have the same behaviour with a mini-Moog plugin (Mini-V from Arturia). My breath is mapped on the main volume. With a CC64, it sounds not natural: the organic and continuous breath CC value seems to freeze. It’s sounds nearly like a bug. So I would like to act on the release time like on the Respiro plugin.

To understand, you need to know how my instrument works:
When I start to blow, CC2 (breath) and Note ON are sent. When I stop, CC2 goes to 0 and at this moment, note OFF is sent.

I would like to have a MIDI scriptlet that I can insert before the mini moog plugin who could, when I press a pedal, remember the actual CC2 value, and freeze it in order to keep some volume on the mini moog. The note off message which would follow (because I stop blowing and start breathing) would trigger the long release (also modified by the same pedal).
Actually, when I try something, I can’t hear the long release of the mini Moog because if I stop a note, it makes the mini-Moog volume returning to 0 (along the CC2 value). If I manually increase the volume juste after, I can indeed, hear the long release.
Sorry for the long explanation. These e-wind instruments have their own logics…

I made a video to further illustrate my issue:

Is anybody having a solution for me??
Thanks in advance for any help, or any clue !


Not sure I understand your issue very well, but you could perhaps use the sustain Scriptlet given here:

Ok, thanks for your help. I tried it but with e-wind instrument, it doesn’t behave like on a keyboard.
I made a video to further illustrate my issue:

So you only want to keep the CC#2 value constant when you press the pedal, but let the notes off go to the plugin, and once you release the pedal the CC#2 value also goes directly to zero. Right?

Wouldn’t that mean you just need to block CC2 messages while sustain pedal is down and then just send a single CC2 message when the pedal is released?

Hi, thanks to both of you for the help.

Exact ! You must know that after freezing the CC2 value, the new CC2 message will automatically comes from my wind controller: once I’ve taken a breath, I’ll blow again and thousand of CC2 values will fly.

I already tried to insert a MIDI hub with blocked CC2 messages. The sustain pedal was mapped (and reverse) on the bypass but as far as I know, this solution didn’t work.
I’ll try again and keep you informed. (because yes, it seems consistent and it’s one of the first thing I tried.)

Ok, I realized that the CC2 blocking doesn’t work in my case.
In the midi monitor, it’s blocked but the mapping still works and the volume knob still move.
See this video:

My wiring:


The breath widget MIDI properties:


What did I do wrong? :upside_down_face: :worried:

You assigned the CC#2 message to the General Level parameter of the Mini-Moog plugin, this will stay like this whatever you filter out in the wiring view. If you wouldn’t have enabled the “thru” option in the MIDI/Widget properties, this assignment would even use exclusively the CC#2 Midi message. As diplayed by the MIDI monitor, the CC#2 is perfectly filtered out, but the host automation remains and you GeneralLevel parameter is therefore still controlled by the CC#2 message. I also don’t understand why you MIDI synced your CC#2 controller: do you want to get a fresh breath on your face when you act on the corresponding widget? :stuck_out_tongue_winking_eye:

I now understand that you use the CC#2 message to control the volume of your plugin. So rather than doing this, I think I could rather use a GP gain control plugin in order to be independent of the instrument plugin you use. Woud this work for you, or do you assign the CC#2 parameter to any other plugin parameter depending on the plugin you use?

If yes you can check the following Scriptlet-based solution:
CC2_Breath_Controller.gig (64.2 KB)


Ok, now I have deeply tested and your solution @David-san is convincing.
To prevent to have a low reaction from the synth, I also mapped the sustain pedal to the decay On/Off and like that it works perfectly ! Thanks again ! :smiley: :slightly_smiling_face: :wink:
All the best


Thanks for the feedback, happy it works for you :wink:

1 Like

Hi there,
I’m here to give a little detail for this method you advised me:
It works fine but I could not understand why the synth seems so sluggish and then I got it: the native gain control has a bit of latency. The breath controller, when I use tonguing technique send in no time, a lot of messages from CC0 to CC127 and the gain can’t follow properly although the fader seems to follow (graphically).
So, I tested with a utility plugin from melda production and the difference is quite big with the volume knob !
Then problem solved but it could be useful to report that to the developers.
Bye bye !

What utility plugin? What does it do?

Also, what sample rate and buffer size are you running?

Do you also feel this latency if you control the CC7 message of the MIDI in block connected to you plugin?

Same question if you control a volume or expression parameter of your plugin ?