Old 05-24-2014, 06:56 PM   #1
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default my first js contrib - chaos tone generator

DOWNLOAD FILES: http://www.elanhickler.com/transfer/.../Butterfly.zip

If any artists or programmers happen to see this post and feel inspired to help create a VST, let me know. Otherwise, I'll be stumbling around in C++ world, slowly but surely.

Musical Demo


SFX Demo


BUGS:
-Detune amounts do not track with midi (should be an option).
-Somewhat intentional but could possibly be improved: Filters actually filter the audio when it is really intended to filter the chaos/modulation.


v1.4 - Updated 10/17/2014
-Lowpass/Highpass now displays correct hz
-Added highpass position switch, switches position of filter in chaos chain.
-Lag control has been moved to gui, click+drag to edit value, ctrl+click for finer control.
-Midi input now has "return to 0" mode which causes hz to drop to 0 when no note is being played
-Master frequency now offsets midi frequency
-Renamed to "Butterfly" based on "the butterfly effect" chaos theory.

v1.3 - Updated 10/15/2014
-Added midi input mode. Currently, when no note is playing, frequency drops to 0. I need to add an amplitude envelope...
-Added slider for lag amount. This slider controls the speed at which all parameters will change.

v1.2 - Updated 6/1/2014
-Preliminary GUI added
-GUI displays lowpass/highpass filter frequency, a preliminary step to having a pitch-tracking filter
-Taper added to highpass and lowpass sliders, fine tuning slider no longer needed
-improved speaker protection
-GUI displays speaker protection warning for 5 seconds

v1.1 - Updated 5/28/2014
-Now automatically mutes itself if signal goes a little above clipping
-Controls completely redesigned and the actual routing is a tiny bit different.
-Oscillator 1 highpass filter used to be after the lowpass, now it is placed before the lowpass in the signal chain (right after the oscillator output).
-A little bit of code cleanup (more to do).
Here are some of the new sonic possibilities: http://www.elanhickler.com/_/chaos5.mp3



[Presets may not sound the same when you recall it, and this synth will be going through many changes which will render the presets incompatible. I will be working on this problem. For now, save presets at your own risk!]

SEE what chaos looks like! (20mb animation)
chaos_generator_demo.mp3 (demonstrates the effect of the new highpass filter.)



Guide
Description: Chaos is generated with two sine waves. Oscillator 1 outputs into Oscillator 2's frequency. Oscillator 2 outputs into Oscillator's 1 frequency. Between this feedback loop is a highpass and lowpass filter, as well as controls for amount of modulation. Engaging the filter creates awesome sonic textures and movement. Offsetting the two oscillators' frequencies will create cool beating effects.

- QUICK START README -
The most important controls are at the top. First set the master frequency to 100. Explore Master Frequency and Master FM to get a feel for how those shape the sound. Next, start experimenting with small filter changes. Use the highpass finetune! Once you've had fun with that, move on to the individual oscillator controls. Offset an oscillator's frequency just a tiny tiny bit to create chaotic beating. Next, move on to the individual fm amount.

- OSCILLATORS -
Master Frequency - Changes the frequency of both oscillators
Master FM - Changes the level of feedback modulation of both oscillators
detunes - Changes frequency for the individual oscillator
fm1/fm2 offset - Changes the modulation amount for the individual oscillator

- FILTERS -
Lowpass/Highpass Chaos - controls how much the feedback signal is filtered. High numbers mean less filtering
^ filter taps - Controls the steepness of the lowpass filter. More filter taps produces more wild behaviors.
^ finetune - Highpass finetune control, use this control before using the coarse (Highpass Chaos) control as tiny tiny adjustments can make a huge difference in many circumstances.

- OUTPUT -
output - I find myself using the default mode the most. Prefilter mode means you are hearing oscillator1 before going into the lowpass filter. The oscillator is still affected by the filter! Check out stereo chaos (not pre-filter) to get a feel for what that sounds like. If the lowpass filter is too low, you won't hear oscillator1 in that mode.
Volume/Pan - Use panning to balance the volume of the two oscillators when in stereo mode. If the signal goes beyond 1.5 (a little more than clipping), it will mute itself (volume slider will be moved to 0).

