New Feature Request

  • This topic has 4 replies, 2 voices, and was last updated 2 years ago by Roy.
Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • #27719 Reply
    Roy
    Participant

    A period of professional mucking about with the Altura has raised some points.

    I use Reaper as my DAW which gives me tremendous scope for using MIDI data streams.

    In my attempts to get the traditional Theremin sound I connected the Altura in XY Mode_Function 6 to an oscillator plug-in and connected the left hand to the volume and the right hand to frequency. Unfortunately, the frequency is changed with fine and coarse controls. The fine control does not give sufficient range and the coarse control changes in integral steps (not tones or semitones, but similar in sound). I’m hoping that the plugin is one of Reaper’s user-editable range and I might be able to make a Theremin-ready version… later.

    The ‘analogue’, mono synth plugins all seem to work in the same way with the volume controller CC7 (Altura Function 4) controlling the volume rather than the note-on Velocity (Function 3 – which, I assume, has more effect with with ASDR synths including General Midi instruments}. Function 4 works well with my mono-synth plugin.

    I thought I would try the Portamento Function, Function 5, but this had no effect. A check in Reaper showed that the Portamento control CC65 did change the portamento glide speed, which was not a great surprise! However, the Reaper plug-in produces no glide between the notes from the Altura regardless of the CC65 setting.

    The reason is, I think, simple. As the right hand moves to a position that requires a note-change, the Altura sends a note-off for the first note and only then sends a note-on for the next note. This never triggers portamento in the synth.

    Yes, yes, I’m getting there!

    I think many mono synths only provide the portamento glide when the first key press is still down when the second key press is made. Then the note glides from one to the other. If the first key is released before the second key is pressed then there is no portamento glide between the notes. My synth plugin works this way.

    I found some GM Instruments in an external, hardware MIDI module that did provide a portamento effect using CC65, but the Altura left hand control just changed the speed of the glide between notes, which I did not find particularly useful.

    From your description of the interaction of the Altura with the Macchiato, you have programmed the latter to switch to portamento with the portamento controller CC65 sending a value of 127. The synth must delay responding to the note-off in order to give time for a subsequent note-on to be received, thus preparing to glide between the two adjacent notes. In the manual you say that the left-hand controller subsequently sends Volume Controller CC7 signals which are interpreted by the Macchiato as Portamento Controller CC65 messages. This does not explain how my GM module responds with portamento glide changes on some instruments, though. I suspect that the Macchiato actually turns the effect on with CC65 – 127 and off with CC65 = 0

    Finally, the Request.

    I would like to see the Altura send note-off a short period *after* the subsequent note-on thus triggering the portamento glide whenever the portamento controller is at a value other than 0.

    If the right-hand is moved out-of-range of the transducers (e.g. pulled towards the player) a subsequent note would be inhibited and the note-off issued immediately as it is, now. If you pull your hand away, then note-off is sent to the synth with no subsequent note-on until the right hand is back in ‘view’ of the transducers.

    As far as I can see, this would not affect any mono or poly synths. My reason for thinking this is that when I program overlapping MIDI notes in my DAW, it generates the note-off after the note-on with any attached synth. With a poly synth there is a very brief and inaudible period of two notes overlapping and with a mono synth, the oscillator just switches to the new note, anyway, but with portamento if that is implemented and CC65 > 0.

    My only concern is the effect on the Macchiato. As I mentioned, I don’t think the Altura switches to Volume Controller CC7 after sending CC65 = 127. Perhaps the setting of portamento should be left to the synth settings and the change in note-on/off behaviour left to do the job. This would allow Function 4 to provide the true Theremin function of volume on the left and portamento notes on the right. Function 6 would then just be used to set the portamento level as an alternative to changing the synth controls and for compatibility with the Macchiato.

    In addition to providing a neat Theremin mode with a wide range of synths having the portamento feature, this change would also provide two arpegiator modes, the standard note sequences and a cool portamento wibble (think, the 1950’s SciFi audio wobbulator sound).

    #27730 Reply
    Roy
    Participant

    As threatened in this thread, I have programmed an Altura Theremin effect for Reaper users. It is in the Jesusonic (JS) effects series and can be downloaded at:

    https://stash.reaper.fm/v/41257/altura_xy

    Near and Far Octaves are set differently in the effect. The near octave is set using a ‘Near Octave’ control, but the far octave is set using a near-octave multiplier.

    The key is set using the effect’s Key selection. It provides the same range as the Altura Key control.

    The set-up instructions to connect the Altura to the effect CC controllers is shown in the file, itself.

    To install the effect, go to the ‘Options/Show REAPER resource path in explorer/finder’ menu. (It works just as well in the Linux version of Reaper.) Then open the Effects folder and save the file there. The effect will be available when you next choose ‘Add’ in the Effects panel.

    It’s not perfect, but then, I’m not perfect! I think it is the best that can be achieved with the Jesusonic language and platform. I think the new feature request will provide the best solution.

    #27731 Reply
    zdlAdmin
    Keymaster

    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

    #27747 Reply
    Roy
    Participant

    Hi Glen,

    Thanks. You really must add that functionality advice to the manual. It’s very useful.

    Now it’s time for more, extended, professional mucking-about.

    -royleith

    #27787 Reply
    Roy
    Participant

    Hi Glen,

    The only thing the manual actually needs for those who RTFM is to tell folk to WTFV. The video tutorial covers the points in your letter and many other essential features, as well. I must stop using the Altura in a sitting position!

    I have solved the portamento issue for Reaper users. Simply put the ‘JS MIDI Note Hold’ effect before the ‘VSTi Reasynth’ plugin and the two work exactly in the way you describe the functioning of the Macchiato.

    All notes, staccato or legato, produce the portamento effect. This means that one’s cover of ‘Nutbush City Limits’ requires the volume hand to cut the notes off. I suspect that this is how the original track did it, unless the notes were stopped using fader automation.

    Just in passing, I mucked about with release times to see if that could be a solution, but the release is unaffected by portamento for all the software synths I could lay my hands on in Linux. That twist is particular to the Macchiato.

    Many of the Native Instruments plugins will have portamento effects, but that investigation will have to wait until I feel driven to fire up one of my Windows machines.

    royleith

Viewing 5 posts - 1 through 5 (of 5 total)
Reply To: New Feature Request
Your information: