Hi Anthony, (I'm CC'ing the main csound list as this discussion seemed relevant to the main list.) I came up with the weighted average between linear and phasehape table values just from trying to figure out from the CZ-101 description how a wave envelope could move from sine-like to the chosen waveform. considering a straight phasor with a sine table would get the sine wave, I figured maybe doing some kind of interploation between the straight phasor and the phaseshape table values might yield the desired result. I haven't really gone about calculating what does happen and if doing just the interpolation yields results inbetween the full phaseshaped phasor and the straight phasor, but to my ears it does do so. Ultimately, it sounded pretty good to my ear so I left it at that. =) As for the phaseshaping/waveshaping differences, I think there is more to it. First thing is that there are sort of different rules to shaping a phase versus shaping an audio signal. With the audio signals, we can use things like Chebyshev polynomials to predict the alteration in sound. Chebyshev polynomials however won't help us at all to predict the change of the signal if applied to the phasor. In the PhaseShaper instrument, since we're working with the phasor and since using the interpolation between the straight phasor and the fully phaseshaped phasor, we can have some good control over the sound to know that using full straight phasor will yield a sine wave and the full phaseshaped phasor will yield the shaped sound. In that sense, to me the phaseshaping as a synthesis method has something very easy to work with as editing the wave envelope there influences with signal generated much like using a low-pass filter can move from allowing a sine wave through to the full signal. With all of this *shaping, we also have to take care that these are non-linear operations. The following python script shows what happens when we apply the a -> b -> c versus a -> c -> b. a = [0,1,2,3,4,5,6,7,8,9] b = [0,0,1,1,2,2,3,3,4,4] c = [0,1,2,3,4,4,3,2,1,0] test1 = [c[b[a[i]]] for i in range(10)] test2 = [b[c[a[i]]] for i in range(10)] print test1 print test2 The results I received are: [0, 0, 1, 1, 2, 2, 3, 3, 4, 4] [0, 0, 1, 1, 2, 2, 1, 1, 0, 0] So in a sense, I feel like you work with the two differently, at least, this is my sense of it so far in my own working with the phaseshaper. This now makes me wonder what would be the effect of doing a similar operation with waveshaping as is going on in the phaseshaper, using an interpolation between a straight wave signal and the waveshaped signal as a means to get a dynamic shaping. steven p.s. - Thanks very much for this conversation; I will most definitely be using a lot of this in writing my article! =) On Dec 10, 2007 11:42 AM, Anthony Kozar wrote: > Steven, > > Thanks so much for these great examples! They definitely remind me of the > sounds that I used to get out of a CZ-3000. > > I am wondering how your method of interpolating between a piece-wise linear > phaseshaping table and the phasor's linear value compares to having > dedicated functions that calculate the (changing) phase transfer function. > I certainly had not considered this shortcut or I might not have started > writing PD opcodes. It is interesting because it avoids the need for a-rate > if-thens. > > It seems to me that your method may be both more and less flexible. It has > much greater flexibility for designing one's own transfer functions. (The > blue interface for doing this looks amazing, btw, I will have to give it a > try!). But, I think you lose the ability to easily vary the "pivot points" > of the function both above and below the linear phase (which may not matter > if the input waveform is symmetric -- and I do not think the Casio CZs > allowed this either). And I am not sure the averaging works as expected if > the pivot point reaches either extreme (0 or 1) -- but that creates > discontinuities anyways. So for all practical purposes, the weighted > averaging seems like a simpler solution. > > Should we reconsider including my PD opcodes in the next Csound release? > > Another observation about phaseshaping versus waveshaping: there really is > no difference if the methods are implemented as lookups in static tables. > Basically, each is the composition of a linear phasor with two functions > (using @ for composition): > > Phaseshaping: > phasor @ phaseshaping function @ stored wavetable > > Waveshaping: > phasor @ stored wavetable @ waveshaping function > > The fact that the stored wavetables are usually sine waves is arbitrary as > is the viewpoint of which table represents the "waveform" and which the > shaping function. Differences only occur if we admit other types of > modulation such as varying the amplitude of the input waveform to the > waveshaping table or creating a dynamic phaseshaping function. > > Anthony Kozar > anthonykozar AT sbcglobal DOT net > http://anthonykozar.net/ > > Steven Yi wrote on 12/9/07 12:20 AM: > > > I'm happy to announce the release of a new blue/Csound instrument > > entitled PhaseShaper. The instrument is modeled on the Casio CZ-101 > > and it's Phase Distortion synthesis though I am calling it > > Phaseshaping as the operation is very similar to Waveshaping but done > > on a phasor and not on an audio signal. > > > p.s. - I am currently planning on discussing the instrument design and > > phaseshaping in general in full detail in an article for the next > > Csound Journal. > > > ------------------------------------------------------------------------- > SF.Net email is sponsored by: > Check out the new SourceForge.net Marketplace. > It's the best place to buy or sell services for > just about anything Open Source. > http://sourceforge.net/services/buy/index.php > _______________________________________________ > Csound-devel mailing list > Csound-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/csound-devel > ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Csound-devel mailing list Csound-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/csound-devel