- TIPS -
1. Use a realistic or otherwise convolution reverb or to put the sound into context, it will start to sound akin to real world objects or creatures!
2. Start everything off at low values. Hold CTRL when using the sliders because fine tuning is very necessary.
3. Sliders have a big range, use carefully. When other sliders are low, that may allow one slider to be used at its extremes for good effect.
4. The filters are integral to the chaos. The filter sliders can be used aggressively to create sonic movement.
5. If the chaos completely drops out, try adding in some highpass for a moment, or aggresively increase the Master Freuqency and then use your undo hotkey to undo the change.
6. Download JScope and watch it in X/Y mode. It's very helpful to see the "shape" of the sound and will help you decide how to change the parameters.

- NOTES -
-inspired by my analog modular synth when I put patch cables in places where they weren't meant to be placed

I've always wanted to build a TUNABLE synthesizer based on chaotic tone generation. Because this is the digital realm, I could conceivably create a number of chaotic presets that stay in tune and are playable and highly expressive. The major advantage to chaos that the chaotic tones have an organic quality. The timbre changes based on the frequency, so you get acoustic-like behaviors as well as vocal-like textures.

Once I am more experience in DSP, I'd love to create a full-fledged VST synthesizer based on this. It would be different in that the voice and expression wouldn't come from sawtooths, lowpass filters, and LFOs. Instead, the sonic movement and timbre would come from the interaction between oscillators. You would not need a great deal of synth patching skill and hours of tweaking to create crazy and dynamic sounds.

PLANNED FEATURES
-A way to regenerate chaos so presets actually work (maybe somehow save some internal states/values?)
-highly controllable noise generators to induce subtle to extreme randomization of parameters (I want to perfect the chaos model I've created before leaning on noise.)
-LFOs and Envelopes for parameters
-Midi controlled preset changing
-Keytracking on parameters (for "playing" the synth via keyboard)
-more filter options, filters with resonance
-gain, clipping, waveshaping, add harmonics(diode, assymetrical, rounding, saturation, soft, stuff like that)
-compressor to squash the sound for extra sonic goodness.
-low frequency mode to allow the chaos to be used to slowly/chaotically control multiple midi parameters, possibly add a third chaos oscillator/output)
-X-Y Oscilloscope
-Reset button/chaos pinging for creating percussive hits
-video tutorial and guide
-consolidate and improve the code, possibly find and remove redundant sliders, make it easier to use, etc.
-create image of signal flow
-create proper GUI.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 10-20-2014 at 06:46 PM.
Argitoth is offline   Reply With Quote
Old 05-24-2014, 06:58 PM   #2
Swamp Ape
Human being with feelings
 
Swamp Ape's Avatar
 
Join Date: Mar 2012
Location: Asheville NC
Posts: 1,335
Default

Cool, I'm gonna give this a shot this weekend. Thanks!
Swamp Ape is offline   Reply With Quote
Old 05-25-2014, 12:41 AM   #3
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

chaos tone generator 2.0, added some more sliders

demo with lotsa reverb: http://www.elanhickler.com/_/chaos%20output.mp3
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-25-2014 at 12:59 PM.
Argitoth is offline   Reply With Quote
Old 05-25-2014, 12:52 AM   #4
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Interesting sounds. Spotted a couple of little things...

Last line should (I assume) be this...
Code:
slider2 == 3 ? spl0 = spl1 = out1+out2;
There's also a variable called "output" that isn't used but it looks like it's just an alias for slider2.

And why did you do this...
Code:
pi = $pi;
twopi = 2*pi;
when you could just put...
Code:
twopi = 2 * $pi;
IXix is offline   Reply With Quote
Old 05-25-2014, 01:09 AM   #5
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Ixix, it's because I am just a beginner! actually I used the pi variable at one point, but now it's leftover code.

download the new version, the out1+out2 needs a /2, which I added.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-25-2014 at 03:37 AM.
Argitoth is offline   Reply With Quote
Old 05-25-2014, 03:24 AM   #6
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Cool. Seems a bit glitchy though, clicks and pops.
IXix is offline   Reply With Quote
Old 05-25-2014, 03:28 AM   #7
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Quote:
Originally Posted by IXix View Post
Cool. Seems a bit glitchy though, clicks and pops.
^^^ I take it back. I think it was my machine having a moment. ^^^
IXix is offline   Reply With Quote
Old 05-25-2014, 07:32 AM   #8
semiquaver
Human being with feelings
 
Join Date: Jun 2008
Posts: 4,923
Default

