My head is still buzzing about all this, very interesting sounds! I spent a couple hours tonight together with the CZ101 manual and continued to take the instrument from earlier further on, implementing a lot of the CZ101 features. I've got most of the signal routing established, now have left to work on the filter key follow that adjusts amount of phaseshaping to do depending on frequency, but am getting close. It's not going to be a CZ101 clone as there's some things I'm not interested to mimic like the 8 stage envelope, but a lot of the sound quality is there and very similar features which should make this very useful. If anything, I'm enjoying the sounds very much! I'll send a message out to the main mailing list and blue list with copies of the instrument when complete. (I've attached the latest version if anyone is interested to render and hear how it's coming along. =) ) I was wondering though that from the experience of doing this now without *that* much Csound code, I am wondering what advantages are there to having it as a C opcode library versus a UDO? steven On Dec 5, 2007 5:22 PM, Anthony Kozar wrote: > Steven Yi wrote on 12/5/07 6:28 PM: > > > Hmm... what I'm finding is that the PD is sort of like waveshaping but > > for the phasor and not the audio signal (phase shaping is what I'm > > calling it in this instrument I have here). Thus, what Anthony is > > going for is actually different from the CZ101 if I understand the > > instrument correctly. > > PD is exactly waveshaping for the phasor in my understanding too which is > why I am lumping these opcodes with the waveshaping ones. (BTW, I like > "phaseshaping" :) What might be confusing the issue right now is that my > initial implementations of the PD opcodes expect bipolar signals. I plan to > change that before they become public to be unipolar with an option for > bipolar behavior. > > The pdhalf opcode is supposed to exactly mimic the CZ-series PD "pattern" > that changes a sine wave into a sawtooth approximation. The other two > opcodes, pdclip and pdhalfy, represent my own variations on the technique. > > > andx phasor kpchline > > andx table3 andx, giphaseshape_, 1 > > aout table3 andx, gi_sine, 1 > > This is how I currently use pdhalf -- it basically takes the place of your > first phaseshaping table lookup and has a k-rate parameter to control the > shape of the transfer function: > > aosc phasor ifreq > apd pdhalf 2*aosc - 1.0, kamount ; convert aosc to bipolar > aout tablei 0.5*(apd+1.0), 1, 1 ; convert apd back to unipolar > > Once they are unipolar by default, you will be able to just do this: > > aosc phasor ifreq > apd pdhalf aosc, kamount > aout tablei apd, 1, 1 > > > The phase-shape table then has boundaries of 0-1, to correspond with > > the phase. This would be different than what I think Anthony is > > building which I believe is more akin to waveshaping than phase > > distortion. > > > > Can anyone confirm this? > > My intention is to create opcodes that only do the phase manipulation part > of the technique (which makes them simple transfer functions). So, you > still have to use a phasor and a table opcode. The advantage of this is > obvious: you can use the opcodes to modify other types of signals or as > inputs to other processes. In particular, because of the similarity to > waveshaping, I think these opcodes could be used to shape audio signals > instead of phasors. That is why I want the bipolar operation too. > > (btw, I am open to other names for these opcodes). > > Steven Yi wrote on 12/5/07 3:15 PM: > > > I did find this wikipedia article just now: > > > > http://en.wikipedia.org/wiki/Phase_distortion_synthesis > > Thanks so much, Steven, for all of those good reference links. The > Wikipedia article in particular mentioned some details that I had forgotten > (or never before understood). In particular, I had forgotten that there > must be different "phase distortion patterns" to obtain some of the other > waveforms that the CZ offered. Currently, my opcode pdhalf only implements > the first of the CZ's patterns and the other opcodes do not duplicate any of > the others. It looks like I may have to write some more opcodes! (or > provide options to choose between the patterns :) > > The difficulty is that I have only seen patterns for the first two > waveforms: sawtooth and square. I may have to try and infer the others from > the waveform shapes. > > The other thing I never really understood was the resonance waveforms. > According to Wikipedia, these are actually created using an oscillator sync > technique. So there were several things going on in the CZ's: PD, Osc Sync, > and waveform sequencing. Some of the web sites you mentioned lump all of > these under "phase distortion" but it seems clear to me that it is a > blending of three very different synthesis techniques. (Incidently, I have > written some naive hard sync opcodes and I have been thinking of writing a > waveform sequencing opcode too). > > Victor.Lazzarini@nuim.ie wrote on 12/5/07 2:54 PM: > > > Do you know if there is any references on PD in the > > literature. Apart from the simple descriptions on Casio > > manuals, I never saw anything else. > > > yes, the PD technique as I understand it does not seem > > to be bandlimited. But I wonder if there are any tricks > > that are not documented anywhere. > > No, I am not aware of any other references (the ones Steven found were new > to me). My information came from a CZ-3000 manual many years ago. When I > created the pdhalf opcode, I was working from memory and from some notes I > made from that manual. > > > Also do you know how to produce the resonant version > > of PD? That was an interesting sound. > > I did not remember this before -- I may need more information about how it > worked before I can really duplicate this effect. > > > Interesting to see the classic topic of waveshaping being > > discussed, as well. In these days of fast computers, people > > seemed to forget about these great ways of economically > > synthesising complex spectra. > > I have always been attracted to the direct synthesis methods. My father's > first synthesizer -- the first that I ever had the oppotunity to experiment > with -- was a Casio CZ-3000. He later got a Korg 01/W that had about 60 > choices for waveshaping tables (many of them not Chebyshev-based) that could > be applied to samples, not just sine waves. > > The biggest frustration for me with these machines was that their manuals > did not fully explain all of the synthesis options that they provided! I do > not remember the CZ manual explaining beyond the simple sine-to-saw example > and the Korg manual only provided graphs for about 3 out of the 60 tables. > So, you had to guess at what they would do based on fanciful names like > "Zipper" and "Rezzy 3". (These are illustrative and may not have been > actual names). > > Anthony Kozar > anthonykozar AT sbcglobal DOT net > http://anthonykozar.net/ > > > ------------------------------------------------------------------------- > > SF.Net email is sponsored by: The Future of Linux Business White Paper > from Novell. From the desktop to the data center, Linux is going > mainstream. Let it simplify your IT future. > http://altfarm.mediaplex.com/ad/ck/8857-50307-18918-4 > _______________________________________________ > Csound-devel mailing list > Csound-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/csound-devel >