Closed cdromain closed 1 month ago
I really love this feature request. I think you are right, it would suit Juniper quite nicely - providing I can find a way to make it fit nicely with the workflow, that will be the main challenge here, especially if multiple outputs are required as you suggested.
I'll need to do some more reading into this topic to get a greater understanding of what is required, thanks for the links they are helpful.
Or would it be possible to use Gin's additional inputs as outputs
Unfortunately Gins inputs cannot be used as outputs
Sounds great Oliver ! Hope Chaos can find its way into Juni soon 😃 Lemme know if you have any question. Editing my post above to add Disting as another example of chaos-based source.
Added another chaotic source to my original post, Vult Caudal - discovered it this week-end and should get my hands on one of the first units in the next days !
Vult Caudal arrived 3 days ago 🔥 Super interesting, a totally different take on the chaos modulation as expected ! Got one of the first 4 modules out there and am waiting for Leonardo to publish more info and documentation about the different modes.
Added another module to my original post, Neutron Sound Dust of Time.
Updated my original post again, with more reference information by Jürgen Meier (in German 😄 ) and 2 YouTube videos.
Updated my original post again, with more reference information by Jürgen Meier (in German 😄 ) and 2 YouTube videos.
Thanks! I'll try to find some time to study this soon
Can't wait to see what this inspires you ! As you understood I'm passionate about this so don't hesitate to reach out to discuss and brainstorm together 🚀
@cdromain thanks for your patience on this issue I'm going to start implementing this ASAP
@ostenning Your comment and 0.6.0 milestone got me real excited man 🤩 Patience is a virtue often rewarded - I'm looking forward to bringing some chaos to Juni's powerful modulation arsenal 🔥 As always, happy to help in any way I can and discussing it further - you know where to find me ! Chat soon, cheers
@cdromain I've got a concept ready.
There is now a new added Lorenz
waveform which computes the 3 Lorenz equations, X Y and Z are morphable with the Morph parameter (similar to how Sine and the other waveforms work).
The frequency changes how quickly the equations are calculated, which works similarly to how the Random
waveform works. The higher the frequency, the faster the waveform moves. Phase dictates when it moves from one value to the next.
I think all that works fairly well - my main concern is that each channel operates independently from each other, and while you can Morph X-Y-Z, you cannot represent X-Y-Z all at the same time on 3 separate channels. The only way I can see something like this working is if I reconceptualize "Linked Channels" which will require architecture changes to how Juniper works.
@ostenning You rock man 🙌🏼 Testing the alpha as I write this !
The linking of channels would be a great next move (ideally using channel N to control the 3 signals that would then be distributed on channels N, N+1 and N+2), but it's gonna be really useful already even unlinked !
How are X, Y & Z distributed on the Morph parameter ? I.e. Z at -50... ?
I have one feature request already - the possibility to view the attractor(s) as a XY map instead of the usual waveform oscilloscope. That would be really cool to look at, useful to understand and follow the attractor movement, and would also highlight the special nature of the signal vs a classical LFO. Like what is done in the Dust of Time :
UPDATE after testing it tonight, modulating a Synth Tech E-352 wavetable (and analysing the signal on my DATA) - could not get the Lorenz to evolve in a smooth manner, could always hear the steps. The target expected behavior is a smooth, continuous, ever-evolving non predictable yet not random movement ✨I don't think the stepped random update behavior works here (as a slow rate means nothing happens between the equations updates and when there's an update the value jumps - all should be smooth and continuous, that's the organic beauty of this type of signal).
And not sure I get the relationship between phase and the resulting movement ("Phase dictates when it moves from one value to the next.").
Cheers
The linking of channels would be a great next move (ideally using channel N to control the 3 signals that would then be distributed on channels N, N+1 and N+2), but it's gonna be really useful already even unlinked ! (which is the case in other single-channel implementations like Stages for example)
I think Linking channels is not out of the question, as I already link the Recorders, but it requires a lot of re-thinking about how linked channels work in general. E.g. would there be different links? one for recorders, one for Lorenz attractors? Or would there be just one link for everything? Linking could also be handy for pitch and chords. Obviously though, some settings wouldn't be affected, and then trying to create a UI that ties it all together elegantly will likely require a bit of work. I'll create a ticket for it for further discussion
How are X, Y & Z distributed on the Morph parameter ? I.e. Z at -50... ?
Currently -50 is X
, 0 is Y
and +50 is Z
. They are Morphed together with the same mixing equation used for CV
and Out
waveforms.
I have one feature request already - the possibility to view the attractor(s) as a XY map instead of the usual waveform oscilloscope.
Hehe - yes, I thought about this almost immediately, the time axis oscillscope doesn't really convey whats going on with the attractor, plotting X against Y, or Y against Z, would be more helpful - but this would only be available for the Lorenz attractor, so I'm not sure exactly how to reconcile the UI/UX of switching between oscilloscope and X-Y plot.
@cdromain So I've implemented Copy-Paste of channels, which actually "unlocks" being able to get all 3 channels of the Lorenz equations.
The workflow is like this:
0
so its using Y
, also set the frequency as desiredX
and Z
.The downside, of course, is that you cannot modify the frequency all at the same time, so if you change one they will go out of "phase" and you'll need to re copy-paste them.
I'm not sure this is the best workflow, but its a work-around at least for the moment.
@ostenning Thanks man, that's great news - glad to now be able to copy/paste channels, great workflow improvement 🙌🏼 And a clever workaround indeed !
@cdromain I've got a pretty rudimentary X-Y plot as you suggested, it works pretty well. Not finished yet, but it will be in 0.6.0, and I've removed the stair-stepped approach as you suggested, and reimplemented the algo so its better. I think it works well but I need to figure out what to do with the "Time" units which is a little ambiguous 👍
Hey @ostenning thanks, that's exciting news ! Can't wait to test the new FW 🙌🏼
Feature request & motivation
Would be amazing to have chaos-based modulation as a wave option besides traditional waveforms and random, like a Lorenz or Chua strange attractor (or other - see Vult Caudal's different approach). Chaotic modulation can be more interesting than pure random as there is some kind of pattern going on, within finite boundaries, which makes it a mix of random and deterministic. Love those drunk/super slow modulation sources for drones and I think such thing would feel right at home within the Juniper, extending its palette quite a bit into less ventured territories, making it even more versatile.
Source : Lorenz system - Wikipedia
Details
Modules implementing such chaos-based modulation
Triple Sloth — Nonlinearcircuits : This module contains 3 Sloth chaos circuits. Each one runs at a different rate; Torpor takes approx. 15-30 seconds to travel around 2 strange attractors, Apathy takes 60-90 seconds and Inertia takes 30-40 minutes.
Ornament & Crime Low-Rents : Low-rents is a port of the Lorenz attractor modulation generator from the easter egg in the Mutable Instruments Streams module, to which Rössler attractors have been added. Two independent function generators are provided (referred to here as Generator 1 and Generator 2), with each generator calculating both the Lorenz and Rössler functions simultaneously, using the same phase accumulator, but with the rate/speed of each generator independently settable. Both the Lorenz and the Rössler functions output three values (x, y & z), and various combinations of these can be mapped to the four output channels. The chaotic strange attractors work best as slow modulation functions.
Orbit 3 – Joranalogue Audio Design : In everyday usage, 'chaos' means 'disorder, randomness'. In mathematics however, chaos has a very specific meaning. Chaos theory deals with systems exhibiting highly irregular behaviour, seemingly random yet completely deterministic. Applying this to the world of modular synths opens up a whole new world of modulation opportunities, introducing a natural irregularity to otherwise purely ‘mechanical’ music, yet with much more control and repeatability than just simple randomness. In chaos theory, the combination of all possible oscillations at a specific set of parameters is known as the ‘attractor’. Orbit 3 incorporates a modified electronic analogue of the classic double-scroll attractor. Since it contains some (bi)stable regions in addition to chaotic ones, this type is known as a ‘strange’ attractor. https://youtu.be/GuCcnCAm3cE
Zlob Modular: Diode Chaos : Diode Chaos is a 3hp analog chaotic low frequency voltage generator. It is a unique module because it has never existed as an electronic music instrument until now. The module is based on a circuit from a paper called “A simple chaotic circuit with a light-emitting diode” written by Volos, Wang, Jafari, and Kapitaniak. Diode Chaos produces 3 phases of interrelated morphing voltages including a chaotic trigger out. The range is 20-30 seconds a cycle up to audio rate, although only the X out and TRIG out go up to audio rate. The frequency is controlled by the RATE knob. Each output exhibits different behavior at different rate settings. X,Y, and Z outs like to stay in the 4vpp range although at different RATE settings the outs can reach 10vpp. The TRIG out chaotically releases 0-10v triggers although sometimes it will spit out smaller voltage peaks.
Mutable Instruments Streams easter egg : The module turns into a generator of chaotic signals (Lorenz system).
Mutable Instruments Stages Qiemem Alt. Firmware : Double-scroll attractor, a smooth chaotic system similar to the Lorenz system (single, looping, non-gated)
Expert Sleepers Disting MK4 and Disting EX M-8 Chaos algorithm : This algorithm generates chaotic CVs and/or gates according to the Lorenz equations. The X & Y inputs set parameters of the equations – X affects 'r' (aka 'ρ'), and Y affects 'b' (aka 'β'). With the CVs at 0V, the parameters are the classic values as studied by Lorenz (28 and 8/3 respectively). The A & B outputs generate the x, y or z values of the Lorenz system, or gates based on these values.
Vult Caudal : Just discovered it. It's a very interesting module to add to the list as a reference, as its chaos signals do not come from the strange attractor paradigm but a more mechanical approach (based on the model of a multi segment pendulum, with other models available in the latest design). Still early stages, Leonardo told me that more documentation was coming.
Neutron Sound Dust of Time : A special addition to the list as this module is many things in one, starting with 2 stereo oscillators, but also comes with serious modulation power onboard, with LFOs and chaos modulation (and 2 CV outputs). What is even more interesting for a Juniper implementation is that Dust of Time lets us choose between several types of attractors (Lorenz, Chen...) : there are 2 chaos generators with separate X and Y outputs. the left encoder selects the type of chaos attractor, and the right controls the rate of movement. https://youtu.be/C-iisNg5O2Q
Additional references