Wow. Thanks for that!
semiquaver is offline   Reply With Quote
Old 05-25-2014, 01:00 PM   #9
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

UPDATE!

Added a variable pole filter (select number of taps, MAJOR improvement on usability), cleaned up code.

edit: actually the variable pole filter was already in the code, I simply forgot to enable it.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-25-2014 at 01:06 PM.
Argitoth is offline   Reply With Quote
Old 05-25-2014, 06:49 PM   #10
Eichro
Human being with feelings
 
Join Date: May 2014
Posts: 103
Default

Pretty cool thing you've done there. It would be better if it had MIDI support for using it as a synth, IMO (even if it somewhat defeats the "chaos" aspect)
Eichro is offline   Reply With Quote
Old 05-25-2014, 07:04 PM   #11
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

actually, that's NOT a bad idea! I should make a project out of turning this into a playable synth. It'll never be quite in tune [that is something I will explore once I am more experienced], but that's ok! It'll be a blast to play. I'll use this project to learn how to program DSP envelopes. I'll have some envelopes for the filter, amplitude, pitch, etc... anyway, I'm getting ahead of myself

FIRST STEP!: Make it playable via midi notes. For now I could add a simple on-off for the amplitude, so it only makes sound when you are sending a midi note.

Edit: Ooh! I should connect the modwheel to certain parameters, so you can use it as a sound-effecty synth by using the modwheel to get those vocal-like morphs.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-25-2014 at 09:53 PM.
Argitoth is offline   Reply With Quote
Old 05-26-2014, 04:03 AM   #12
Seventh
Human being with feelings
 
Seventh's Avatar
 
Join Date: Sep 2010
Location: Finland
Posts: 776
Default

Cool stuff! Btw, I think this thing needs a DC filter at output.

Damn... I wish I had multiple MIDI theremins to control all the parameters.
__________________
Grey, flat and minimal theme for Reaper: Symbiosis

Last edited by Seventh; 05-26-2014 at 04:20 AM.
Seventh is offline   Reply With Quote
Old 05-26-2014, 07:08 AM   #13
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

I like this! It's a bit in the vein of the random walk synthesis stuff I've myself worked every now and then through the years. Especially the part about not yet having MIDI note control over it... For this type of synthesis it's quite difficult to come up with meaningful MIDI note control. If the synthesis is forced to follow a tuning, it might lose the uniqueness of the sound...
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-26-2014, 10:06 AM   #14
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

UPDATE AND OFFICIAL RELEASE of: Elan's Chaos Generator, throw away the old version (chaos tone generator), this one can do everything the old one can do, plus more.

New Features
-DC Offset filter (thank you Seventh!)
-Highpass filter: HUGE improvement! Adding the proper amount of highpass filtering, you can induce sonic movement. Check out the new audio demo in the first post!

To come:
-Midi control

Missing features:
-Coefficients of filters need to be calculated based on samplerate so the filter doesn't sound different at different sample rates.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-26-2014 at 10:23 AM.
Argitoth is offline   Reply With Quote
Old 05-26-2014, 10:11 AM   #15
Reaperto
Human being with feelings
 
Reaperto's Avatar
 
Join Date: Apr 2011
Location: Buenos Aires - Argentina
Posts: 560
Default

Quote:
Originally Posted by Argitoth View Post
SEE what chaos looks like!
Awesome!!!
__________________
ReaLoaded!
Reaperto is offline   Reply With Quote
Old 05-26-2014, 10:29 AM   #16
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Quote:
Originally Posted by Xenakios View Post
I like this!
thanks!
Quote:
Originally Posted by Xenakios View Post
For this type of synthesis it's quite difficult to come up with meaningful MIDI note control. If the synthesis is forced to follow a tuning, it might lose the uniqueness of the sound...
Indeed. When I get more experienced with this stuff, I will create tuning a few different ways:

1. Each note on the keyboard is a different preset that I manually tune, EASY to implement
2. I figure out how the parameters need to be moved in relation to keytracking, difficult to implement.
--essentially I create different presets where the tone is married to the keytracking in that if you change any parameters, it will no longer be in tune. Each preset will need to be handcrafted and may have a limited range.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 05-26-2014, 10:32 AM   #17
avoca
Human being with feelings
 
avoca's Avatar
 
Join Date: Jun 2008
Location: Ireland
Posts: 174
Default

