Tiar / SmashedTransistors Contributions


#104

These I2C OLED displays are easy to connect to the Axoloti, you just have to add two pull up resistors.

If you use the object I made, it is quite easy to use (see the help patch Help -> Library -> Community -> tiar ->HW -> OLED128x64).

If you want to draw fancy stuff it will be much harder, you will have to code very low level graphic algorithms and mess with some sort of double buffering.


#105

Cool sounds great. I am not that much of a hardware fiddler, so this sounds great.

I just want some kind of parameter feedback. Maybe two of these OLED's would be great.

On Organelle they just updated the code for the display, so now you can actually draw stuff on the display, not only letters. Its pretty cool. Haven't dug into it yet, though, but as far as I know it is mostly for showing simplestuff like an adsr envelope.


#106

I avoided double buffering to save precious RAM for audio purposes, thus some limitations in my object.
As my object allows to draw the content of an oscillo scope object, it may be easy to make an object compatible with a scope object to draw other curves, such as envelopes.

If you want to use two displays, verify that you can change their I2C address (generaly with some strap or soldering desoldering a 0 Ohm resistor).


#107

On Axoloti I dont really need the graphics so I can do with the simple version and save ram for other puposes.

Thanks for the tip :slight_smile:


#108

:space_invader::space_invader::space_invader: :space_invader: Object tiar/8bit/gen t :space_invader: :space_invader: :space_invader: :space_invader:

help/test patch available in
Help -> Library -> Community -> tiar -> 8bit -> gen t
(triggered by C4 and D4 keys)

This object is directly inspired by this video and page:

  • t is the counter
  • at the input it is cropped to 8 bits and fed to the unix output
  • the sample rate is typically 8kHz

Now, you can experiment and use in the Axoloti this kind of 8bit sound with the tiar/8bit/gen t:

  • click edit to enter the one line code
  • reset resets the counter to zero, it can be useful if you want to trigger the generator from a keyboard
  • offset is an offset on counter t, it allows to reset where you want
  • clkDiv is the clock divider, 6 is 48kHz/6 i.e. 8kHz.

Now, let's experiment and share some 8bit formulas !


I begin:
accelerating engine:

  t*t>>15^0x55555555

" t*t>>15 " generates a pitch increasing sawtooth
" ^0x55555555 " inverts one in two bits, it transforms the sawtooth into a more complicated waveform (sort of fractal)
(this trick is the base for the dist/fractalI distortion)


#109

ahem, this has been done before :slight_smile:

see here: https://sebiik.github.io/community.axoloti.com.backup/t/hellcore-contributions/1745


#110

Thanks @lokki, I missed this one ! it really looks great and includes some presets !


#111

tiar/dist/fractalI

see the help patch to get an idea: menu: Help -> Library -> Community -> tiar -> dist -> fractalI and fractalI_multisin

This is a very special kind of distortion that generate lots of harmonics.
It is roughly x8 oversampled to limit aliasing.

The help patch uses a simple sine wave as an input.. but the output is somewhat more "powerful".


#112

Just want to give a huge thumbs up from here @SmashedTransistors. Your objects are really cool and for a beginner coder like me, I learned a lot from looking at some of your objects.


#113

hey @SmashedTransistors any chance the iteration speed of these fractal distortions could be modulated? that would add the possibility to have slower evolving distortion sounds...


#114

Thanks @jaffasplaffa,
I plan to take a "break" to add some comments in the patches and in the objects code.


#115

Hi @lokki,

The distortions themselves are static functions (for a given input value, they will always give you the same output value).

The fractal distortions in the examples seem to be modulated because their inputs are modulated.

The inputs can be modulated in many interesting ways. I have experimented with some and
I have added a few help patches in Menu: Help -> community -> tiar -> dist

  • In fractal I.axh It is an amplitude modulation by an ADSR envelope. You can change the ADSR settings to change how the distortion evolve and add and ADSR andVCA after the distortion to have separate distortion/volume envelopes.
  • In fractal I_multiSin the modulation is caused by the slight detuning of the oscillators apart from exact harmonics, you can change the detuning settings of the detHzLH objects to tweak the evolution rate.
  • In fractal II.axh The modulation is caused by an input offset, you can change the rate by tweaking the LFO rate. (I used MIDscopes from @SirSickSik so that it is easy to visualise why I call those "Fractal" ).
  • In fractal III fat.axh I use detuning and an irregular modulation of a high harmonic to get some sort of old school effect.

Notes:

  • I have improved the oversampling algorithm so that it uses a triangle window (instead of raw "box window").
  • Fractal I is based on one in two bit inversion
  • Fractal II is based on Gray code
  • Fractal III is based on bit swapping by pairs

#116

Sounds great and would be appreciated. Some of your code... Just seems like voodoo to me, haha :slight_smile: Mostly because its a lot more advanced than what I understand atm...... :thinking: :face_with_raised_eyebrow: :sweat_smile:

But its getting better. I actually got a simple VST written the other day, using Juce. Just one of the simple tutorials and it actually loads/works in Logic, which made me pretty excited. But so many things to learn in audio coding and i am really glad that we have these open source projects, where there is so many resources available. But going from Axoloti objects to Juce, where I have to worry about classes and all kind stuff which is not needed in Axoloti... Is another world. Should have started with coding 10 years ago :slight_smile:


#117

haha, thanks for the clarification. i was obviously a bit in a hurry when i wrote this. by looking at the help patches it is obvious that the "modulation" is external. great!


#118

Well, i tend to use short variable names to get compact and more readable code, but i try to stick to the same names (i.e. "p" is for phase, "dp" is for delta phase(phase increment)... )

That's great news. :smiley:

I tried to make some VST "some" time ago:

http://www.vst4free.com/free_vst.php?id=2219

But I let it go because I spendt more time on GUIs than on DSPs.
I guess that things has evolved since then.


#119

well, that is/was a GREAT GUI!!!


#120

Yeah thats a really cool GUI.

Yeah today things are much easier. Juce handles a lot of the stuff that make the process of making a plug in very long. it handles the framework, libraries etc. Even the GUI, you can use some bundled knobs faders etc..

I did try a few times but when I actually got it working it only took me like a couple of hours getting it working. And Juce also offers a build in test system, so you can actually code in "real time" almost like using Axolotis editor, but just with VST's :slight_smile: Its pretty cool .All though first one I did, I made it in Xcode. I need to get that set up, so I can do it "real time" :slight_smile:

A lot of the big vendors use it too. I think Eventide makes the UI in Juce and a also Slate Digital for example. So its definately "professional standard".


#121

It’s not free commercial use, though.

a|x


#122

Juce?

I am not 100% sure about this, "legal terms" are not really my speciality, but I think they have different licences and I think even with the free one you are allowed to sell plug ins, you just have a limit of how much dollars you are allowed to make from a personal account. The bigger accounts, which you pay for, you can make unlimited dollars :slight_smile:


(If i understand the above correctly)

Anyway, Maybe we should move this Juce talk to another thread, or just call it quits, so we dont spam your contribution page :wink:


#123

Back to the Fractal distortion topic...

Here are some more explicit graphs of the distortions functions :
(poitive part of the functions, the negative part being symetric).


Fractal I is based on one in two bit inversion


Fractal II is based on Gray code


Fractal III is based on bit swapping by pairs


Fractal IV


Fractal V


Fractal VI

[EDIT 20 jan 18]Added Fractals IV, V and VI