Accurately Simulating Legato and Staccato notes on a Wind Controller

    Mar 20 2010 | 11:38 pm
    I'm writing a synth module for a Yamaha WX7 wind controller. The synth should play legato or staccato notes depending on how quickly the performer breathes.
    The only method I can conceive to do this is to extract the rate of change for the breath data. Starting from when I a MIDI note-on is received, I store the incoming breath data in a tiny buffer. When it's full, a bang is sent to calculate the first derivative (rate of change).
    I'm using legato clarinet samples, I begin playback my playback a few milliseconds into the sample. Therefore, I can map the breath rate derivative (integer) to the amplitude ramp time to play the sample.
    I (think I) am an intermediate MAX/MSP programmer, but I'm at a loss as how to do this. My intuition tells me that a prebuilt object is necessary, in order to be fast enough. I looked through the forums and MAX object database, but can't find anything.
    Help? :)
    Thank you for your consideration,
    Bill -- Centre for Music Technology University of Glasgow

    • Mar 21 2010 | 7:34 am
      I dunno if this will help at all, but as a clarinet and saxophone player I have an opinion.
      If the sound stops, then the beginning of the next sound should be tongued. Not tonguing the start of the next note might be considered an effect.
      Rapid tonguing stops the reed and interrupts the sound. But you might find that airflow in rapid tonguing stays pretty constant.Maybe you can get the reed movement? That might be an indicator of tonguing which would feel more natural for the performer.
      Apart from all this, derivatives an usually be pretty well approximated by simple difference.
    • Mar 21 2010 | 2:14 pm
      A Dutch guy has implemented legato/staccato control, in an accessible DMI:
      I'm unaware of his precise implementation though.