Anyone up for supersaws?


#1

anyone able to get a supersaw so far? my best attempt to get one:

url of the sound: dropbox.com/s/s5xrazbl4itk86z/supersaw%20C4%20%26%20C5.wav?dl=1

(just look at the waveform of the sound)

it is currently 3 polyvoice and 93% dsp load (axoloti 0.3 (stm32f4discovery board))

patch will be shared when i get it finished smile


#2

I'd love to see how you used 93% of the cpu on that smile

I think a weekly patch challenge or something like that would be a fun thing. My first suggestion for a patch would be the 909 snare.


#3

well, basically i put 7 saw oscillators with each a highpass filter on them, pretty inefficient i know.

so i just changed to 21 saw oscillators (per voice) en 3 highpassfilters to control 7 oscillators each smiley

this made it possible for a bit more grown up sound, though i got the same dsp load of 93% with 2 poly voices right now. (that's a total of 42 oscillators playing with 6 highpass filters and 2 envelopes total)

not the big challenge is to tune each oscillator perfectly right.. wink

EDIT:

the more 'grown up' sound was barely noticed so i restarted with the same 7 oscillators, and now put some of my global filters outside of the voices in the main patch (also deleted the reverb and eq), giving me a 4 voice max with 89% dsp load.


#4

That explains smile
Detuning will be good, based on that clip I wouldn't have guessed there were so many oscillators.


#5

well, it is currently 7 oscillators (6 for detuning, 1 for the main tune) per voice.

anyhow, here's a small demo sound i recorded from my axoloti


url: dropbox.com/s/xo79irwtafiathg/supersaw%20test.mp3?dl=1


#6

I just played around with the axoloti a bit and implemented a supersaw for fun to learn the basics. The amplitude mixing is a bit wonky. Basically I use 7 phasors and a hpf filter as a simple way to remove alisaing artifacts (like on the JP8000.

Does anybody know how the script or oneline_k modules work? Doing calculations with the simple math modules can get a bit messy. But yeah let me know if you find ways to improve the patch as it's my first one so far wink
supersaw.axp (19.9 KB)


#7

What's the difference between a phasor and a saw osc by the way?


#8

A phasor is just a simple counter going from 0 to some value. Using it as an oscillator causes aliasing artifact (mirroring of overtones at the Nyquist frequency). I just saw that there are two saw wave implementations, one which is bandlimited (less artifacts) and one which is "cheap" (again artifacts, but less expensive). The implementation of the phasor and the cheap saw is different though, I haven't yet tested if it sounds different.

As for the supersaw, it is implemented on the JP8000 using 7 phasors/saw wavse that are not bandlimited and a hpf filter to get rid of at least some low frequency aliasing artifacts. The artifacts is also what makes it sound so noisy and grainy. Try to remove the hpf filter in my patch and listen to the sound especially if you play high notes.


#9

you can see the names of the inlets/outlets in the object editor (edit object definition)

for a oneline k script, line would be something like :

outlet_out = inlet_in * param_c

(needs to be valid C code)

oneliner is a very simple object, and easily copied/amended if you want more parameters/inlets/outlets etc.
(one day this will be in the object editor smile )

script/script2 is a bit different as runs in a separate thread...see help for an example.


#10

i tried your phasor method on my stm32F407discovery board (using axoloti 0.3 BETA), first 2 things i noticed:
Timings are off a bit when playing a midi tune (perhaps it has to do with the detuning stuff)
Way less CPU usage than my saw based one, i can like run up to 12 polyvoices(!) without extra effects, though i applied a double lowpass and chorus on my main patch, so i reduced the voices to 8 to be on the safe side (75% cpu now) smile

you can notice the timings are a bit off in my recording https://www.dropbox.com/s/8rbrdtz9pgyo9pv/supersaws.wav?dl=1

the supersaw patch looks like this for those who want tto know how i applied my mods:

EDIT:

main patch looks like this:


#11

so far I only tested it via a midi keyboard connected to the USB Port and haven't noticed any timing issues. Are you sure it is not coming from the sequencer? The detunings are calculated based on the midi note so they shouldnt cause any delay.

I also made a subpatch and changed the oscs to the cheap saw, otherwise it is pretty similar to your patch.

supersaw_cheap.axs (18 KB)
supersaw.axp (2.5 KB)


#12

well, i rendered from my computer by usb to midi, which doesn't have any wrong timings on any other patch i created, it just has the timings issue on this patch (note: i play about 4-5 notes (imported midi files in my fl studio) at the same time in my demo sound above)


#13

I just ran a quick test sending 6 concurrent midi notes (soundcards USB MIDI to axoloti DIN MIDI) and couldn't hear any timing issues. I am on linux and using Reaper as a DAW. Would it be possible that you send me your midi file?


#14

below is my midi file, though i think it has to do with my software version (0.3 beta on my stm32f4 discovery board) and not with the midi file

https://www.dropbox.com/s/l3dne2moln96pwi/btb.mid?dl=1


#15

yup seems to be your version as it plays in sync on my axoloti (firmware 1.0.0.1)

https://drive.google.com/file/d/0B9ZBE6vYCi8WZTJBSDJtSkZFb3M


#16

I have seen no evidence of sloppy midi timing in current or older firmware, and 'd rather suspect your DAW setup.


#17

I don't know if this qualifies as a supersaw (is that a Roland trademark or something?) but here's my take on a stack of detuned saw waves. Only three oscillators but they go into 6 modulated delays which by my logic give an additional 18 pseudo-saws smile

Adjust the LFO rate to control the amount of perceived detune.


supersaw.axp (11.6 KB)

edit: When I try to make this into a sub-patch, the parent fails to compile because error: 'class rootc::instancesupersawvoice__1' has no member named 'instancewrite__1_i' frowning how can I avoid this problem?


#18

Compiler error is known issue and is fixed in development already.
( it's the delays)


#19

I coded a supersaw object.
I think it uses less CPU than patched equivalents.
Comments welcome before it goes into a release.


#20

what if i need to test this on my stm32f407 discovery using firmware 0.3 beta? (since i can't seem to get axoloti 1.0.3 working on it..)
is this directly compatible?