Page 1 of 2

The Quilcom 7SAW synthesiser

PostPosted: Sun Jun 04, 2017 2:21 pm
by Spogg
Hi all!

Time for a new synth.

This one explores an oscillator inspired by the Roland JP-8000 Supersaw.

Many thanks must go to Adam Szabo, whose definitive paper gives insight into what Roland achieved. I’ve included his paper in the zip so you can read about the technicalities and how he analysed so cleverly what was going on. Also many thanks, as ever, to Martin Vicanek whose work I make extensive use of.

Key features emulated here are:
-7 aliasing sawtooth oscillators to give a richer HF content
-Tracking HPF to remove aliasing lower than the fundamental
-Polyphonic random phase offset, per note played, for the 6 detunable side oscillators
-Mixing to provide compensated levels

In addition the 7 oscillators are spread equally across the stereo field (can be reduced to mono).

The Synth’s architecture is very simple but a rich and varied range is possible, as per my presets.

There is a demo and user guide at

https://youtu.be/exQE1l0nW-k

Zip includes Adam’s paper, the schematic, the plugin and the factory presets:

https://www.dropbox.com/s/38t9xv9xqpts9 ... 4.zip?dl=0

Any comments would be very welcome!

Cheers

Spogg

Re: The Quilcom 7SAW synthesiser

PostPosted: Sun Jun 04, 2017 4:50 pm
by adamszabo
Cool, im glad you found my little paper userful! Sounds pretty cool! I checked your schematic and you are using a way too complicated method for the phase randomisation. You can use assembly to same a LOT of cpu for this task. This is how I did it in my synth ;)

Btw, yes you said my name correct haha. In Hungarian when the S and Z are beside each other you pronounce it like an english S like in 'snake'. When the S is alone you say it like 'Shh'

Re: The Quilcom 7SAW synthesiser

PostPosted: Sun Jun 04, 2017 4:57 pm
by tulamide
Since it is based on Adam's work I think it's fair to point to his awesome synth as well: http://www.adamszabo.com/jp6k/

Re: The Quilcom 7SAW synthesiser

PostPosted: Sun Jun 04, 2017 5:43 pm
by Spogg
adamszabo wrote: I checked your schematic and you are using a way too complicated method for the phase randomisation. You can use assembly to same a LOT of cpu for this task. This is how I did it in my synth ;)


Thanks Adam! Glad I said your name right too.

I tried various schemes for the phase randomisation but I found that whenever a channel opened (note pressed) I got the same random numbers every time. In the end my scheme was based on 6x free-running (mono) white noise modules (thanks Martin!) with different seeds converted to poly and then I always get unique spreads. Could you tell me whether your scheme will always start with a unique value set from those rand functions?

@tulamide thanks for that link and he does deserve the plug. The demos sound fantastic and he deserves to sell loads. Of course his synth is a full emulation whereas mine just explores the Supesaw concept itself, more as a kinda demo/experimental thing.

Don't you just LOVE Flowstone?

Cheers

Spogg

Re: The Quilcom 7SAW synthesiser

PostPosted: Sun Jun 04, 2017 5:55 pm
by adamszabo
Thanks Tom, I didnt want to do any self advertising :lol:

Spogg, yes, try it out! You get a different random unique number from each output everytime you press a new key. Connect a white readout primitive to it and you can see it.

Re: The Quilcom 7SAW synthesiser

PostPosted: Mon Jun 05, 2017 8:36 am
by Spogg
Thanks Adam, I will try it in the near future and check the CPU saving.

I must assume that the RAND function is somehow invisibly seeded so that when the channel is opened you don't always get the same result. Fascinating!

Re: The Quilcom 7SAW synthesiser

PostPosted: Mon Jun 05, 2017 3:39 pm
by Spogg
Well I have to thank you so much Adam :D

The CPU dropped to nearly half with your asm code :o

I've put the new version 1.03 as the Dropbox link on the first post (and on flowstoners) and recommend folk download it again due to the CPU saving.

Adam, I made this work easily in DSP too (slightly higher CPU) but when I checked there is no reference to the rand function in the manual. This annoys me a bit because, had it been available I would have used it. Since there is no info there is no syntax for its use either. Could you possibly explain why we need to create a Float Array for the rand function and not just a regular float?

float rand1[1] = rand(0,1); This works
float rand1 = rand(0,1); This doesn't work.
Also can I put any upper and lower limit in the brackets?

Sorry to be a pain but I want to "get" this, if you don't mind.

Thanks again Adam!

Spogg

Re: The Quilcom 7SAW synthesiser

PostPosted: Tue Jun 06, 2017 11:39 am
by adamszabo
Unfortunately, I am not an expert at that code, I just got it like you did from me, but to my understanding, we have to create an array to fill it with the random numbers. You can also call that variable MyRandomArray[1] if you want, it does not have to be rand1[1]. The 1 in the bracket means the size of the memory, I think 1 means 4 bytes or something? Also, yes you can put other limits in your brackets. (-2,2) will do the random number between -2 and 2.

Perhaps Martin on MyCo can expand on what I wrote to clear things up ;)

Re: The Quilcom 7SAW synthesiser

PostPosted: Tue Jun 06, 2017 5:11 pm
by Spogg
I found a duplication error in the parameter naming :oops:

I've corrected 5 presets it affected and put the version 1.04 in the first post. No sounds changed and the preset folder is up to date now.

Cheers

Spogg

Re: The Quilcom 7SAW synthesiser

PostPosted: Tue Jun 06, 2017 8:08 pm
by martinvicanek
The rand() function is mentioned on page 242 of the User Guide. Apparently it may be used to initialize an array with random values.