Tiar / SmashedTransistors Contributions


#102

Object tiar/HW/OLED128x64

try the help patch to get an idea: menu: Help -> Library -> Community -> tiar ->HW -> OLED128x64

This object allows to use a 128x64 OLED I2C display (using PB8 and PB9 in I2C mode).

if mode == 0 the OLED will display line1, line2, line3 and line4 strings (up to 11 characters) :

if mode == 1 the OLED will display line1 and a graph corresponding to the scope object linked in the "scope" parameter:


type can be set to SH1106 or SSD1306. 0"96 displays are usually SSD1306 while 1"3 displays are SH1106.

I2CADDR is the I2C address of the display, it can be 0x3C or 0x3D.


Notes:

  • You can use only one instance of the object. If you want to use two displays (with àx3C and 0x3D I2C addresses) you can use the extended object OLED128x64Dbl
  • This object has been designed to have a limited RAM footprint (it does not use double buffering).
  • Objects tiar/string/mux2 and mux4 allow multiplexing strings (by multiplexing their pointers, not by copy) they can be used as inputs for OLED128x64 (see the help patch)
  • Object tiar/conv/f_to_c converts fractionals to strings on six characters (format: sddd.d) (see the help patch)
  • see also https://sebiik.github.io/community.axoloti.com.backup/t/spi-i2c-oled-display/638/24

SPI/I2C OLED display
Screen for the axoloti
#103

Hey @SmashedTransistors

How complicated is it to get those OLED displays working with Axoloti?


#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