I love it!
Thanks, Argitoth
avoca is offline   Reply With Quote
Old 05-26-2014, 11:07 AM   #18
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Hmm, I am not sure if I like the latest version as much as the previous version...What was changed for the new version? I seem to be mostly getting silence or quite typical FM-like sounds now out of it. Could be that I don't yet have the hang of using the parameters...The chaos highpass seems especially sensitive, it seem to kill the sound output very easily as the value is lowered.
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-26-2014, 11:52 AM   #19
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

I have to look into it more. The only thing that would be making it impossible to get the "old version" tones is the hipass filter not really turning off when it is set to 1 (the chaos may be "holding" onto the effect of the hipass even if it is bypassed). The hipass filter is THE KEY to creating evolving sounds, but it makes it much more difficult to get strait tones. Lastly, the first version also uses 1 pole filtering... well depending on which version you used. I'll look into it!

Edit: And yes, the parameters are EXTREMELY sensitive. You should try hipass vales areound .9998 and lowpass values around .001 if you want those self-evolving patterns. I'll have to include presets and more of a guide into how to dial in that kinda stuff.
Edit: For sensitivity, I'd need to do some kind of tapered sliders, but I don't yet know the DSP code for that, I'm still learning, bear with me!
EDIT: OH one more thing, the old version uses POST-filter (so use the non-prefilter outputs)

EDIT: The workaround for disabling the highpass filter completely is to set it to 1 then reset the chaos generator by hitting play in REAPER, that resets the effect. I'd like to add a reset button. You could use that to "ping" the chaos and generate drum hits and 1-shot effects. I'll have to implement envelopes as well

EDIT: As for the boring FMey type sounds, I think the older version is more prone to that. Once you discover the sweet spots for the chaos, it gets easier to dial in really interesting stuff.

EDIT: And if someone has an X-Y Oscilloscope they can give me to include in the JS code... that would be ****ing awesome.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-26-2014 at 12:46 PM.
Argitoth is offline   Reply With Quote
Old 05-26-2014, 12:22 PM   #20
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Cool, I'll play around more with it. Could it be worthwhile to let the chaos highpass slider work only for a range of like 0.9-1.0? (ie, make it internally use the range 0.9-1.0 or so, while using the full slider range in the GUI.) Or does the chaos highpass actually still allow sound out even it's under around 0.9 with some other parameters set to other values?
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-26-2014, 12:40 PM   #21
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

The reason I allow all extreme settings is because if you want to manually create sonic movement, one good way is to swing the filter sliders wildly from 0 to 1. So yes the sound will cut out somewhere in there, but that's part of the manual expression.

Edit: Oh, one last thing. Presets are difficult to create because the sound you get is a result of the history of the chaos, so when you recall a preset, it doesn't end up sounding the same. I only managed to create a few, hah! With more experience I might be able to figure out how to regenerate certain presets.

Edit: Hey Xenakios, I'll add a highpass finetune just for you for next version. In the mean time, you can just copy-paste this code. Oh and I mispelled "finetine"...

Code:
desc:Elan Chaos Generator 1.0

/* 
by Elan Hickler 
www.elanhickler.com 
www.soundemote.com
*/

slider1:6.6<0,1000,.01>base frequency (keep below 20)
slider2:0<0,6,1{stereo chaos (pre-filter),stereo chaos,chaos A (pre-filter),chaos A,chaos B,mono mix(pre-filter),mono mix}>output
slider3:.6915<0,1,.0001>Lowpass Chaos (1 = off)
slider4:4<0,4,1{1,2,4,8,16}>Filter Taps (more taps = more predictable)
slider5:215<0,10000,.001>frequency offset
slider6:719<0,6000,.001>FM1 amount
slider7:2201<0,5000,.001>FM2 amount
slider10:.99998<0,1,.00001>Highpass Chaos (1 = off)
slider11:.5<0,1,.001>Volume
slider12:0<-.1,.1,.0001>highpass finetine


@init
twopi = 2*$pi; 

@slider
mix    = slider2;
taps   = slider4;
volume = slider11;

@sample  

