In September I started exploring wavetable synthesis and created a simple wavelet generator. The generator used a single cycle waveform that was used to generate other frequencies. One problem with the approach was that it could only produce a limited number of frequencies. After doing more research into the topic I found that is sometimes common for wavetables to contain a unique waveform for every note. The trade off is that more memory is required for the extra waveforms. On some platforms such as mobile devices this might be of some concern.
With this latest prototype I experimented with also using wavetables as an input source for controlling other properties of the audio. This prototype uses the same waveforms that generate the tones to also modulate the amplitude, creating a tremolo effect. This works quite well. One limitation is that the speed increments are rather static though I think this could be overcome with some amount of interpolation, which I may experiment with further. Interestingly, when the speed of the tremolo is boosted to frequencies that are within the hearing range, harmonic overtones are added to the sound and the tremolo effect becomes something completely different.
The demo below allows two waveforms to be played simultaneously and provides independent controls for volume, pitch and trem depth for each. There is a filter knob next to the main volume. It can be used to smooth out the sounds, though when it is set to the max filtering is bypassed. This can be nice for viewing the pure wave shapes in the visualizer. For the best visuals try setting the note knobs to F ( -28 ) & C ( -9 ) in different octaves.
As mentioned in one of my more recent posts I’m in the process of re-building the MORT sequencer. It is very likely that the MORT will be based on a wavetable approach. The performance is excellent, so far. This prototype runs at a cool 60 fps even with the SoundMixer.computeSpectrum() method being called every frame. Pre-calculating the wavelets does not even seem to be that demanding on the CPU. In this prototype over 3.5 million samples are created in just under 1.2 seconds in the release version of the Flash Player.
Next up, I’ll explore the use of envelopes to generate morphing type effects by cross fading wavetables over time at set intervals.