Atack-release envelope filter... with CC64! is possible?

I see a huge potential for Bome, and my imagination is triggered to explore the midi field. I´m curious to ask, if there would be any way to create an attack-release filter envelope with a sustain pedal.
The filter, in my mind, would work in the following way. When I press CC64, a midi message with a value of 127 appears. Would there be any way that when this value appear, a Bome translator creates a series of linear events in time with an increasing value... an attack envelope filter. And when I press up the CC64, 0 value appears. In this moment, Bome can create a release envelope filter?  It would be a way to simulate an expression pedal, but with a sustain pedal.
What I'm really looking for is the creation of a modifiable attack (and release) filter envelope... with differents curves. 
Thank you



Yes, this can be done using a repeating timer. I’ve attached an example.

The first translator starts the repeating timer when the sustain pedal is pressed. In rules we set the delay between iterations, the increment value amount for each iteration, and the current output value for the output controller we want.

The second translator kills the timer when the sustain pedal is released and sets the controller output value back to 0

The third translator is where all the work happens on the outgoing message. On each iteration it increments the output value by the increment amount defined in the first translator. It also checks to ensure it never sends a value greater than 127. I also make sure that if the increment value is over 127 that it sends a value of 127 but only once (no matter what increment you have set)


In this example I use CC60 for output but you may need to change this if your envelope controller is different.

Let me know if you have any further questions.


Wow, that’s amazing! What a huge potential

Thank you so much for the detailed instructions. Works like a charm


Another question. To complete the cycle. How could the atack-release cycle be completed with the same pedal, without resetting the values? I´m referring to concatenate attack-release actions. Imagine that I pressed the pedal and reached a value of 100. We have come this far with a linear increase. Well, what I’m saying is that when you raise the sustain pedal, there will be a return with decreasing values. In a fluid way, without resetting the cycle at any point.

This would be an incredible way to create release attack envelopes.

I´m trying to understand the traductors. I have no programming knowledge, but what I have been able to understand I love it! The script you have write is beautiful.

Entirely possible!
Instead of killing the timer on release of the pedal, you would set rules to just reverse the value on each iteration until it reaches 0. When it reaches 0, you would then have another translator to kill the timer.

This version decrements the value when you release the pedal instead of killing the timer.



Absolute amazing!!!
I spent the whole afternoon trying to understand the instructions of the program to make a complete cycle. But I got stuck at some points. I find this very stimulating … learning little by little to give the instructions to the software to do what you have in mind. Thank you very much for sending the translator with the complete cycle. I intuit that this is the tip of the iceberg of the things that can be done with Bome…. I´m amazed. Thanks again

Glad to help. Yes it is an amazing too which is why I bought it several years ago. Not much that I haven’t been able to do with it.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist

Hi Steve,
I made this small modification to the last archive you send. I change the \\\"current atack value\\\" in the first translator (Sustain Pedal Down), so that when you press the pedal again after a release action, event do not return to 0, but start the inflection in the same line.

Be careful, rr is a local variable and as such is local to that incoming event only. Please press F1 or read the manual by going to the help screen to learn the naming conventions and difference between local variables.

In general, global variables are shared and static (don’t change unless you change them), while local variables are dynamic and only exists within a given event so you cannot share them among translators.

The benefit of local variables is as the do not create conflicts with the same variable name under a different incoming event. pp for translator 1 could be completely different that pp for translator 2, but they only exist for the life of the event.

Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist

How complicated… I can not follow you. I will read the manual to learn. I will delete the screenshot to avoid confusion. Thanks again

In a nutshell, use a local variable if you only want to use it within a translator, use a global variable if you want to share it among translators. Local variables are oo pp qq rr ss tt uu vv ww and xx (always both letters the same). All variables are 2 letters. Global variables are everything else starting with g-n , y and z and can have the second letter of any alpha numeric character. I know it may seem difficult at first but you will get use to it. I’m here to answer any questions. In your example you could have used gb (global) instead of rr (local) and then it would be shared among translators.
Steve Caldwell
Bome Q and A Moderator and
Independent Bome Consultant/Specialist


Thank you