/*PARAMETER SMOOTHING*/
frequency = abs(slider1);
lpcut = 1-slider3;
offset = slider5;
fm1 = slider6;
fm2 = slider7;
gain = slider8;
fbgain = slider9;
hpcut = min(1,slider10+slider12);
frequency = buf17 = (frequency * (1-.999)) + (buf17 * .999);
lpcut     = buf16 = (lpcut * (1-.999)) + (buf16 * .999);
gain      = buf18 = (gain * (1-.999)) + (buf18 * .999);
fm1       = buf19 = (fm1 * (1-.999)) + (buf19 * .999);
fm2       = buf20 = (fm2 * (1-.999)) + (buf20 * .999);
offset    = buf21 = (offset * (1-.999)) + (buf21 * .999);
hpcut     = buf22 = (hpcut * (1-.999)) + (buf22 * .999);

/*OSCILLATOR 1*/
adj1  = twopi/srate*frequency*out2*fm1;
pos1 += adj1;
pos1 >= twopi ? pos1 -= twopi;
out1  = sin(pos1);

/*FILTER*/
prefilter = out1;
buf0  = out1 * (1-lpcut) + (buf0 * lpcut);
buf1  = buf0 * (1-lpcut) + (buf1 * lpcut);
buf2  = buf1 * (1-lpcut) + (buf2 * lpcut);
buf3  = buf2 * (1-lpcut) + (buf3 * lpcut);
buf4  = buf3 * (1-lpcut) + (buf4 * lpcut);
buf5  = buf4 * (1-lpcut) + (buf5 * lpcut);
buf6  = buf5 * (1-lpcut) + (buf6 * lpcut);
buf7  = buf6 * (1-lpcut) + (buf7 * lpcut);
buf8  = buf7 * (1-lpcut) + (buf8 * lpcut);
buf9  = buf8 * (1-lpcut) + (buf9 * lpcut);
buf10 = buf9 * (1-lpcut) + (buf10 * lpcut);
buf11 = buf10 * (1-lpcut) + (buf11 * lpcut);
buf12 = buf11 * (1-lpcut) + (buf12 * lpcut);
buf13 = buf12 * (1-lpcut) + (buf13 * lpcut);
buf14 = buf13 * (1-lpcut) + (buf14 * lpcut);
buf15 = buf14 * (1-lpcut) + (buf15 * lpcut);

taps == 0 ? out1 = buf0;
taps == 1 ? out1 = buf1;
taps == 2 ? out1 = buf3;
taps == 3 ? out1 = buf7;
taps == 4 ? out1 = buf15;

/*OSCILLATOR 2*/
adj2  = twopi/srate*(out1*fm2+offset);
pos2 += adj2;
pos2 >= twopi ? pos2 -= twopi;
out2  = sin(pos2);
 
/*HP FILTER 1*/
otm1 = hpcut*otm1 + out1 - itm1; 
itm1 = out1;  
out1 = otm1;
  
/*HP FILTER 2*/
otm3 = hpcut*otm3 + out2 - itm3;
itm3 = out2; 
out2 = otm3;

/*VOLUME*/
finalout1 = out1*volume;
finalout2 = out2*volume;

/*DC FILTERS*/
otm5      = .9999*otm5 + finalout1 - itm5; 
itm5      = finalout1; 
finalout1 = otm5;
otm6      = .9999*otm6 + finalout2 - itm6; 
itm6      = finalout2;
finalout2 = otm6;
otm7      = .9999*otm7 + prefilter - itm7; 
itm7      = prefilter;
prefilter = otm7;

/*MIX CONFIGURATIONS*/
mix == 0 ? (spl0 = prefilter*volume/2; spl1 = finalout2);
mix == 1 ? (spl0 = finalout1; spl1 = finalout2);
mix == 2 ? spl0 = spl1 = prefilter*volume/2;
mix == 3 ? spl0 = spl1 = finalout1;
mix == 4 ? spl0 = spl1 = finalout2;
mix == 5 ? spl0 = spl1 = (prefilter*volume/2+finalout2)/2;
mix == 6 ? spl0 = spl1 = (finalout1+finalout2)/2;
Edit: Just deleted all my later posts... too useless. I'm just going to ignore the fact that you can create presets that cannot be recalled. I've investigated the matter enough to know how to get a preset sounding like it should by tweaking the parameters after load, or re-compiling the code. Instead of digging myself into a grave of workarounds (which are in the form of arbitrary limitations), I will leave it open ended and maybe I'll figure out how to recall the state of the chaos exactly at a later time.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-27-2014 at 09:53 PM.
Argitoth is offline   Reply With Quote
Old 05-28-2014, 12:20 AM   #22
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

