understanding a simple feedback oscillator
I was just experimenting with the “classic” feedback FM and stumbled on a related technique that seems quite interesting to me, especially because of its chaotic behavior. It’s actually very simple: The output of an oscillator is delayed and, scaled by some factor, fed back into that same oscillator as its frequency. So there is no external input, no carrier frequency (or a zero carrier frequency if you will), which means that it is a symmetric “through-zero” FM.
By guessing I figured out how the delay time determines the frequency of the oscillator, but I still don’t understand a few things: Why is there a factor of 4 involved so that the delay is one quarter of a cycle? And why is there still some error? I found two ways to fix it, first by oversampling and second by reducing the delay time by the duration of one half sample. To be honest I don’t have a clue why this works ... Any ideas?
What I find particularly interesting is the path from sinusoidal tones at modulation index 1 (which seems to be a critical value) to different modes of periodic oscillation and finally to chaos when the modulation index is increased: First odd harmonics are added, then even harmonics, then a period doubling or “bifurcation” occurs, and shortly after that we get into the chaotic region. This seems to be not too different from the logistic map or related chaotic maps. So I’m wondering if it’s possible to analyze the oscillator in terms of chaos theory to better understand and control its behavior.
Apart from being mathematically interesting, I think this could also be a usable noise generator with spectral control. Other effects can be achieved by adding an external input ... but for now, I’m more interested in understanding that simpler case.
Linked abstractions, synth experiment
Hello,
I am new to puredata, just started very recently and still learning how the language works.
I created a minimoog style oscillator where I can change certain parameters like: waveform, fine tuning, panning, volume. This file I named oscillator.pd, after which I created a "synth.pd" file that basically uses two "oscillator.pd" as an abstraction.
The problem is the following: when I modify one oscillator it also modifies the other, so I can't use them separately but it's as if they are linked together.
I attach the files, thanks in advance for the help!
Agustin Davrieux
Video tutorial: PD sync with Ableton Link and with DAW (PlugData)
Been working on this for awhile, only this week had a chance to record the material.
[abl_link~] (in Deken) has existed for awhile for Ableton Link sync. PlugData is more recent for Pd to run in a DAW, with timeline sync.
With both approaches, however, you'll crash into a handful of problems whose solutions are not at all obvious. This project is all about: What does it really take to have Ableton Link, or DAW timeline, sync working properly. 49 minutes
a bit longer than I expected.
(This is exposing some rough edges in Pd's interfaces. Unfortunately rough edges can end up being a feedback loop -- something is hard, so people avoid it, and as a result, it remains hard and people continue to avoid it. I hope this will break the feedback loop in some crucial places and make these types of sync more approachable.)
hjh
PS Note one correction in the video's description.
Stop Stream of Bangs after threshold
HI All,
Thanks to all'y'all that responded so quickly with very good guidance. And especially thanks to 'whale-av' for that little bit of brilliant code: [once]. I was able to integrate it and it now works.
The pitch-harmonic content is specific to a dramatic song cycle I am composing, entitled NEUROTICA. In this song that I am composing currently, there is a guitar part that plays a melody on which the guitarist (me) is invited to improvise at times throughout the piece. The pitch content of the melody is: F, G, Ab, A, Bb, B, C, Db, Eb, and E.
This content surely has different pitch centers, under which the chords that I have constructed more/less 'land' when improvising - so cool! If you look inside the subpatches, you will find that there are randomized choices for chords to harmonize the same pitch. For input, I am using a basic University Guitar to MIDI converter, the G2M, made by SONUUS (monophonic, yet chromatic input), but you could plug in any controller and play monophonically. For output, I am routing the midi to an FM8 synth that comes with Kontakt.
NEUROTICA SONG SOLO HARMONIZER.pd
Once last question, Whale-av: In which PD folder do I put your object? You will notice that made a subpatch after copy-pasting the content of your object to make it work. (Please forgive me, as I do not use PD all that often except for very specific creative projects, and I forget the directories/paths.)
Thanks again for all the help! And for those curious, enjoy!
All best, and happy holidays,
D
3rd Release Candidate of ELSE 1.0-0 (with Live Electronics Tutorial)
HEY!!! I'm really proud of this one.
This took kind of a while so there's lots and lots of new stuff and breaking changes. This is the 1st release to reach and exceed 450 objects (459 in total now, next milestone, 500 objects?). Total number of examples in the tutorial is now 477. Here are the release's highlights:
- MOST ESPECIALLY, WE FINALLY HAVE DECENT COMPILED BANDLIMITED OSCILLATORS ([bl.saw~], [bl.tri~], [bl.vsaw~], [bl.square~],[bl.imp~], [bl.imp2~]) thanks to Tim Schoen from PlugData, who has become a great partner in the development of ELSE, since ELSE is part of PlugData
This was one of the last milestones for a proper final release, so maybe we're close. BTW, I have to say that the oscillators from ELSE are the only ones I know out there that have BOTH hard sync input AND phase modulation input. I don't know any other not only in Pd, but in MAX, SuperCollider, Csound, Chuck, Reaktor, whatever... - Now we have a new [numbox~] GUI compiled object for monitoring and generating signals (this replaces [diisplay~], which was removed). This is thanks to Tim Schoen again.
- The [bicoeff] object has been renamed to [bicoeff2] and [bicoeff] is now a new GUI object based on the "filtergraph" external (this one is still very experimental and not really acceptable yet).
- All objects with random generators have been revised to take a seed value and generate unique seeds every time you open the patch. I made a PR to Pure Data so we have something similar for [random], [noise~] and [array random].
- [brown~] has an impulse signal input to generate random steps now as well.
- There are 13 new objects, most importantly and not yet mentioned: [brown] (control browninan motion), [bl.osc~] (a band limited oscillator based on wavetables), [blip~] (a bandlimited impulse generator) and [scala] (for importing tunings in the Scala software format).
Complete changelog is here: https://github.com/porres/pd-else/releases/tag/v1.0-rc3
It's up on deken, have fun.
PolyBLEP / BLEP / BLIT etc with oscillator sync
@nuromantix For reference:
PolyBLEP triangle
http://www.martin-finke.de/blog/articles/audio-plugins-018-polyblep-oscillator/
https://www.kvraudio.com/forum/viewtopic.php?t=375517
Hard Sync without Aliasing in this thread:
https://forum.pdpatchrepo.info/topic/5507/antialiasing/7
Did someone do aliasing-free sync without filter in pd yet?
strange oscillation in [hip~ 1]
I noticed this oddity while using a [phasor~] at low frequencies to ping a resonant filter: [hip~] oscillates quietly for cutoff frequencies below 20. You also get an interesting "zing" when you step its input between DC levels.

hip~ 1 oscillation.pd
No biggie, just something weird I noticed. I bet the math behind it is interesting.
Trying to reproduce a sound with Pd
@jameslo Analog components all have tolerances, +- 10% is not uncommon for pots, so any of the knobs between the two modules could be 20% off from each other given a worse case scenario, plus all those other components in the module could make it even further off, Generally circuits are designed to minimize the effects of component tolerances and high tolerance parts will be used in critical locations like frequency but amplitude and PW are not critical location, our ears will not notice small differences here. On top of that components age and their value changes, so two 30 year old modules can be very different despite once being identical. Things like phase and frequency are not constants in the analog world, things drift and oscillators which share a power source tend to sync when they get close. Most have to be very close in frequency to sync this way, the beat frequency will be well under 1hz but under certain situations you can hear it if you listen close. When trying to copy a patch from the analog world in the digital, knobs can only be used as a rough guide, need to use your ears.
When you distorted the wave you added harmonics and changed the strengths of the old harmonics, only harmonics of equal strength but opposite phase will cancel fully. You most likely did have cancellation just not full cancellation (depends on how you distorted it). Put both oscillators to the same frequency and opposite phase, listen to the distorted one and then add in the undistorted oscillator, you should hear a decrease in harmonic content from the cancellation. This will be most apparent with low to moderate levels of distortion, the more distortion, the more harmonics you are adding, the less the two waves have in common, and as a result less gets canceled.
Edit: didn't quite finish that last sentence.
additive sine-synth thing
I was watching some of miller's videos on the internals of pd and got inspired to try a different (probably processing intensive) method of parallel processing for multiple oscillators/additive synthesis & came up with this ugly thing after some hours. Basically it uses upsampling to use every "location" in a block as a separate oscillator. (so sample 2 in a block is oscillator 2, etc.) The subpatch is upsampled x64 with 64 block size so every sample 1 sample of 64 oscillators are being processed. [tabsend~] and [tabreceive~] are used for storing the phase of the sine waves in-between samples. It's probably relatively heavy on the processing. still I thought it was kinda cool.
If anyone knows how to get the sum of all samples in a block in vanilla that would also be helpful (I'm using [rfft~] now but don't need to do an entire fft just for the sum)
additive.pd
NoxSiren - Modular synthesizer system <- [v15]
NoxSiren is a modular synthesizer system where the punishment of failure is the beginning of a new invention.
--DOWNLOAD-- NoxSiren for :
-
Pure Data :
NoxSiren v15.rar
NoxSiren v14.rar -
Purr Data :
NoxSiren v15.rar
NoxSiren v14.rar
--DOWNLOAD-- ORCA for :
- x64, OSX, Linux :
https://hundredrabbits.itch.io/orca
In order to connect NoxSiren system to ORCA system you also need a virtual loopback MIDI-ports:
--DOWNLOAD-- loopMIDI for :
- Windows 7 up to Windows 10, 32 and 64 bit :
https://www.tobias-erichsen.de/software/loopmidi.html
#-= Cyber Notes [v15] =-#
- added BORG-IMPLANT module.
- introduction to special modules.
- more system testing.
#-= Special Modules [v15] =-#
- BORG-IMPLANT (connects ORCA MIDI system to NoxSiren system)
#-= Current Modules [v15] =-#
- VCO (voltage-controlled-oscillator)
- VCO2 (advance voltage-controlled-oscillator)
- WAVEBANK (additive synthesis oscillator)
- ADSR (Attack-Decay-Sustain-Release envelope)
- C-ADSR (Curved Attack-Decay-Sustain-Release envelope)
- CICADAS (128 steps-Euclidean rhythm generator)
- CICADAS-2 (advance 128-steps polymorphic-Euclidean rhythm generator)
- COMPRESSOR (lookahead mono compressor unit)
- DUAL-COMPRESSOR (2-channel lookahead mono compressor unit)
- STEREO-COMPRESSOR (lookahead stereo compressor unit)
- MONO-KEYS (virtual 1-voice monophonic MIDI keyboard)
- POLY-KEYS-2 (virtual 2-voice polyphonic MIDI keyboard)
- POLY-KEYS-3 (virtual 3-voice polyphonic MIDI keyboard)
- POLY-KEYS-4 (virtual 4-voice polyphonic MIDI keyboard)
- POLY-KEYS-5 (virtual 5-voice polyphonic MIDI keyboard)
- POLY-KEYS-6 (virtual 6-voice polyphonic MIDI keyboard)
- BATTERY (simple manual triggered machine for drumming.)
- REVERB (reverb unit with lowpass control)
- STEREO-REVERB (stereo reverb unit with lowpass control)
- RESIN (advanced rain effect/texture generator)
- NOISE (generates black,brown,red and orange noise)
- NOISE2 (generates yellow,blue,pink and white noise)
- COBALT (6-stage polyrhythm generator)
- SHAPER (basic shaper unit)
- FOLDER (basic wave folding unit)
- STEREO-FOLDER (stereo wave folding unit)
- DUAL-FOLDER (advance wave folding unit)
- POLARIZER (transform a signal into bi-polar, uni-polar, inverted or inverted uni-polar form)
- CLOCK (generates a BPM clock signal for sequencing other modules)
- CLOCKDIVIDER (a clock divider with even division of clock signal)
- CLOCKDIVIDER2 (a clock divider with odd division of clock signal)
- DELAY-UNIT (delay unit)
- STEREO-DELAY (stereo delay unit)
- CHORUS (chorus unit)
- STEREO-CHORUS (stereo chorus unit)
- SEQ (advance 16-step/trigger sequencer)
- KICK (synthesize kick unit)
- KICK2 (synthesize flavor of KICK module)
- KICK3 (synthesize flavor of KICK module)
- SNARE (synthesize snare unit)
- CLAP (synthesize clap unit)
- CYMBAL (synthesize cymbal unit)
- RAND (RNG generator for other modules parameters)
- FMOD (feedback modulation unit)
- AM (amplitude modulation unit)
- RM (ring modulation unit)
- LFO (low-frequency-oscillator)
- LFO2 (advance low-frequency-oscillator)
- COMBINATOR (combine two waves)
- COMBINATOR2 (combine three waves)
- COMBINATOR3 (combine four waves)
- STRING (Karplus-Strong string synthesis unit)
- STRING2 (advance Karplus-Strong string synthesis unit)
- DETUNER (parametric 4-channel detuner unit)
- CRUSHER (basic audio resolution unit)
- STEREO-CRUSHER (basic stereo audio resolution unit)
- DUAL-CRUSHER (advance audio resolution unit)
- FILTER (basic filter)
- VCF (voltage-controlled-filter)
- MAR (Moog-analog-resonant filter)
- VCA (voltage-controlled-amplifier)
- DUAL-VCA (advance voltage-controlled-amplifier)
- FMUX (multiplexer with fast A/D internal envelope)
- MMUX (multiplexer with medium A/D internal envelope)
- SMUX (multiplexer with slow A/D internal envelope)
- FDMX (demultiplexer with fast A/D internal envelope)
- MDMX (demultiplexer with medium A/D internal envelope)
- SDMX (demultiplexer with slow A/D internal envelope)
- MIXER (mix 1-4 possible waves)
- SCOPE (oscilloscope analyzer)
- MASTER (fancy DAC~)
- BOX (useless decorative module)
NoxSiren integrated modules menu system.




