Yeah I might be mixing it up. @thetechnobear How would that work if it gets implemented?
SirSickSik Contributions
oeh lala, I just made a delay where you can set the feedback-time independent of the delay time.
just tried it out at a very short,karplus-strong delay and it had a maximum tail of 20 seconds, though I can still make it a couple of times longer XD
That sounds extremly promising and would be unleash quite some potential in using multiple axoloti. Will there also be a possibility to stream control data back and forth?
Sounds like a great Idea since I often run out of sram. However I can't find the new mix objects, I tried to sync libraries several times...
MOD NOTE: Ive moved the discussion about digital audio between axoloti to a separate thread. can we please keep discussion on contributor threads on topic i.e. about that contributors objects.
Cheers Mark
ghehe, STILL haven't updated to new version (sorry, working lot with my regular job, next to that, I'm having way too many ideas at the moment that I want to work out and atm there is also a 3-day party in my city )
but you should be able to get the modules on github..
NEW MODULE
PATT
"gateFiller"
almost forgot about this one..
Euclidian gate generator and random "trigger-filler".
Randomly fills up the array with gates until the desired amount of gates is reached.
When the "filled" control is dailed up, it randomly adds more and more gates to the remaining positions.
When the "filled" control is dialed down, it randomly removes more and more gates from the array.
When "filled" is set to zero, no random gates will be generated, when it's set to full, the whole pattern will be filled with high gates (which then stops being randomness of course)
Controlling the "filled" externally wil slowely transform the randomised pattern, randomly taking gates away and adding others.
Next to the random gates, there's also an euclidian pattern generator.
-start sets the start-count-offset (when zero, first gate on will always be on the first count).
-step sets the stepsize between gates (when set to 5, each next fifth position in the array will be high, wraps when max-count is reached)
-fit sets the amount of steps that will be set high. NOTE! Depending on the stepsize and quantification this could or could not fill up the entire array: when max is set to 32 and stepsize is 4, it will repeat putting the same positions to a gate high over and over, skipping all other positions.
-Quantification controls set the division that the notes may be filling (eight, quarter, half, whole beat) The higher the setting, the larger the quantification step (power of 2).
NEW MODULE
DELAY
"KarplusStrong"
Karplus-strong synthesis delay
-pitch tuned to the same pitch of a normal oscillator. (5=440hz)
-tailtime sets the fade-out time of the feedback, with "strength" set to zero, this can take up to 40 seconds or maybe even longer!
-damp sets the frequency of the internal lowpass filtering, together with the "strength" this sets the character of the string
-strength sets the filtering strength (ratio between non-filtered and filtered signal, the higher the strength, the stronger the dampening)
-influence sets the amount of influence the pitch has on the damping control. if set to zero, damping will stay the same, when fully open, dampening frequency will increase corresponding to the pitch. Normal string-behavior would be higher then zero, but not fully open.
I noticed that the version I uploaded still had the "position" control on it, this one ain't working, though at the moment I'm also making a version WITH a working strike-position control.
SO...
NEW MODULE
DELAY
"KarplusStrong2"
same module, but added the "position" parameter which controls where you strike the string. This feeds the incoming audio into two seperate buffer positions in between the feedback-writing position and feedback-reading position. This creates a comb-filter-effect on the strike (short noise/pulse/oscillator burst at audio input), changing the tonal character of the feedback.
now also has a filter "mode" control to mix from LP through BP to HP. Dampening name is changed to "color".
don't forget.. you don't need to use noise.. I found out that my wavetable oscillators can do some pretty awesome jobs for cello like instrument (slow-attack envelope on strike-input audio) as well as the 8xFM osc (bell tones) and the PLL oscillator (guitar) phase-locking to the karplus-strong (mixed) output. and if you use noise... the biquad BP is the filter to use..
more goodies coming up! (I still owe some song-pattern and harmonic-scaling modules)
Hey hope you had a nice feestje then How do I open the objects then? downloaded them but I dont see them in the axoloti browser. I put them into the axoloti folder where I can usually see my own subpatches and so on.
I can only recomend upgrading, works flawless till now
hmm still trying to use the mixer objects but im getting big errors...
java.lang.ClassNotFoundException: is-copy-enabled emoji-size-boost
java.lang.ClassNotFoundException: is-copy-enabled emoji-size-boost
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.simpleframework.xml.strategy.Loader.load(Loader.java:50)
at org.simpleframework.xml.strategy.TreeStrategy.readValue(TreeStrategy.java:163)
at org.simpleframework.xml.strategy.TreeStrategy.read(TreeStrategy.java:102)
at org.simpleframework.xml.core.Source.getOverride(Source.java:360)
at org.simpleframework.xml.core.Factory.getConversion(Factory.java:207)
at org.simpleframework.xml.core.Factory.getOverride(Factory.java:139)
at org.simpleframework.xml.core.ObjectFactory.getInstance(ObjectFactory.java:63)
at org.simpleframework.xml.core.Composite.read(Composite.java:139)
at org.simpleframework.xml.core.Traverser.read(Traverser.java:92)
at org.simpleframework.xml.core.Persister.read(Persister.java:625)
at org.simpleframework.xml.core.Persister.read(Persister.java:606)
at org.simpleframework.xml.core.Persister.read(Persister.java:584)
at org.simpleframework.xml.core.Persister.read(Persister.java:543)
at org.simpleframework.xml.core.Persister.read(Persister.java:521)
at org.simpleframework.xml.core.Persister.read(Persister.java:426)
at axoloti.object.AxoObjectFromPatch.(AxoObjectFromPatch.java:48)
at axoloti.PatchGUI$4.drop(PatchGUI.java:411)
at sun.awt.dnd.SunDropTargetContextPeer.processDropMessage(SunDropTargetContextPeer.java:538)
at sun.lwawt.macosx.CDropTargetContextPeer.processDropMessage(CDropTargetContextPeer.java:143)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchDropEvent(SunDropTargetContextPeer.java:852)
at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:776)
at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
at java.awt.Component.dispatchEventImpl(Component.java:4744)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4599)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4461)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
the new version comes with an undo function you know
most of the times if you got a big error code, it's probably that you're trying call upon something which isn't there..
so, did you name the reference-object correctly? (just copy-paste the name of the object you want the "data" from in the object-reference box.)
sorry for the typo... "bit" should have been "big" or "long"
SirSickSik's game-of-life gate and cv sequencer is starting to get shape
though, it uses quite some cpu for short bursts.. so it's more of a nice toy then really usable in a single axoloti.
Though, then again, if you have multiple axoloti.. you could use one for generating midiCV signals and midi-note and the another to do the audio.
hmm, on second check... it does play 6 KarplusStrong2 modules without clicking (cpu use as 51%)
game of life just entered the axoloti!
NEW MODULES:
SEQ
"lifeGame"
core Game of Life module that uses rules similar, but not the same as Conway's Game of Life.
1st difference is that cells not only are dead OR alive, they can have 3 different "life" values.
Black is an invinsible "God". It cannot die, but it does create.
White, of course, is "dead" and can become alive when the total amount of the cells around it is exactly 3.
Light grey is the first level of existence and will survive and gain a level (become dark-grey) as long as the total amount of the cells around it is 2 or 3. If the total amount is below 2 it dies, but also if the total of the surrounding is higher then 3. As it gets "fought" by "overpopulation" it loses half of the difference between the total of the surrounding cells and it's own value.
Dark grey is the second level of existence and stays the same as long as the total amount of the cells around it is 2 or 3. If the total amount is below 2 it loses 1 level and becomes white again. When it gets "fought" by "overpopulation" it loses half of the difference between the total of the surrounding cells and it's own value. So 2 dark-grey cells can kill a white cell, but at least 6 light grey cells are needed to kill a dark one, or 4/5 cells will take off 1 level.
"lifeXYread"
CV readout module for reading out particular XY coordinates of the game of life (externally controllable). CV can be scaled between minimum and maximum value and it also generates a high-gate when the selected cell is alive
"lifeRow"
CV readout module to use an entire row for setting a CV value. CV can be scaled between minimum and maximum value
"lifeSurface"
CV readout module that selects a 2D surface on the lifeGame module and scales the outcom of the total of the cells between the min/max settings. Note though, that for maximum value, all cells should become black, which rarely happens, so output has somewhat of an exponential curve.
NEW MODULE
HARMONY
"guitarScalar"
Guitar-styled note-scaling module.
Has 6 outputs to control 6 strings to play chords.
Chords are based on the standard 1st-position chords and are ordered in the C-scale order:
C-D-E-F-G-A-B following the modes of the scale.
I-ii-iii-IV-V-vi-viiDim
Each of these chords can be played on any position of the neck as a barre.
Variations on the chords can be made using the variation inputs. These will add/subtract notes from the chord for each 2-string combination (low,mid and high strings). This way you can quickly make variations on the chords as well arpeggio's.
All the generated notes will be scaled to the selected scale. 46! scales are included and each scale can be set to a key. See the Local Date for which scales are included. Scales are somewhat ordered on alphabetic orde (except the main major/minor scale variations which are the first ones). You can always set them to another order if you want, but keep the total at 46 as this selecting value gets wrapped above 46 in the code.
NEW MODULE
HARMONY
"leadTuner"
A scaling module that I made before the guitar tuner. (I'll recreate the scales of the guitar tuner into it tonight, so they can be used together)
Outputs the notes for a 4-note chord as well as a bass-part and melody-part (bass and melody parts could be controlled by one of my pattern modules)
The different controls from the guitarTuner allow it to be an accompanying module to provide notes for even more modules
NEW MODULES
PATT
"dualEuclid"
generates triggers after each set amount of steps. Two stepsizes at the same time.
"Euclid Toggle"
Euclidian toggling gate generator
Feed it a counter and it will toggle the gate everytime one of the denominators wraps the count
"autoKnob"
knob with an inbuild (randomisable) automator and pattern selector for live use. Doesn't save it's patterns! Pattern size and amount of patterns can be set using the attributes.
you can randomise just the selected pattern or all patterns at the same time.
Use the max/min knobs to set your desired output scaling
"partCount"
only lets the count through for a part of the whole range.
The last count position can be kept when "sustain" is high, otherwise it goes back to 0 when it reaches the maximum length.
controls for:
-maximum count range (wraps when reached)
-play length (the length of the count that is passed)
-offset offsets the part that is let through, so it only passes after a certain step.
MIX
"quadrant"
quad XY-crossfader
"deskMix1"
"deskCtrl1"
simplified versions of the deskMix2 and 3 modules and their accompanying deskCtrl2 module
only feature volume, mute and solo controls for each channel
GAIN
"quadVCA"
4 vca's in one to save up some space
LFO
"envLFO2"
added a second pair of divide and multiply controls for controlling the rate of the lfo.
the first pair controls the length of the envelope relative to the whole cycle
OSC
"table1D"
simplified version of the tablemorph oscillator with only a single morph control, useful for if you need a table oscillator with a bit less power then the tablemorph. Though, next to table morphing, it also is able to morph through ratio's of it's root-pitch with both frequency multiplier as well as divider.
DON'T FORGET TO ADD AN ENVELOPE/VOLUME CONTROL AT THE "ENV" INPUT!!!
wavetable oscillator that can linearyly morph through the table in a set amount of steps and stepsize.
loads wavetables created with the "TheCreator" module.
Has external frequency modulation, phase modulation and sync.
-hrm and div allow to set the oscillator to a ratio to the root-pitch
-extFM controls the external FM width
-waveform offsets the startposition of the table readout
-LP dampens the high frequencies/smooths waveform
-mix controls the morph through the wavetable AND harmonic ratio offsets
-step sets the stepsize with which you morph through the table
-quant sets the amount of waveforms you go through with the mix-control
-Mstep controls the stepsize of the harmonic multiplier
-Mrng sets the maximum harmonic multiplier that can be reached
-Dstep sets the stepsize of the harmonic division
-Drng sets the maximum harmonic division that can be reached
"tablemorph2"
the other way around.. the expanded version of the tablemorph. Has some extra controls for more morphing and funky business
LOGIC
"rndAB"
randomised A-B switch for gate signals
DELAY
"rottenDelay"
dirty rotten delayline with delaytime, feedback, samplerate, bits, LP damp, wet and dry control
sweet, with a bit of thinking I reduced a guitarwave-shaped oscillator taking 72% all the way down to 4%!
the "hardcore" wave-calculation, providing the basis of the needed harmonics, is still available (pick-strike position and read-position by guitar-elements), though moving them will result in a bleep as it's calculating a new 2048-point wavetable for 128 harmonics.
using the phase-modulation of the bassOsc/SiTrSAPuOs, the wave is still pw-controllable though, in the way the "position" parameter shapes the wavetable. I also added two other phase-modulation controls, so altogether there are 3 ways to alter the waveshape realtime
so!
NEW MODULE
OSC
"guitarOsc"
-features pulsewidth, start-shift (start) and pick-up (mod) modulation, all extern controllable. (though these are all only approximations, reshaping the wavetable)
below the continuous controls, we got "fixed" controls, even though you could change them live, this will create a bleep as it has to recalculate the waveform.
-damp: dampening-factor for each next added harmonic corresponding to harmonic number.
-harmonics: how many harmonics will be generated for the wavetable (low numbers reduce recalculation time!)
-jump: "jump" size for next added harmonic, skipping harmonics in-between
-max: sets maximum harmonic number that can be added, wraps when above the max.
-position: sets the read-out position of the guitar-element
-strike: sets the position where the string is struck
ps. pairs very well with the expLPG (my gain folder) and the expCurveK (my math folder) modules