Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > How to mute the voices of the SID?
2024-09-30 23:56
Rub_0201

Registered: Apr 2019
Posts: 13
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!
2024-10-01 10:41
Mixer

Registered: Apr 2008
Posts: 446
Well, there is no channel mute directly on SID, but you can do a buffered write to SID. F.ex turn the IO memory off, so that the register writes to SID go "under" the IO into RAM. Then you can copy the stuff you want to hear from "under" the IO on and write to SID only the stuff you wish to hear. You need to do this per each player call.

You can also alter the play routines to do SID register writes to some alternate location as a buffer and then to SID yourself. Using the RAM "under" is a more general solution.
2024-10-01 11:21
Martin Piper

Registered: Nov 2007
Posts: 703
You could run the player in an emulator or even create your own instrumented 6502 emulation layer so capture the SID writes and then play back the SID writes later on.

Or you could try the rip SID functionality in my MusicStudio which allows instruments and drum sounds to be ripped from SID files. https://www.youtube.com/watch?v=HKkapWwicA4
2024-10-01 12:57
deetsay

Registered: Aug 2005
Posts: 43
I wrote this DJ software specifically because someone asked if muting channels would be possible :-).

DS/DJ-2000 mk1 Alpha

Song compatibility is not incredible, but most modern stuff works -- as long as there are no samples and the address doesn't collide with the player or the buffer. This works basically as Mixer wrote.

Hit 1/2/3 to mute channels. F to adjust filter (or was it shift-F) and use paddle 1 in port 1, or something. No register fiddling available beyond that I'm afraid.
2024-10-01 13:55
Rub_0201

Registered: Apr 2019
Posts: 13
Wow, I will look in the tipps and the mixer software!

So it is like I guessed from looking at the SID registers: There is no muting implemented. Just everything on or off or in between.

As i am lazy and do want to have a general solution for all musicplay routines with just little adaptation:

What happens if I let the original music routine writes to the registers and after the RTS I call my muting/mixing routine to set e.g. the frequency of chanel 1 to something mute (0 ?) ?
2024-10-01 14:01
spider-j

Registered: Oct 2004
Posts: 494
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
2024-10-01 14:15
Rub_0201

Registered: Apr 2019
Posts: 13
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!!!
2024-10-01 17:51
Rub_0201

Registered: Apr 2019
Posts: 13
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.
2024-10-01 18:38
Bansai

Registered: Feb 2023
Posts: 46
There is muting, but only for voice 3. See $D418 bit 7.
https://www.oxyron.de/html/registers_sid.html
2024-10-02 01:46
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! :)
2024-10-02 18:18
Stone

Registered: Oct 2006
Posts: 171
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.
 
... 19 posts hidden. Click here to view all posts....
 
Previous - 1 | 2 | 3 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Fungus/Nostalgia
t0m3000/hf^boom!^ibx
MuZZa/The Codeblasters
Wayne Kerr/Flashtro
iAN CooG/HVSC
CA$H/TRiAD
Nordischsound/Hokuto..
hedning/G★P
Tom/TRS
Guests online: 242
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Coma Light 13  (9.7)
4 Edge of Disgrace  (9.6)
5 Mojo  (9.6)
6 Unity  (9.6)
7 Uncensored  (9.6)
8 Comaland 100%  (9.6)
9 Wonderland XIV  (9.6)
10 Still Rising  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 Party Elk 2  (9.6)
3 Cubic Dream  (9.6)
4 Copper Booze  (9.6)
5 Libertongo  (9.5)
6 Rainbow Connection  (9.5)
7 It's More Fun to Com..  (9.5)
8 Raising Snakes  (9.5)
9 Moving Balls  (9.5)
10 Morph  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Nostalgia  (9.3)
5 Triad  (9.3)
Top Webmasters
1 Slaygon  (9.6)
2 Perff  (9.6)
3 Morpheus  (9.5)
4 Sabbi  (9.5)
5 CreaMD  (9.1)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.041 sec.