| |
Jammer
Registered: Nov 2002 Posts: 1289 |
problematic playback od GT multispeeds
I'm not sure how problems and hickups are common for playback on real machine but considerable number of my works usually sounds broken, especially those ones composed with the latest GT release. What's the culprit here? Are GT compilations that cycle sensitive or what? :) During the release of Club Stylier and a few other multis I was forced to create false SID address working as a buffer and then copy values to proper registers but it's really unwanted workaround. Any clues? |
|
... 40 posts hidden. Click here to view all posts.... |
| |
Conrad
Registered: Nov 2006 Posts: 833 |
It may not matter that much to you, but I took a bit of time to make recordings from real C64 to provide comparisons. (Recorded on a Tascam DR-60 recorder)
Sorry that they're .wav files, I don't have time to encode them.
----------------------------------------------------
https://www.dropbox.com/s/civxe3fwejcy2o9/Club%20Sylier_Compo%2..
This is recorded from the compo entry at Forever 2010 (Club Stylier)
----------------------------------------------------
https://www.dropbox.com/s/r7412oyxeuiwgra/Club%20Stylier_My%20p..
This is a recording of my own player code, where the GT music routine writes to ghost registers (I hacked it ;)) and then at each call, the contents of the ghost registers are written to the SID registers FIRST before it JSR's $1003. The SID register writing order is done this way:
PULSE LO 1,
PULSE HI 1,
SUSTAIN/RELEASE 1,
ATTACK/DECAY 1,
FREQ LO 1,
FREQ HI 1,
WAVE CONTROL 1,
PULSE LO 2,
PULSE HI 2,
SUSTAIN/RELEASE 2,
ATTACK/DECAY 2,
FREQ LO 2,
FREQ HI 2,
WAVE CONTROL 2,
PULSE LO 3,
PULSE HI 3,
SUSTAIN/RELEASE 3,
ATTACK/DECAY 3,
FREQ LO 3,
FREQ HI 3,
WAVE CONTROL 3,
$d416,
$d417,
$d418
On a PAL machine there are 312 raster lines, which I assume is how GoatTracker divides the positions for calling the play routine, therefore I did the same... Raster positions in my player are: $10, $5e, $ac, $fa Screen is also turned off and black , so no bad lines and minimal background noise.
----------------------------------------------------
and finally...
https://www.dropbox.com/s/zsvm0wmlzkx55w6/Club%20Sylier_1541u%2..
This is a recording from the tune played from my HVSC directory in the 1541 ultimate SID player
As far as HR bugs is concerned, I couldn't hear any big differences between my player and the player used for the original compo entry, but the one played in the 1541u SID player does sound bad indeed. Didn't bother recording the Riverwash 6 invite code. ;) |
| |
iAN CooG
Registered: May 2002 Posts: 3135 |
https://www.dropbox.com/s/siobwu4dpjv67z7/Club_Stylier_buffered..
now i've ripped it with buffered writes, the sid in HVSC was added as it was and it's not using buffered writes.
try if this is better and if so will be replaced in next update. |
| |
Jammer
Registered: Nov 2002 Posts: 1289 |
Thanks guys a lot!
Conrad, compo entry used my additional routine with buffer and playback was correct. Original buffered writes from GT's compiler didn't work (at least in Vice). But its a heck of unnecessary work as I had to use false sid address in GT and copy registers in compo player routine and everyone would have to do the same in his prod. Version with your player cuts stabs to early thus I guess hardrestart is too long or sth.
It's almost a general rule that my tunes play correctly in SidPlay but have problems in prods - singlespeeds as well (VN#55 intro).
I guess it's mostly up to Cadaver to correct things suggested here in his compiler. Hopefuly, he will as everything's just been given on a silver platter. You guys are really helpful. |
| |
cadaver
Registered: Feb 2002 Posts: 1153 |
The buffering in GT has historically been per-channel (at the end of channel execution) to work better with sound effect playback. Obviously it's not enough for demanding tunes like multispeeds, as channel execution will take varying time.
Maybe I'll do a final update where the buffering happens right at the beginning of the play call, in a simple loop.
Which way you do run your copy loop from the fake regs? |
| |
Jammer
Registered: Nov 2002 Posts: 1289 |
irq1:
asl $d019
lda #0
sta $d020
ldx #$18
loop1:
lda virtual_sid,x
sta $d400,x
dex
bpl loop1
jsr $1003 // play music
lda #<irq2
sta $0314
lda #>irq2
sta $0315
lda #$6c
sta $d012
pla
tay
pla
tax
pla
rti
That was my routine in each call but I'm not a coder and it was real hit/miss ;) |
| |
cadaver
Registered: Feb 2002 Posts: 1153 |
Thanks. I figured it'd be reverse so that it gets the wave/ADSR write timing mostly similar. |
| |
cadaver
Registered: Feb 2002 Posts: 1153 |
Here's a preview version of the updated GT, I'd appreciate testing. There's a new relocator option (at the bottom) that will enable the full buffering mode.
http://cadaver.homeftp.net/tools/gt273preview.zip |
| |
Jammer
Registered: Nov 2002 Posts: 1289 |
libwinpthread-1.dll is missing ;) |
| |
cadaver
Registered: Feb 2002 Posts: 1153 |
Seems I have to update the makefile to link everything statically. Hold on, new version should appear shortly.. |
| |
Jammer
Registered: Nov 2002 Posts: 1289 |
Ok, I've just downloaded dll myself ;) Testing with 16x multispeeds :D |
Previous - 1 | 2 | 3 | 4 | 5 - Next |