Reply To: New Feature Request

#27731
zdlAdmin
Participant

Roy, this is tremendous! Thank you for your detailed comments, and your theremin patch! You are my Favorite Customer of the Week!

Concerning note-on/note-off lead-or-lag: Yes, the Altura always kills the old note before triggering the new note. There is no specific delay involved. The two messages are usually tossed into the MIDI Transmit Buffer on the same cycle of the microcontroller. The OFF simply arrives first in the queue and is processed by the synth ahead of the ON message. We did it this way after extensive testing in development. Sending the messages in the other order resulted in hanging notes in a lot of situations.
The MIDI spec–especially 1.0, which has been on the books from about 1972 to 2019–is a wide-open, very loose environment for developers. There is no one way to implement portamento. We have seen synths handle it in many ways. (Many synthesis technologies do not lend themselves to this technique at all, and portamento is not implemented.) While some synths behave just as you described — play staccato and you get no glide — many if not most others behave differently. One of our Alesis modules is the opposite: play staccato for glide, legato for no-glide! One thing to bear in mind is Release. We developed the Altura assuming its use with a patch that has a non-zero release time. We assume the sound will linger, if only for a moment, while the next note sounds. This helps smooth out the theremin glide considerably.

I notice our documentation is a little skimpy with MIDI implementation. When you set the Altura to Mode 5 – Portamento and stick your hand over the left sensor to set Portamento Time, as soon as the device gets its first non-zero reading I think it sends a CC65=127 message to switch Portamento ON, followed by a CC7=n message to set portamento time, where n is the value it picked up from your hand position. When you manipulate the controls to send a Portamento Time = 0 (CC7=0), the device also follows this immediately with CC64=0, Portamento OFF.

Now here is something that may be missing from your understanding of the Altura’s functionality. You can indeed manipulate notes and volume in portamento mode. Set Function =5 and use your left hand to set a nice portamento time. Remove left hand and set Function = 4, Channel Volume (CC5). Now Portamento remains active, right hand sends notes, and left hand manipulates vlolume. I like to go one step further: remove left hand, set Function = 2, Modulation (CC2). Add a little vibrato, remove left hand, switch back to Function 4. In this way you can sculpt a very convincing theremin sound.

Finally, here’s how we chose to implement portamento on the Macchiato. Since the Macchiato uses Pulse Width Modulation (PWM) synthesis, we are working directly with the waveform and frequency of the sound. When the Macchiato recieves a Portamento ON message, it stores whatever note is currently playing as the START frequency. When a NOTE ON is received for a different note, regardless of the on/off status of the old note, the new note starts from START frequency, and glides up or down to the new note frequency over the time set by Portamento Time. So you ALWAYS get a glide, whether playing stacatto or legato. If you use a long portamento time and then play a run of notes quickly, the oscillator may wander about without ever reaching a particular note — until you stop moving your hand.

— Glen van Alkemade