[sDIY]wavtbl synthesis combined with PD

Martin Czech martin.czech at intermetall.de
Wed Jun 9 16:33:52 CEST 1999


> No! You know the casio CZ series don't you (CZ 101, CZ1000/3000/5000)?
> Phase Distortion (PD) is basically phase modulation, FM with the
> modulator not being a continues waveform but a fuction. MC, Am I right?
> 
> Basically  a sine wave looks like this: you input an phase angle t (time
> t=t+dt, td is the sampling rate) and a sinus function y(t)=sin(2pift)
> will give you a sample height y(t) in bits. Here, the phase increment is
> linear; dt is always the same amount. 
> 
> But if you modulate dt back and fort with a continues (sinus) fuction
> you get FM, PD is similar, y(t)=sin(F(z)[2pift]) where F(z) is a
> transfer-fuction. MC, I have got this info form several sources, I hope
> my math writing is correct, if not correct me please.
> 
> MC I don't know which transfer fuctions can be used in order to limit
> the output bandwidth, can you help us out? And which simbol do you use
> for phi/pi?

? It is not so easy to write formulas with ascii. Sometimes I use gnuplot
syntax, sometimes C syntax, they are pretty much the same. Sorry 
for any inconveniance!

> 
> Anyway, I'd love to make a VS clone combined with PD and maybe
> waveshaping. All in the digital realm of course.
> 

I just toyed arround with wave-table read out, because I finally found
out how to write a valid .wav-file (RIFF). It is only one of the numerous
flavours, but it is recognized. Most desciptions of the RIFF format on
the web are more confusing then helpfull.

So I tryed to change the wavetable pointer speed. This causes (of course)
trouble, alias and noise.  I then programmed a very simple interpolation
filter. If the pointer is in between two samples I take the weighted sum
of both samples, according to the distance pointer-sample.  This simple
procedure helped quite a lot. But to having a real good interpolator is
NOT a trivial task. There are many papers on that topic on the WWW.

>From this point of view the generation of a , say square wave is
ridicolous complicated in the digital domain, compared to our simple
analog circuits.  So be warned, clean table interpolation is no simple task!

The theory is in "Multirate Digital Systems" by Rabiner & Schafer.

The other topic:

FM, PM and PD are basically the same thing:
You influence somehow the speed/position of the circulating read out pointer.
PM (Phase Mod):

has direct influence on the pointer position, simple add some function f(t) to
the usuall rotation, ie. it can also jump. This may give some brightness.

FM (Frequency Mod): 
We can only influence phase, but phase is the integral of frequency.
Use the same procedure as phase modulation, but f(t) has first to be
integrated over time and then added to the phase term. A constant f(t)=c
will thus result in an additive c*t term, this speeds up our pointer.
Integration has a smothening effect. Fast f(t) movements will be
attenuated (integration is almost like lowpass filtering).  You can not
make the phase jump. As a result you get a softer sound.

PD (Phase Distortion)
The phase pointer is speed up and slowed down in some portions of the table.
I think Casio used piece wise linear finctions for that. 
Since frequency is differentiated phase we have to make shure that our resulting 
phase argument remains c*t if differentiated, otherwise we get a frequency shift.
You speed up the phase pointer and slow it down again such that the overall speed
is not touched.

This is just a special case of PM.

Anyway, the least amount of sidebands will be obtained with sinoidal
modulators.

m.c.




More information about the Synth-diy mailing list