Just synced libraries again.
Definitely not there, while the other new ones are.
Tiar / SmashedTransistors Contributions
Hi @blaerg,
They are in the patches, not in the objects.
They are, with many other patches in File (from the editor menu bar) -> Library -> community -> tiar -> ...
Problem on my end, then! A problem in awareness - I didn't even know this patches menu was there...
Another 'hidden' one is:
menu bar -> Help -> Library ->...
it directly accesses the "help patches" associated to objects
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
Screen for the axoloti
SPI/I2C OLED display
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.
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.
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).
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
Object tiar/8bit/gen t
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)
ahem, this has been done before
see here: https://sebiik.github.io/community.axoloti.com.backup/t/hellcore-contributions/1745
Thanks @lokki, I missed this one ! it really looks great and includes some presets !
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".
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.
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...
Thanks @jaffasplaffa,
I plan to take a "break" to add some comments in the patches and in the objects code.
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
Sounds great and would be appreciated. Some of your code... Just seems like voodoo to me, haha Mostly because its a lot more advanced than what I understand atm......
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