UPDATED!!! See first post. I'll put some mp3 demos up there soon as well to demonstrate the new sonic capabilities.

I can't want to play this thing on the keyboard. Basic midi control is up next!
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template

Last edited by Argitoth; 05-28-2014 at 01:11 AM.
Argitoth is offline   Reply With Quote
Old 05-28-2014, 09:54 AM   #23
Xenakios
Human being with feelings
 
Xenakios's Avatar
 
Join Date: Feb 2007
Location: Oulu, Finland
Posts: 8,062
Default

Thanks for the updates! If/when you implement MIDI playability, put in a nice volume envelope too? (By nice I mean a looping envelope with a custom drawable shape or something along those lines... )
__________________
I am no longer part of the REAPER community. Please don't contact me with any REAPER-related issues.
Xenakios is offline   Reply With Quote
Old 05-28-2014, 11:57 AM   #24
JHughes
Banned
 
Join Date: Aug 2007
Location: Too close to Charlotte, NC
Posts: 3,554
Default

I love the Lissajous!
JHughes is offline   Reply With Quote
Old 05-28-2014, 05:06 PM   #25
SaulT
Human being with feelings
 
Join Date: Oct 2013
Location: Seattle, WA
Posts: 876
Default

I see two options. The first is to build a wavetable, periodically update it, and cycle through it as necessary dependent upon frequency, or modify your code in such a way that the tone will always be true. The way you are implementing frequency modulation is haphazard, shall we say, and cannot guarantee an in-tune note.

Building a table and cycling through it would be similar to scanned synthesis. http://en.wikipedia.org/wiki/Scanned_synthesis It would be my preferred method. The question is really how to do it in a meaningful way. I have an idea or two, maybe we can hash something out. Get ahold of me on Skype and we can pow-wow on it.
SaulT is offline   Reply With Quote
Old 06-01-2014, 04:27 PM   #26
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

small update, midi control still a work in progress.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-14-2014, 10:17 PM   #27
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

youtube video in first post!
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-15-2014, 02:02 AM   #28
suleiman
Human being with feelings
 
suleiman's Avatar
 
Join Date: Mar 2010
Location: Melbourne
Posts: 5,646
Default

This is great ! A brave new frontier in js...
__________________
-------------------------

Salamat
suleiman is offline   Reply With Quote
Old 10-15-2014, 02:02 PM   #29
Smashed Transistors
Human being with feelings
 
Smashed Transistors's Avatar
 
Join Date: Jul 2014
Location: Là bas les huîtres (FR)
Posts: 424
Default

Lissajou rules !
Midi notes could control the filter... it should affect its global "frequency"
__________________
JSFX plugins and synths. See you here and there: SoundCloud, Youtube, Google Play...
Smashed Transistors is offline   Reply With Quote
Old 10-15-2014, 02:05 PM   #30
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Quote:
Originally Posted by Smashed Transistors View Post
Lissajou rules !
Midi notes could control the filter... it should affect its global "frequency"
Yes, midi notes or modwheel or whatever you want. Also, there should be lag amount per parameter, so lets say midi notes are controlling a parameter, the changes can morph rather than instantly jump if you so choose.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-15-2014, 02:20 PM   #31
Smashed Transistors
Human being with feelings
 
Smashed Transistors's Avatar
 
Join Date: Jul 2014
Location: Là bas les huîtres (FR)
Posts: 424
Default

I tried to do that with my chua oscillator but it was too unstable for midi control. Very small parameter variations made it go to saturation.

Feedback (with delays) in phase modulation seems promising to me. You can regulate the chaotic behaviour of the generator by modulating the feedback. I implemented a basic delayed feedback in the PMX synth... that's a kind of "Brute Factor".
__________________
JSFX plugins and synths. See you here and there: SoundCloud, Youtube, Google Play...
Smashed Transistors is offline   Reply With Quote
Old 10-15-2014, 07:29 PM   #32
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Quote:
Originally Posted by Smashed Transistors View Post
I tried to do that with my chua oscillator but it was too unstable for midi control. Very small parameter variations made it go to saturation.
Well, the design I am using is straightforward which allows for predictable control of rhythm, pitch, and behavior. The only thing that's not predictable is tone, but that's exactly what I'm going for. It's a break-away from traditional programming. You don't have to spend much time to create movement and character in the sound like you would on a traditional synth.

