Smooth frequency transition
you should use a logarithmic line~ object to adjust the curve as smooth as you want.
On top of that you should apply a Nyquist correction to the output of your oscillator abstraction.
So here you have some imagines how to do that. The Nyquist abstraction is used in the output of the triangle oscillator abstraction as an example. Then the final output can be controlled with a logarithmic line~ object.
OBS : If you need more then one oscillator you can apply this for each oscillator and then use a mixer and then the output of the mixer you use again the same idea. In this way you have an oscillator smooth stage control and a final mixer stage control for extra smoothness.
This is just the simple mono smooth control (no curve adjustment)

The same idea but as a stereo version

Here is with logarithmic smooth control (with curve adjustment)

Here you have a Nyquist correction abstraction

Here you have a triangle oscillator with Nyquist correction

You can also download xline~ which is an object that is doing just that :
https://forum.pdpatchrepo.info/topic/13084/xline-logarithmic-line-object
Unable to get FM saws?
@randal I hacked up your patch a little so I could run it to see what was going on, in particular I removed the algorithm switch from the voice and just took signal from the carrier. Is this not the result you were looking for?

Note that both oscillators are at the same pitch, and I took care to start them at the same time so they'd be in the same phase. I also think you might have accidentally deleted the feedback path for the modulating oscillator. [edit: I see now that you didn't, but the feedback outlet is post amp attenuation, so there is very little feedback. Additionally, you are using s~/r~ which introduces a 64 sample delay--consider using the technique in my next post]
I only have a passing knowledge of FM, but it seems like you have to keep the modulation index (in your case, op2 amp) really low to get the results you're looking for. I don't know how the DX modulation indexes are scaled. Also, if you're evaluting your results in time domain (i.e. looking at the wave shape) I think the phase between the oscillators is important. Adjusting the tuning of the oscillators while they're running will shift their phase relative to each other.
Converting audio signals to binary with no externals ?
@seb-harmonik.ar , @whale-av Many thanks for help. So what i want to do is this :
i want to have 2 oscillators (both sine waves. one a carry oscillator and the other one a modulator) with different frequency. And i want their audio signal to be processed in [expr~ ] using bitwise XOR modulation. This is different from [+~] , [-~] , [*~] , [/~]. This paper describes this in detail.
Here is a plot of the waveform result using bitwise XOR (from the paper above) :

Here is a schematic view of the oscillator structure :
So to control both oscillators i need to control the theta (phase) , f (frequency) and A (linear amplitude). Also S1 is unipolar. So the idea is that i can use the basic operations on the audio signals like (addition,multiplication,bitwise OR,bitwise AND) or i can use something different (bitwise XOR). So i tried to make somehow the bitwise XOR using a formula : bitwise XOR equivalent <- (S1 | S2) - (S1 & S2) (not working). The bitwise operations like "&" and "|" works for [expr] not [expr~].

Also i just found this about [expr~ ] object so maybe i am missing something or i am wrong
What is this operator "^" it is bitwise XOR ? or exponential ? or something else ?

Thanks to all a lot for the help. I also tried what @alexandros was talking about and it is almost working. But the waveform is really off so i need to learn more about this idea.
PELLE8001, even more chaotic music sequencer
Even more chaotic 8-step sequencer.

Each step has square wave oscillator, sine wave oscillator, wav file sampler and noise generator.
Lenght of steps can be controlled, overall and individually, and sequentially muted.
Two square wave oscillators modulate each other and a third one modulates the combined two. Optional random frequency modulation on each one of them with control for range and speed.
Sine wave oscillators can be pure, randomized with control of range and tempo, with up/down sweeps or LFO.
Samplers can be set to start and end of loop, playback speed goes from -200% (reverse playback) to 200%.
Generators and left/stereo/right outputs on each step can be sequenced.
Each step has stereo delay.
Recording to wav files possible.
Enjoy.
Samples:
http://mp3.shitcore.org/PELLE8001, as played by NOISEBOB, 210120.mp3
http://mp3.shitcore.org/PELLE8001, as played by NOISEBOB, 220120.mp3
DOWnLOAD:
PELLE8001.pd
latest version here: http://pd.noiselove.net/PELLE8001-1.7.3.pd
PELLE8000, chaotic music sequencer
Hello
i've been mucking about in PD for some years, but lately taking it more serious.. i'd like to share my first patch, that i feel is worth sharing:

