login

online now

We have 1024 guests and no members online

search

 

synthmode_diag


Synth mode is the most comprehensive and flexible control mode in the system. In synth mode you have control over all of the sound generation capabilities including oscillators, frequency modulation, amplitude modulation, pulse width modulation, envelope control, frequency and amplitude sweeping, mixing, and more. In the interface you can select patch configurations that route outputs from select oscillators to other oscillators and mixers according to a set of predefined configurations. In most cases the six oscillators are configured such that a base oscillator is modulated through other oscillators in each mixing bank, although there a few patches that allow cross-bank modulation for special modulations such as pulse width and waveform synchronization. In addition to setting up the synthesizer, you can also modify parameters in realtime to allow for dynamic and complex interactions of the sound with your project.

The following code example demonstrates how the interface can be used to set up a patch that utilizes two oscillators in a bank to perform frequency modulation:

 

s = GS.getSynth();                                 // get the synth mode interface
s->begin ();                                        // enter synth mode

s->selectBank   ( BANK_A );                            // select bank A for target functions

 
s->setPatch     ( OSC_1_TO_MIXER | OSC_3_FRQMOD_OSC_1 ); // patch osc 1 to mixer, and set osc 3 to FM osc 1
 
s->setWaveform  ( OSC_1 , SINE );                        // set the tone oscillator (1) as a sine wave
s->setFrequency ( OSC_1 , 20.0f );                       // set the tone oscillator (1) to 20 Hz

s->setAmplitude ( OSC_1 , 0.5f );                        // set the tone oscillator (1) volume to 50%
 
s->setWaveform  ( OSC_3 , SINE );                        // set the FM oscillator (3) as a sine wave
s->setWavemode  ( OSC_3 , POSITIVE );                    // set the FM oscillator (3) bias to zero
s->setFrequency ( OSC_3 , 1.0f );                     // set the FM oscillator (3) period to 1 second
s->setAmplitude ( OSC_3 , 1.0f );                        // set the FM oscillator (3) to full mod range