Updated "Elan's Chaos Generator" to v1.3 and created new video to demonstrate chaos being used for MUSICAL purposes.. See first post!
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-16-2014, 05:49 AM   #33
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Lovely! Thanks!

Master Frequency deoesn't seem to do anything. Is it broken?

edit: Oh, I guess that's what the MIDI notes are doing so the slider is redundant. Perhaps it could be used to offset the tuning?

Last edited by IXix; 10-16-2014 at 06:07 AM.
IXix is offline   Reply With Quote
Old 10-16-2014, 06:15 AM   #34
IXix
Human being with feelings
 
Join Date: Jan 2007
Location: mcr:uk
Posts: 3,889
Default

Oh my goodness it's FILTHY!!! Bwahahahaha!
IXix is offline   Reply With Quote
Old 10-16-2014, 08:53 AM   #35
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Quote:
Originally Posted by IXix View Post
edit: Oh, I guess that's what the MIDI notes are doing so the slider is redundant. Perhaps it could be used to offset the tuning?
Yeah sorry I need to improve things a little bit, I'll come out with v1.35 or 1.4 soon.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-16-2014, 02:17 PM   #36
Smashed Transistors
Human being with feelings
 
Smashed Transistors's Avatar
 
Join Date: Jul 2014
Location: Là bas les huîtres (FR)
Posts: 424
Default

The problem of converting unpitched sound into pitched sound reminded me of a midi controlled i have experimented with some years ago. I edited it somewhat (and added the ugly copyright stuff)..

it needs an incoming audio and midi control.
TiaR PM Resynth
I opened a thread about it to avoid flooding here.

But damit, the "Argigoth chaos machine" is quite a good source for it
__________________
JSFX plugins and synths. See you here and there: SoundCloud, Youtube, Google Play...
Smashed Transistors is offline   Reply With Quote
Old 10-16-2014, 02:42 PM   #37
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

Smashed Transistor, I did check out all your creations so far, a lot of good stuff, I like the x-y oscilloscope... I need that. Also, there's room in "my chaos generator" for chua and other chaos formulas, as a way to add either chaotic modulation, for additional timbres when creating fx, or adding noise to musical patches.

I might start this chaos generator from scratch and introduce one element at a time. I need to see if I can get the chaos to interact with the filters without filtering the audio, so it would be easier to make bassy sounds. It also needs GUI sliders. The JS sliders just won't do!
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Old 10-16-2014, 03:04 PM   #38
Smashed Transistors
Human being with feelings
 
Smashed Transistors's Avatar
 
Join Date: Jul 2014
Location: Là bas les huîtres (FR)
Posts: 424
Default

You can use chaotic signals to modulate the filter frequency and use the input/output to process an incoming signal.

But audio modulation of filter parameters is difficult (even in the analog realm).
Mathews phasor filters are resonators that can be modulated even at audio rates.

I experimented some self modulation schemes with them (cXf synth).
Maybe you should try to modulate such filter - or filter bank - with chaotic signals.

BTW... for me a "no-computer-around-week-end" begins.
__________________
JSFX plugins and synths. See you here and there: SoundCloud, Youtube, Google Play...
Smashed Transistors is offline   Reply With Quote
Old 10-16-2014, 04:11 PM   #39
Tim Ragnur
Human being with feelings
 
Join Date: Dec 2011
Location: Denmark
Posts: 112
Default

Wow, totally awesome demos!
Would love to try this out, but I can't get any sound out of it.

I'm a bit new to JS, but have managed to create a new JS FX, copy/pasted from the txt document.
It looks right but says "import: can't find file midi_queue.jsfx-inc" at the top of the FX window. Maybe that's the problem?

I've tried feeding it various midi signals and various knob settings with no sound what so ever.
Tim Ragnur is offline   Reply With Quote
Old 10-16-2014, 05:44 PM   #40
Argitoth
Human being with feelings
 
Argitoth's Avatar
 
Join Date: Feb 2008
Location: Mesa, AZ
Posts: 2,057
Default

ahhh craaaap.

alright, I am adding the necessary file in the first post. download and put the file with the chaos generator.

Edit: Look at the bottom of the first post for link to required file. I'll simplify this for the next update.
__________________
Soundemote - Home of the chaosfly and pretty oscilloscope.
MyReaperPlugin - Easy-to-use cross-platform C++ REAPER extension template
Argitoth is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -7. The time now is 01:12 AM.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.