SirSickSik Contributions


#705

NEW MODULE

DYN

"compSTSC"
a stereo compressor and side-ducker in one.
Same as former compST module, but:
sidechain input has it's own peakfollower, treshold, ratio, attack and release that lowers the treshold of the stereo compressor.
This way the stereo compressor has normal behavior in compressing the stereo signal, allowing a fat bass, but will be ducked when for example the basskick kicks in.
Works really nice with a distortion behind it too (when sidechaining a bass with a kick).


#706

a short demonstration of my preset-morpher module.
The module ain't really finished yet, as I still need to know how to get parameters' ranges for the preset-randomise function..

New presets are made by a push on the "randomise" button, When a nice patch was found, it was saved in one of the 16 preset slots (selected by a midi-note). After this the presets can be selected by sending the same midi-notes, using the midi-pressure to control morph-rate between presets. When midi-gate is off, the parameters stay at the last position and will morph to the next preset from there if a new note is played.

The synth-engine consists of 3 "sine-wave" oscillators that can do FM, PM and a harmonic-morph-based-FM, together with 2 LFO's, 2 ADSR's and a 2nd order EQ (2x the same EQ). Melody is created using my "rndPattF" module


#707

NEW MODULE

DYN

"copycomp"

copies the amplitude and envelope of one signal unto the other.
Uses two envelope followers and compares the signals so the "in" signal will follow the "copy" signal.

Useful after filters that take away lots of volume from the signal (eg. biquad). Put the filtered signal into the "in" input and the unfiltered signal into the "copy" input. This way the filtered signal will return to the original level and envelope, though filtered.

"in" input uses a "hard-attack" (instant input follow) but uses the same decay setting as the copy input. The attack-time only influences the copy-input, so smooth attacks can be created.
"ratio" sets the amount the in-input should follow the envelope of the copy-input.

Of course, you can also use an interpolated velocity-controlled envelope-generator..


#708

Gonna take a look at your new compressors later today (this new one and the one you made last week). I love playing around with compressors, and I'm always on the lookout for something nice and punchy (like an SSL bus compressor). Looking forward to hearing them, the descriptions alone sound pretty neat, the way they're set-up!


#709

NEW MODULE

OSC

"contivari"
a looped-formula-based wavetable-oscillator that continously morphs the wavetable.
It's like a contious mandlebrot loop, updating and calculating using it's own values as X coordinate and Y as offset to the current value on the x-position.
4 formula's are provided, but can be altered by embedding the module and by following the instruction in the K-rate code. As long as you make formula's that put "X" into "tX" and "Y" into "tY", you should be fine


#710

NEW MODULE

LFO

"lfoCORE" and "lfoSLAVE"
Like the filterCORE and filterSLAVE module, this combination provides one module for the lfo-code and seperate, independent modules to recall that code with their own parameter-settings.
This way the whole lfo-code doesn't need to be copied when you want to use multiple lfo's, saving lots of memory when using lots of LFO's.
Also, like the lfoCORE/SLAVE, this provides an object-based use of the code in your own modules, enabling, for example, modular modulation/filter sections which you can dis/en-able in any part of the routing using just a couple lines of code.

of course the basic waveforms are provided, but also several others, based on sweet eurorack LFO modules. A total of 16 waveforms are provided.
A "precision" control lets you quantize the waveform to steps.
The "steps" control multiplies the single-cycle phase, changing the step-positions when quantized or creating more waveform cycles per phase-cycle.
Rate of all LFO's is automatically host-synced by the lfoCORE module (HS-input) and phase can be reset with the r-input independently on each lfoSLAVE module.
A slope control is added for further modification of the waveform.
A k-rate 12dB filter enables you to dampen the waveform.

64 LFO's and a BPMext module take 18%


#711

you don't actually need to create 2 objects like this to share code...
you can achieve what you want (shared code) by defining functions in header files with the noinline attribute e.g

 __attribute__((noinline))

this will define 'normal' functions without inlining (duplicating) them.
you can see an example of this with my 'push' object.

the advantage of this approach is, users of your objects don't have to care about this 'optimisation', they just use your lfo objects as 'normal'.

also I suggest like my push object, you split the code into headers and source files, at the moment it makes no difference BUT with the next release we will allow for compile units, and having the code already split will make that transition 'trivial'

a word of caution (for either approach ), inline-ing is done by default for good reason, since we usually want best performance in audio applications (esp. given limited cpu, being used RT) - even slow k-rate code, could give users audio issue, as its all has to be executed in the same time slice.
An unfortunate part, is users currently have few ways of determining which part of their code is taking too much time to execute, so building big patches with lots of un-inlined code, could be a frustrating experience.

anyway, not saying its not a good idea/ useful, merely we have to recognise its a space vs time optimisation... thats it needs to be handled with care, nothing in life is free :wink:


#712

I understand, but I'm not really familiar with writing headers and sources.
It's just, for certain patches I just want to have modular modules in which I can select different types of functions, so to create a far wider range of sounds with big differences in characters.

If I have a bit more time, I'll look into your push-module.
Right now I just want to finish my patches as I've received my latest "need" for my outdoor setup:
1 case containing:

