SirSickSik Contributions


#417

Sounds great. Very useful. These will be even more useful if/when Johannes get streaming audio from one Axoloti to another working over USB. How is that btw going, @johannes?

Then you could use one Axoloti for sound sources like oscillators and samplers. And then stream the audio channels, more than 2(if 2 only you might as well just use L/R) to the next Axoloti which processes effects..... and so on...... And then use this mixer to control all the audio signals :slight_smile:


#418

Surely if it does 2 you could sill use the analogs as well giving 4.


#419

Yes if streaming audio give also we would have 2 analog + 2 streaming channels... That would be great :slight_smile: But if streaming audio will work, I think we woyld probably be able to use more than 2 channels... Hoping, anyway :wink:


#420

No work is being done on USB audio (afaik)
You might be confusing this with digital audio between boards , over x3 ( spi) which there is experimental code for.


#421

Yeah I might be mixing it up. @thetechnobear How would that work if it gets implemented?


#422

2 posts were split to a new topic: Digital audio between Axoloti Boards


#424

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


#425

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...


#426

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


#427

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 :stuck_out_tongue: )
but you should be able to get the modules on github..


#428

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).


#429

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)


#430

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 :wink:


#431

too......many......ideas......can't.....hold....my.....self..... XD


#432

You sir, are awesome.
Your productivity is an inspiration.


#433

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 :wink:


#434

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"


#435

SirSickSik's game-of-life gate and cv sequencer is starting to get shape :stuck_out_tongue:
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%)


#436

game of life just entered the axoloti! :smiley:

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.


#437

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.