The Quilcom 7SAW synthesiser

Post any examples or modules that you want to share here
User avatar
Spogg
Posts: 3368
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England
Contact:

The Quilcom 7SAW synthesiser

Post 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
adamszabo
Posts: 667
Joined: Sun Jul 11, 2010 7:21 am

Re: The Quilcom 7SAW synthesiser

Post 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'
Attachments
random_phase.jpg
random_phase.jpg (304.93 KiB) Viewed 35037 times
tulamide
Posts: 2714
Joined: Sat Jun 21, 2014 2:48 pm
Location: Germany

Re: The Quilcom 7SAW synthesiser

Post 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/
"There lies the dog buried" (German saying translated literally)
User avatar
Spogg
Posts: 3368
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England
Contact:

Re: The Quilcom 7SAW synthesiser

Post 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
adamszabo
Posts: 667
Joined: Sun Jul 11, 2010 7:21 am

Re: The Quilcom 7SAW synthesiser

Post 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.
User avatar
Spogg
Posts: 3368
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England
Contact:

Re: The Quilcom 7SAW synthesiser

Post 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!
User avatar
Spogg
Posts: 3368
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England
Contact:

Re: The Quilcom 7SAW synthesiser

Post 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
adamszabo
Posts: 667
Joined: Sun Jul 11, 2010 7:21 am

Re: The Quilcom 7SAW synthesiser

Post 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 ;)
User avatar
Spogg
Posts: 3368
Joined: Thu Nov 20, 2014 4:24 pm
Location: Birmingham, England
Contact:

Re: The Quilcom 7SAW synthesiser

Post 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
User avatar
martinvicanek
Posts: 1334
Joined: Sat Jun 22, 2013 8:28 pm

Re: The Quilcom 7SAW synthesiser

Post 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.
Post Reply