SynthLab SDK
|
The SynthLab-PCM example demonstrates a sample-based synth that loads its PCM samples from WAV files at startup time. This incurs a hit of time while the files are opened and parsed, but makes all samples instantly available. Other schemes including a multi-threaded application to the PCM sample-loading problem are discussed in the synth book. For simplicity in teaching and coding, this scheme is chosen over a file-access based plan. See the option below for instructions on limiting the number of PCM samples loaded if you have memory issues or want to speed up the loading process. The PCM synth requires a set of folders full of PCM samples encapsulated in WAV files. See PCM Sample Files & Database for information on the location of these files.
The modulation matrix is formatted as a "pin programmable" control, reminiscent of the EMS VCS3. Note that the ModulationMatrix C++ object is designed for a variety of different interfaces with intensity controls and internal switches that will work with practially any mod matrix scheme. For all SynthLab examples, the filterEG -> filter fc routings are pre-enabled and the source and destination intensities are set to 0.75 so that you will hear the effects in the first patch. This panel also includes the ping-pong delay controls.
Figure 1. SynthLab-PCM Interface
All of the included PCM cores access folders full of wave files, one folder per waveform (or patch). You select a core and then a PCM sample from that core. Figure 2 shows the selection of the Mellotron core, followed by a selection of the Mellotron wavform. Additional cores and waveforms are listed in Table 1.
Figure 2: the PCM waveform selection is simple and effective
PCM Oscillator Core | Samples |
---|---|
LegacyPCMCore | 16 legacy multisamples from the 1st edition of the synth book |
MellotronCore | full length recordings of the tape loops in the Mellotron (8-11 seconds) |
WaveSliceCore | a WAV file is sliced into components on transient edges and mapped to the C-major scale starting at Middle-C |
NOTE: the Mellotron samples sound an octave lower than the note letter (embedded in the filename) suggests and this may be due to the fact that there is still two different numbering conventions that go back to the origins of MIDI. The C++ WaveFolder object includes a function that finds note letters (and sharps/flats) in the WAV file string. The findNoteNumerInName( ) function has an argument that will shift the note numbers up an octave. You may want to mofify that function to shift up by two octaves if the Mellotron samples still sound too low.
BONUS Samples There is a bonus folder named "drumloops" of pitchless drum loops that you may use for experimentation and development of your own drum loop PCM sample core (for book homework). All of these are designed to loop from start to end and back around again. If using them, be sure to set their looping types when you register them with the PCM database.
Figure 3 shows the modulatiom matrix panel, which is fundamentally identical across all SynthLab synths (there are minor differences for the DX and WS varieties). The destinations are columns and sources are rows. Each source and destination features a single intensity control (see the synth book for alternate modulation matrix schemes). Routings are enabled by pressing the buttons that connect rows and columns. For the PCM synth, the unique modulation is pan-mod. In Figure 3, you can see that LFO2 has been chosen as a modulation source for the "unique modulation" destination and source/destination intensities have been adjusted for operation.
Figure 3: SynthLab-PCM modulation matrix panel with LFO2 selected for the oscillator unique modulation