Jump to content

SwinSID Aliasing idea


cheater

Recommended Posts

Hey guys,

SwinSID looks real cool, sounds real cool, and has a lot of potential.

I am assuming that it uses SID oscillator samples.

Doing pitch shifting in digital, SwinSID creates aliasing. Which is, for us geeks, pretty cool.

If you don't know what aliasing is, an introduction can be found at

http://www.discodsp.com/highlife/aliasing/

The cool thing about aliasing is that it creates partials which normally wouldn't be there, that makes the timbre one-of-a-kind.

The uncool thing about aliasing is that, if you have a single sampling rate, you are unable to control it in such a way, that the timbre is constant. And the change in timbre can get so apparent that it overrules the 'basic' pitch and you can get the feeling you're playing a broken piano. This is especially apparent when you're playing very high notes on a digital synth that has strong aliasing.

So the idea is: why not change the sampling rate (refresh rate) of the SwinSID dynamically?

For example, keep it at 2xnote pitch.

Then the DAC plays that back at that dynamic sampling rate.

I know this technique was used by the highest end samplers in the 80s to get the best pitch shifting possible (which is, arguably, better than what we can do nowadays with a fixed sampling rate).

If that's possible, there's another question: why keep the sampling rate at 2x note pitch? Why not 1.5x? 1.8x? See where I'm going there? You could control the timbre with yet another parameter.. a technique which would be one-of-a-kind, and which is generally not possible at all in more complicated digital synths (because of the fixed sampling rate).

With this concept, the filter pitch control would have to be realized slightly differently, but not very.

Post ideas, feedback, flames.

And: good to talk to you guys again, after a very, very long while :)

Link to comment
Share on other sites

...

If that's possible, there's another question: why keep the sampling rate at 2x note pitch? Why not 1.5x? 1.8x? See where I'm going there? You could control the timbre with yet another parameter.. a technique which would be one-of-a-kind, and which is generally not possible at all in more complicated digital synths (because of the fixed sampling rate).

...

i do like this idea.

now i wanna hear it...

Link to comment
Share on other sites

It'll sound not unlike a sample rate reducer (decimator). E.g. http://sonalksis.com/index.php?section_id=103

EXCEPT, it'll be an effect that's constant with regards to timbre, across the keyboard. So imagine you're moving the sonalksis plugin's knob in sync with the pitch of the note you're playing.

Also: if you keep the oversampling parameter at max, it'll sound like a normal oscillator without any aliasing at all! For a clean sound (yet, still very different from SID)

Cheers!

Link to comment
Share on other sites

the reason why fixed sample rates for samplers are used is that this is necessary to be able to playback more than one sample at a time on a single DAC with independent pitch. IIRC, the SwinSid features six oscillators (?), so for variable rate playback, you'd need 6 DAC channels and mix the result in the analog domain. Apart from higher cost and parts count, I suppose this would also be more than what a single controller could handle - from the programming point, you'd need six independent 16-bit timers (the AVR has one) and would get in trouble with overlapping interrupt executions everytime when two timer events/sample playback points get too close to each other which would induce jitter. So I'd say, it's a good plan but will be difficult or impossible to realize without massively increasing processing power and parts count.

S

Link to comment
Share on other sites

Not necessarily. If we define one of the oscillators as 'base', then relate the pitches of the other oscillators as multiples of the pitch of the base oscillator, we can do it this way (suppose osc1 is base):

1. mix base oscillator + pitch_shift(osc2, freq(osc2)/freq(base_osc)) + ... + pitch_shift(osc6, freq(osc6)/freq(base_osc))

2. output at osc1's rate

Note you're now pitch shifting one oscillator less. This is one thing you gain.

Note that the way that oscillators 2-6 alias is constant across the keyboard - so the timbre doesn't change. That means, for example, if osc2's fifth harmonic is aliased at C3, it will also be aliased at E5, etc.

Note that you need to have a smart way of figuring out what frequency you need to shift osc2-6 to.. and more importantly, it needs to be cheap enough to implement ;)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...