| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
How to mute the voices of the SID?
Hi!
I want to remix my favorite SID tunes. A lot of them have nice rhythm, ideas and melody, but if I hear them more then 10 times in a loop, I get dizzy.
I want to bring more stillness and a different temper in them - making a remix.
My idea is to mute one or two of the voices of the SID and additionally fiddle around with some registers.
I did that with emulators like the C64debugger("24Hours Demo Remix" on YT) and the result is quite nice. Now I want to do it on the C64 itself.
As I am no SID programmer or musician, I have no clue how to do it on the real machine.
I understand fundamental assembly coding, but I am far from doing fancy stuff.
So I need your help! |
|
... 24 posts hidden. Click here to view all posts.... |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
For completeness sake – in addition to what Mixer said – to just mute a voice it's usually enough to set the according control register to $00:
$D404 voice 1
$D40B voice 2
$D412 voice 3
EDIT: Oh, and no it doesn't work to let the music routine write to the SID registers and the modify them again. This will be audible.
proper way is:
set $01 to ie. $34
jsr music
copy $D400-$D418 elsewhere ("virtual" regs)
set $01 to ie. $35
modify the "virtual" regs
copy the "virtual" regs to SID registers |
| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
Yeah - the audible clicks or what ever comes out may be a nice special effect ;-)
I go for the $01-deflector and a buffer for the clean mutness.
I am very excited to do the routine. This sounds like the right amount of coding and doable for me with your hints!
Thanks!!! |
| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
Quote: For completeness sake – in addition to what Mixer said – to just mute a voice it's usually enough to set the according control register to $00:
$D404 voice 1
$D40B voice 2
$D412 voice 3
EDIT: Oh, and no it doesn't work to let the music routine write to the SID registers and the modify them again. This will be audible.
proper way is:
set $01 to ie. $34
jsr music
copy $D400-$D418 elsewhere ("virtual" regs)
set $01 to ie. $35
modify the "virtual" regs
copy the "virtual" regs to SID registers
Yeah, just did the dirty overwrite with 0 without shadow copy - sounds like getting grilled by a robot in Impossible Mission.
Nice effect.
With the 6581 it is really loud and eratic somehow; with the 8580 it is more gentle.
I use VICE, but the result should be quite the same on the real machine I guess.
Okay, now do it the full way. |
| |
Bansai
Registered: Feb 2023 Posts: 49 |
There is muting, but only for voice 3. See $D418 bit 7.
https://www.oxyron.de/html/registers_sid.html |
| |
aeeben
Registered: May 2002 Posts: 44 |
If you don't need the filter, you can mute voices 1-2 by routing them to filter (poke54295,1 / poke54295,2) and turning off all filter types (poke54296,15).
But Deetsay's DJ SID mixer is probably the way to go! :) |
| |
Stone
Registered: Oct 2006 Posts: 172 |
Some players have a lookup table for the voice offsets. Look for the byte sequence $00,$07,$0e. Then you can change whatever voice you want to mute by setting it to $19. This will redirect writes to read-only/unused registers. |
| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
The sound result with the buffered routine is not the same. :-(
Percussion instruments sound dull and powerless.
Hearable especially on "Beat to a pulp" from NE7 (voice 3).
Any ideas?
I still look for a bug in my code, but I think it is related to the different technique/timing of writing to the IOs. |
| |
spider-j
Registered: Oct 2004 Posts: 498 |
As "Beat to a Pulp" uses a quite "new" routine (GT1) it's verly likely there's something wrong with your code.
I just threw the SID through my "sidanalyzer" script / code which uses the above mentioned approach and everything sounds fine to me, when (un)muting voices:
https://trans.jansalleine.com/csdb/sidanalyzer-bttp.prg |
| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
Quote: As "Beat to a Pulp" uses a quite "new" routine (GT1) it's verly likely there's something wrong with your code.
I just threw the SID through my "sidanalyzer" script / code which uses the above mentioned approach and everything sounds fine to me, when (un)muting voices:
https://trans.jansalleine.com/csdb/sidanalyzer-bttp.prg
Thanks Spider-j!!
With your routine "Beat to a pulp" sounds like it should be . Now I hear the exact difference with muted voices 1 und 2!!
I'l do some bug hunting.... |
| |
Rub_0201
Registered: Apr 2019 Posts: 18 |
Well...I think there is a problem in my code and in the general aproach.
I recorded voice 3 of "Beat to a pulp" with:
1) C64jukebox with SIDPlay2 recorded with Chrome Audio extension
2) spider-j routine recorded within VICE 3.8
3) my routine recorded within VICE 3.8
#2 is better than #3, but #1 is far better than the latter.
The SID model and resampling, buffer, filter, etc. did not change this behavior in VICE.
Here are the files:
https://www.dropbox.com/scl/fo/gcjp4k8qmc9uf6vn1cg99/AEP9FGA1Yy.. |
Previous - 1 | 2 | 3 | 4 - Next |