CC Waveform Generators

Modified on Sun, 18 Sep, 2022 at 5:54 PM

Overview

For a video demonstration and tutorial on how to use CC Waveform Generators, watch this: https://youtu.be/JnbBQmYIzw8


What is a MIDI CC Waveform?

A MIDI waveform is essentially a continuous flowing stream of CC messages that oscillates between minimum and maximum CC values set by you. 

Think of it as an automated expression pedal. Or if you hired someone to to continuously rock your expression pedal back and forth with your desired sweep and speed.

A MIDI waveform allows you to modulate different effect parameters, creating tonal effects such as vibrato, tremolo, sweeps and phasing. Similar to what an LFO does on a synthesizer.


Waveform Engines

Access the waveform engines via the controller settings tab on the editor. Here you will see 4 independent waveform engines. For each of these engines, you can select a different Waveform Type and define the Minimum and Maximum CC values for each waveform.

The available Waveform Types are:

  • Sawtooth Up

  • Sawtooth Down

  • Triangle

  • Sine

  • Square

  • Random (Added in firmware v3.9)


Starting a Waveform Engine

You can use any switch you want on your Morningstar controller to trigger a waveform engine to start. On your desired switch, you just need to select the CC Waveform Generator message type.



The available parameters for this message type are:

  • Start/Stop: Whether to start or stop a specific engine, or stop all engines

  • Cycle Interval: Duration of 1 cycle in Milliseconds

  • Cycle multiplier: Number of cycles completed in one interval

  • Once/Perpetual: Complete only 1 cycle and keep CC value at final position, or keep running perpetually

  • Engine: Select which Waveform engine to control (4 engines found under the Controller Settings tab)

  • CC Number: The Control Change number determines what parameter you affect

  • MIDI Channel: Choose which MIDI channel you want to send the MIDI Waveform on

  • Invert Waveform added in v3.9: Invert the chosen Waveform.

Once triggered to start, the Waveform engines will start running sending out CC messages automatically.


Examples

Generating a Sine CC Waveform

Firstly, you need to set up your Waveform Generator engine. In this example, I have set up Engine 1 to generate a Sine waveform with a minimum CC Value of 0 and maximum CC Value of 127. That means that the waveform generated will be between the values of 0 and 127 with a Sine wave shape.



Next, I need to program a Preset to start the Waveform Engine.


In the image above, I have set up my Preset to:

  • Start Engine 1

  • Run it perpetually at 60 cycles per Minute.

  • Generate the Waveforms with CC#1 on MIDI Channel 3.

With this setting, my Waveform generator will generate 60 Sine waves every minute when the Preset is engaged.


Generating a Ramp Up Waveform that runs once

Firstly, you need to set up your Waveform Generator engine. In this example, I have set up Engine 1 to generate a Sawtooth Up waveform with a minimum CC Value of 0 and maximum CC Value of 127. That means that the waveform generated will be between the values of 0 and 127.



In the image above, I have set up my Preset to:

  • Start Engine 1

  • Run it only once at 50 cycles per Minute.

  • Generate the Waveform with CC#1 on MIDI Channel 3.

With this setting, my Waveform generator will generate ONE Sawtooth Up wave when the Preset is engaged.


Syncing the Waveform to Tap Tempo

After setting up the Waveform Engine, set up your Preset message similar to below:

Each time you tap on the switch, the MIDI Clock BPM in the controller will be set to the Tempo you are tapping. Additionally, the Waveform Generator will start (or restart) each time the switch is tapped to match the MIDI Clock BPM tempo.


Caveats

Ultra-short intervals (100ms interval with x8 cycles for example) are realistically only useful and accurate for the Square Waveform type.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article