Tiar / SmashedTransistors Contributions


#150

great, thanks! hmm, i looked at your font file, nicely done! it made me think. maybe i'll roll my own with "graphic parts", lines, edges, solid filled, all empty, half full etc. that way one could draw simple stuff on the oled.

or asked in a different context, how hard would it be to write an object that reads an array of:

64x32 bits ( to display a "picture" (or a file with predefined arrays that can be selected via an inlet) based on your earlier comments a 128x64 array seems not doable, right? (without adding double buffering and cpu increase)

the array would be two dimensional, 4 bytes in height, 8bytes in depth (turned 90 degrees as your letters are)
or read a one dimensional array like this:
byte, byte, byte, byte <- first two columns of display (spanning all height)
byte, byte, byte, byte <- second columns
etc. you get the idea.

would be great to display simple graphic stuff like this.


#151

I'm really having fun with the display these days, but I do find myself tangled in the strings a bit.
As the OLED screen is limited to 11 caracters, it would be great to have some kind of scrolling string object, as illustrated in this next image.

Otherwise I've made a big measure counter using ascii art type of display on all 4 lines (it works well and looks not too bad).But I've never used so many mux and demux objects since having this screen :slight_smile:


#152

I wanted to make something very simple and low on RAM and CPU.
I don't think it is worth the effort to make something more complicated with such low resolution display with two-state-pixels (no graphic anti aliasing possible).

But you can give it a try.
The basic organisation of the display is 8 horizontal pages, each page being a band of 8x128 pixels.
In my code, I calculate the contents for the pages on the fly, thus, I avoid double buffering and save SRAM.


#153

That's a nice idea,
I think that it could be possible to do this.
I'm not experimenting with OLED displays these days, but i will come back to this topic next month.


#154

noise/cymb

see: menu: Help -> Library -> Community -> tiar -> noise -> cymb

A noise source useful in generating cymbal type of sounds.

(A rising edge on the boolean input changes the "seed" of the generator, it helps simulating hitting a cymbal on different places).

Generating cymbal like sounds is something quite challenging.
I fond a few papers in Sound on Sound about the topic:
https://www.soundonsound.com/techniques/practical-cymbal-synthesis
https://www.soundonsound.com/techniques/synthesizing-realistic-cymbals

I experimented quite a lot with these, but i was not convinced by the result i obtained.

Thus i listened to cymbal sounds and looked at sonograms to find what characteristics i wanted for a noise source.

  • lots of spectrals peaks and notches
  • beatings and pseudo random variations of the amplitude of the peaks
  • slow evolving position of peaks

To obtain these characteristics with low memory (no samples) and low CPU (no "physical" modelling),
cymbal uses 4 congruential pseudo random generators.

  • These pseudo random generators are used as complex waveform generators so, it is spectrally rich with lots of peaks and notches.
  • each pseudo random generators is reset with a different period (that produces beatings).
  • the reset value slowly changes with time, this makes the sound evolve with time
  • the 4 pseudo random generators are doubled with twin generators offset by half a period, this trick enforces the spectral peaks and notches.

Note that it is a noise generator, it can be used with dynamic filters and other objects to synthesize convincing cymbal - or other - sounds.


#155

You can try
menu: Help -> Library -> Community -> tiar -> string -> scroll


CaptainBurek Contributions
#156

noise/pink9octs

see: menu: Help -> Library -> Community -> tiar -> noise -> pink9octs

A low CPU pink noise generator.


#157

noise/forbac

see: menu: Help -> Library -> Community -> tiar -> noise -> forbac

This is a colored noise generator capable of some comb filter like sounds with low CPU and RAM.

It is based on a congruential pseudo random generator (overflow is not a flaw in this case)

r = r * 69069 + 1     (r being a 32 bit integer)

which can be reversed with a little bit of old black magic (also known as modular linear algebra)

r = (r - 1) * -1511872763

with these formulas it is possible to go forward and backward in the pseudo random sequence. (hence the name).
By doing so and by inverting some polarities it is possible to render sort of comb filtering effects.


#158

tiar/oscBnk/paraOpt and Osc_Bnk_I

see: menu: Help -> Library -> Community -> tiar -> osc -> Osc_Bnk_I and paraOpt

These are optimized oscillator banks to simulate String Machines

paraOpt is optimized with octave doubling, no LFO inputs and octave phase locked oscillators (to replicate specificities from some eminent strings).

Osc_Bnk_I help patch has been updated.


#159

tiar/PIT/oscLight and tiar/PIT/oscLightTri

Low CPU oscillators based on "pre integrated table" aliasing limiting.

oscLight is a low CPU oscillator.
oscLightTri contains three slightly detuned oscillators.

See the test patches in
menu: Help -> Library -> Community -> tiar -> PIT
oscLight
oscLightTri
oscLightTriPoly : an example of bright and smooth polyphonic synth :cake:

[edit] moved to tiar/PIT


#160

tiar/oscBnk/DyadBLI

just try menu: Help -> Library -> Community -> tiar -> oscBnk -> DyadBLI

This is a string machine object based on dyadic trains of band limited impulses.
High quality anti aliasing and 96 note polyphony.


Streichfett Exposed (Adults Only)
#161

tiar/filter/string1

see Help -> Library -> Community -> tiar -> filter -> string1

a low CPU multitap filter that can be used to add a stringy touch to a sawtooth.


This is based on sparse FIR filters.
These filters consists in a short multitap delay line.
Delayed signals are added and substracted to generate the output.
If the tap positions are genuinely chosen, the spectral response of the filter can be quite interesting.

Here is preset 6 (inpulse response and spectral response 0 to 24kHz):


#162

tiar/oscBnk/BLITstringFilter

96 note polyphony at 22%CPU
multitap filter of the BLITs before the integration solves many integration issues (drifting).
But it sounds more "hollow" than DyadBLI.

[update]
3 different objects that differ by

  • Improved output sparse FIR filters
  • octave impulse scheduling
  • LFO dispatch on notes

#163

Patch: "384"

File -> Library -> community -> tiar -> strings -> 384
Bright paraphonic synth... 384 oscillators for a single filter.


#164

Hi there!

I'm a devout user of your Oled objects, thanks a lot for these! Today I noticed a strange quirk: If I do "embed as patch/object" with them, they stop working. Never had this with any other objects. Any idea how to fix this?

db

(I want to start messing with the code so as to save me some SRAM...)

OLEDMWE.axp (1.1 KB)


#165

yes, since his object uses includes you cannot embed them. you will have to copy the object and the inc file to your local folder and edit that.


#166

Thank you! You live, you learn...
db


#167

Thank you sir for all your marvellous contributions. And especially for your violin patch. I've adapted it a bit for use along with Linnstrument and it's a great match. I still have to find a way to make it less resonating in higher registers but it's perfect as it is. I'm working on a semi-accoustic Axoloti instrument with accoustic resonator and your patch sounds very natural to my (amateur) ears. Thanks again!


#168

Hi @Captain_Burek,

I also use a .h file for my BLIT based oscillators. These avoid to have multiple instances of constant tables and save some memory.
The OLED object does not use double buffering, it directly renders OLED "pages" (i.e. bands of 8 pixels) based on the connected scope object and strings.


#169

Hi @cube48,

The Linnstrument is quite an impressive device.
Hope you'll post a demo :wink: