Abstract
Virtual analog synthesis requires bandlimited source signal algorithms. An efficient methodology for the task expresses the traditionally used source waveforms or their time-derivatives as a sequence of bandlimited impulses or step functions. Approximations of the ideal bandlimited functions used in these quasi-bandlimited oscillator algorithms are typically linear-phase functions. In this paper, a general nonlinear-phase approach to the task is proposed. The discussed technique transforms an analog prototype filter to a digital filter using a modified impulse invariance transformation method that enables the impulse response to be sampled with arbitrary sub-sample shifts. The resulting digital filter is a set of parallel first- and/or second-order filters that are excited with short burst-like signals that depend on the offset of the waveform discontinuities. The discussed approach is exemplified with a number of design cases, illustrating different trade-offs between good alias reduction and low computational cost.
Code examples
Implementations of the examples presented in the paper are given below. For further instructions on the use of each implementation, please refer to the files found in the respective archives.
If you have an alternative implementation, please contact the authors via email. The email addresses can be found from the paper.
Matlab / Octave
Tested on Matlab 2010b. The code may require some changes to work on Octave.
- ZIP archive (606 KiB)
- TAR.GZ archive (605 KiB)
LV2
- ZIP archive (317 KiB)
- TAR.GZ archive (306 KiB)
Sound examples
In all following sound examples the sampling frequency is 44.1 kHz. The different time-varying examples are referred as high-quality (seventh-order elliptic), middle-quality (fifth-order elliptic), and low-quality (third-order butterworth) implementations as presented in the paper. The polynomial approximations of the excitation signals are used.
Single tones
All files are 86 KiB big.
| Fundamental frequency (Hz) | |||
|---|---|---|---|
| Method | 440 | 1174 | 3135 |
| Time-invariant | wav | wav | wav |
| Low quality | wav | wav | wav |
| Middle quality | wav | wav | wav |
| High quality | wav | wav | wav |
| Fundamental frequency (Hz) | |||
|---|---|---|---|
| Method | 440 | 1174 | 3135 |
| Trivial | wav | wav | wav |
| Time-invariant | wav | wav | wav |
| Low quality | wav | wav | wav |
| Middle quality | wav | wav | wav |
| High quality | wav | wav | wav |
Song excerpt
Theme song from the TV series MacGyver.
- MP3 (688 KiB)
The excerpt contains five tracks, three of which use rectangular pulse wave (two having pulse width 50% and one having pulse width 33%) while the remaining two use impulse trains. The middle-quality implementation with the polynomial approximation of the excitation signals is used.