5x axoloti's (midi&audio currently still serially connected, but a couple of mixer stages and midi-thru are going to be added)
3x powerbanks with a total of 48.000mAmp (enough for for over 72 hours I think)
1x quneo controller
(optional) 1x beatstep pro and 1x genoqs Nemo midi-sequencer 1x korg nanoKontrol

1x jbl Xtreme speaker (and I know a couple of other people owning a Xtreme)


#713

Thank you for the flooper, it's so close to everything I want in a looper. I've got some crazy requests for this module! Is there any way to add an automatic cross fade or something at the loop points to get rid of clicks? I'm just spoiled by guitar looper pedals that don't click. How about start and stop for each track, or maybe even a speed knob to slow down/speed up the tracks, that also goes forwards/backwards ala Count to Five pedal or the filtatron sampler/app... Basically want to turn it into an Electrix Repeater, ha!
Is there something like this for midi?? I want to be able to loop 4 midi tracks, with independent loop size/speeds, be able to transpose, start stop separate tracks, etc...
And thank you in general for all your work, you've added immense value to the Axo, your work is much appreciated.


#714

I won't change the Flooper module as I made it for a friend of mine, but I could create a new version of it.
I've done some other looping modules lately, if I remember correctly, based on splicing and stuff like the make noise "morphagene" (eurorack modular). But that one is more for creating special fx.

Currently I'm (again/still) busy on getting my 5-axoloti setup to work well. I thought I was close but it seemed the speaker I bought has such a ridiculous amount of bass, that I need to take special care of that.. :frowning: Also, I want to be able to morph presets for all my sounds and it seems like it ain't possible the way I did before (central midi-axoloti sending continuous midi-pressure for multiple channels to control the morphing next to the clock, drum-triggers and 3 channels of note information->midi values/channels somehow got mixed up, controlling each other.)
Though, a new audio-looper might actually be my own savior here.

As for your midi looper, that shouldn't be too hard to build with factory objects. Just record the gate, note and velocity information into a table (ps. take velocity and gate as one value->0="off", everything above zero is "on" and save them 8bit to save space).
Take a counter that just keeps on counting further during record (eg. max count at 65000), when record ends, latch the last count and send that back as the maximum count-length during playback (eg. use a mux to select between the play-length for playback and maximum count value during recording).
The counter is used as the table-position for both recording and playback. So you could change the start by resetting the counter or adding a "phase" shift to the count (use my divremc module with external divisor-input to keep it within the same bounds as the counter (also use my counter as it has an external length control)). From there you could also use my pattern modules to "modulate" the counting process.

argh... couldn't let it go :laughing:
clickless repeating is done, now to find a way to independently pitchshift/timestretch this thing :stuck_out_tongue:


#717

sorry, atm I'm at a project myself, so no time...


#718

he jaffa I want to try the stretch patch but there is objects missing, a couple of user/blend 4. Could you repost it with these objects embedded? curious to try your timestretching :slight_smile:


#721

could we please do this in another thread?


#722

Just a heads-up to let you know /sss/dyn/compressor is completely dead.

I fed an audio input into it, attached a bunch of polar dials to it, and fed it to the output. I can see the audio in meter getting a signal but nothing will pass through the compressor, no sound and the audio out meter is dead. Just spent over two hours having fun with your compressors, and they all work apart from that one, unless it's something I'm doing wrong, but I can't think what, cause the way to set it up is obvious.


#723

I'll take a look at it, thanks for letting me know


#724

oh so close,
audio-buffer recorder with:
-clickless looping
-normal play-speed shift (speeding up/slowing down recording, both time-stretching and pitchshifting effect)
-pitchshift (shifting the pitch of the sound, while keeping time-stretch the same)
-stretch (stretching the timing of the sounds while the pitch of the sound stays the same)
-all three pitch/stretch controls respond in log-style (note info -> +12 =1 octave, -12 = -1 octave)
-independent window size for stretcher/pitchshifter
-length control for total loop-length

but there's still some click caused by the pitchshifter, trying to fix that atm..
oh that was quick... 10 seconds.. XD

wow, sweet, it now even does live-modulation with a continous recording.. :stuck_out_tongue:


#725

I've just connected the dials myself and it worked right away.. sure you opened up threshold and gain?
I've changed some things so the compressor can now actually have a threshold of -60dB.. completely silencing the output (eg. slow attack for short plops)


#726

Thanks for looking into it, Remco!

Not sure how that happened then, cause compressors and parametric equalizers are my favourite studio toys, so no worries there, I definitely had the dials set appropriately. I'll resync the libraries again and try the new version (sounds good), and let you know.

Cheers!


#727

I've got a problem..
I've now got a module that is capable of recorded/live pitchshifting, stretching, playspeed (both stretch and pitch), delay and granular synthesis...and, as asked, all clickless.. how shall I call such a module?


#728

Timesampler?
Pitchsampler?
2Dsampler?
3Dsampler

:slight_smile:

Anyway, Id sure like to check it out when it is done. And see how you implemented the independent timestretch and pitch functions. Does it stretch all the way to zero, no movement at all? This I am really curious about