| |
Repose
Registered: Oct 2010 Posts: 225 |
Digi synth/4 ch SID concept
I was thinking about digis and had an idea. Imagine playing an intro to a tune composed to use 3 channels as normal, but for two of them you swap between channel 3. On each pass, sample osc3/env3 and multiply them (and mix the 2nd pass into the first pass). You have one measure of the tune in 2 channels as samples. You can play them as a sample and then add 1 more channel like magic. The concept can be expanded to add a few more channels.
A few problems; mixing too much lowers the quality, and there could be severe aliasing due to low sample rate, and some restrictions in composition.
The advantages are the initial size is small and no complicated synth routines are needed, and it would seem like magic :) |
|
| |
Mixer
Registered: Apr 2008 Posts: 452 |
Perhaps something like this?
Raveloop14.xm |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
The "echo" stuff works like this too.
However, i recommend to make some actual experiments with this... it doesnt work that great unfortunately :( |
| |
Repose
Registered: Oct 2010 Posts: 225 |
The Rave loop is pretty neat. I think compositionally, yes I imagine it would be like that. Btw, I had trouble playing that sid in 2 emulators, but I found a good copy here https://www.youtube.com/watch?v=FN6L9-TkHQ8
However, this is not exactly what I meant by my idea, as Rave had sample loops. I meant to make a tune using pure SID sounds; however those sounds are internally sampled then played back as pre-mixed samples while the freed-up voices continue to add to the composition.
It is interesting to hear how the echofied 6881 tunes work. The effect is ok.
Well, I can certainly mock up a test by simply enabling two tracks of a multi-SID tune, sampling them, then adding them back with the other tracks in an editor of some type... |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Try it... i don't expect great results from this in practise, allthough in theory it sounds awesome. Problems will be the low samplerate you can use, and the limited resolution of the sample replay. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Interesting idea. I suspect you'd struggle to sample one voice while playing back the layers so far at any kind of decent sample rate mind.
Still, you could optimise things quite a bit by taking advantage of things like "notes of the same duration and same envelope behaviour always produce the same stream of env3 values" - and even prewrite sets of env3 values into unrolled code that performs fast multiplies of osc3 values.
"just" doing a soft synth would perhaps be a saner route, but then again if we were sane none of us would still be using 40yo hardware :) |
| |
Repose
Registered: Oct 2010 Posts: 225 |
Always assume something is possible, then work through the issues. You can pause sampling during the music routine, a 250uS gap (assuming a 4 line player) in sampling won't be audible. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Oh it wasn't the music routine I was concerned about - just the NMI playing one sample while reading another :)
Still, drop down to five or six kHz and all should be fine.. |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
instead of sampling how about putting softsynth channels into the 8bit digi "channel", or even to the 4th (1 bass, 1 drum?) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
Oswald:
Quoting ChristopherJam"just" doing a soft synth would perhaps be a saner route |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Quote:You can pause sampling during the music routine, a 250uS gap (assuming a 4 line player) in sampling won't be audible.
You'll have to limit the sample rate to 4khz (every 4th line) then... so 2khz max for the signal.Oh well. Try it :) |
| |
Oswald
Registered: Apr 2002 Posts: 5094 |
Sorry CJ that one slipped through my attention |
| |
Repose
Registered: Oct 2010 Posts: 225 |
I'm confused here - I thought the update rate of a typical music routine was once per frame, unless its a "4x" player with more. Also the length of the routine is 250 cycles or so. At 120bpm, a 1/32nd note is 16ms, which is about 1/60th of a second, or one (NTSC) frame. Its effects like a smooth glissando which may require a faster update interval. There's little point in any musical movement being too fast, as its beyond human perception.
Next, sample playback by some methods is limited to 8kHz or 4096 cycles (that's not a coincidence, as its the range of the frequency register). So we have plenty of time to both playback and sample. And if sampling while playing is an issue, you can easily pre-play and buffer some sections, though obviously that would create a delay before starting (and the buffering can be muted as well). Otherwise, you handle that in the composition, and simply not engage any sample playback until a few riffs have been played at least once.
Of course you can create a soft synth and that's a whole other approach, but considering the DSP involved, there's going to be limits in real-time synthesis. Its been done in the 80s with "Musical Applications of Microprocessors" - Hal Chamberlain. He wrote a string synth for the PET, and the demo contains the song "dueling banjos". This could be ported to the c64 easily. But, for a smaller size and for simplicity, I'd like to use the SID itself.
It boggles my mind why anyone would want to write a soft synth when the SID already does all the calculations and you only have to record them :) |
| |
Mixer
Registered: Apr 2008 Posts: 452 |
Just code it. Show everyone that it can be done. |
| |
chatGPZ
Registered: Dec 2001 Posts: 11386 |
Indeed. I recommend reproducing that "echo" stuff first (this is very easy) to get a feeling for how it sounds, and what works and what doesn't. |
| |
Repose
Registered: Oct 2010 Posts: 225 |
Well sure, it would be fun to work on this, but I have no experience using a play routine and I can't write music, so that kinda limits me. |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1409 |
The part of the routine that triggers notes and modulates frequency/pulse width/filters/waveforms only runs once or twice per frame, but as soon as you start playing (or recording) samples, you need a second routine that interrupts once per sample - so every second raster for ~8KHz samples. That one only has 126 cycles to work with, less if you have badlines. |