it's a chaotic sequencer/rhythmic noise generator.
Each step has square wave oscillator, sine wave oscillator and a wav file sampler.
Two square wave oscillators modulate each other and a third one modulates the combined two. Optional random frequency modulation on each one of them with control for range and speed. Sine wave oscillators can be pure or with up/down sweeps or LFO. Samplers can be set to start and end of loop, playback speed goes from -200% (reverse playback) to 200%. Generators and left/stereo/right outputs on each step can be sequenced.
Bugs: all outputs are set to right on start-up, division by zero on samplers.
patch is here:
PELLE8000-1.1.pd
a sample of me jamming on it here:
http://mp3.shitcore.org/PELLE8000, as played by NOISEBOB, 190120.mp3
Phase modulation FM8 emulation troubles
@RandLaneFly "Dude... all i can say is thank you."
Glad to help. It just happens that I was working on this less than a month ago for a synthesis theory class.
"the fm8 sounds more filled out with high frequencies"
The FM8 plot (bottom left) looks like a lot of aliasing. I'm not sure if that's really "filled out." (And the "FM8 sine tone" plot is definitely not from a pure sine tone. It might be deliberate or it might be just a poor oscillator implementation. One of my former students did some research comparing analog oscillators against digital ones from commercial VSTs. The VSTs are often really awful -- unbelievable amounts of aliasing. Massive is one of the worst offenders. I think this is one of the reasons for the harshness of modern EDM -- adding a lot of noise into the pads is a way to cover the kind of gross sound of the oscillators.)
One thing you might try is to use a wavetable oscillator instead of [cos~]. The wavetable can include a bit extra harmonic content.
hjh
Permutations, second part, can anybody get this patch to work?
@Ale-H.H. OK....... You are going to have to trust me on this.
This took about an hour to build........ but you can now expand it in seconds.
Abstractions are a powerful tool......... but to build them you need to understand the use of variables ($0 $1 $2......etc.)..
NEW2.zip
PLEASE NOTE>>!!
Any abstraction can be copied and pasted......... .So if you want more oscillators within a [voice_gen] just copy/paste a [part_voice] within a [voice_gen] and give it a new number [part_voice $1 "x"]...... Change the pasted one's Name to [part_voice $1 "new voice number").......
It will need a timbre curve as well.... so open the relevant [timbre_gen"y"] and put a new [part_timbre $1 $2 "x"] make a new volume curve $1-$2-x by copy/pasting an existing one...draw a new curve....... and save the main [voice_gen] abstraction once you are happy.
BEWARE>>!!
1..... the [timbre_gen"x"] need to be saved individually because they contain the timbre sub-curves. They cannot be used as true abstractions (they must have separate names). If you decide you want a new timbre curve for something then copy and paste an old [timbre_gen"x"], changing its name........ then change the sub-curves and re-save the file.
((this could be done better by writing data out to text files, but I don't have the time now to implement that..... this solution works.......))
2.... If you add more oscillators to a voice then you will end up with some producing ultra-sonics. If you will need to specify some new relationship between the oscillators (other than x2,x3 etc. you can do that by changing the 2nd argument for the oscillators.... i.e. [part_voice $1 0.5] etc.
Don't forget to put the "0.5" in a corresponding [part_timbre] and it's graph....!
HOWEVER>>!!
I cannot help you to do this without abstractions..... it would be too difficult and too messy.
You are absolutely going to have to understand them for a project like this that is going to become very complex very fast.
See here for some help........ https://forum.pdpatchrepo.info/topic/9774/pure-data-noob/4
You will not have wasted your time.
The future benefit will be enormous...... as any sudden new idea for your patch can be working 100% just a few minutes later!.
You should probably print this post before you start playing with the patch.
And please do not despair.
You will, probably after a good nights sleep, have a $ eureka moment...... and from then on you will find patching in Pd as easy as Pi....... or is that Pie?.....
New2.zip should be working...... there is nothing clever or unusual.
I might not get time to help for a couple of days. If I get time to integrate a state saving system then I will integrate each [part_timbre] into each [part_voice] and the patching will become even easier.
You have 2 days to get familiar with this way of working...........
David.
Permutations, second part, can anybody get this patch to work?
@Ale-H.H. I am out tonight..... so no help I'm afraid.
I start to understand.
You can assign curves to what you wish....... so?
Anyway.... the last patch allows you to draw curves for each oscillator controlled by just one iaanix timbre curve.
You just have to decide how each oscillator should respond to that curve to create the timbre.
If you want the first oscillator volume to simply follow the iaanix curve then draw a line in "a" from bottom left to top right.
If you want the last oscillator to do the inverse then draw in "h" a straight line from top left to bottom right.
If you want the second oscillator volume to rise quickly as the iannix curve goes to 0.5 and then fall back to zero as the iannix curve reaches 1 then draw a triangle in "b"
I hope that makes sense.
David.
Array Oscilloscope : Data goes off the designated space
Ok, so I did a bit of looking through my patches and I think the culprit is the delay method I'm using. I also tried to mess around with changing the phase of the oscilators so that when they are on 0Hz they dont have any amplitude but I'm not sure how successful that was.
Here is the Delay patch:
Delay.pd
And the Audio-Out patch I am using:
Audio-Out.pd
And for good measure the Oscilator:
Oscilator.pd
Thanks!
Programming Additive Synthesiser
Hi, I am wondering if it is possible to create an additive synthesiser for a verbos harmonic oscillator: https://static1.squarespace.com/static/52cddaa9e4b0999c86f84b8a/t/56145344e4b0e58796be4889/1444172612979/harmonic+oscillator+postcard.pdf
There are two parts to it, namely the oscillator core and the harmonic mixer. For the oscillator core, it has to output saw, square and triangle waves. How do I do that in pd?


