SIDex plugin

Started by Keltic Danor,

Ian @ un4seen

Quote from: DhryNo idea why this topic didn't autonotify me of the recent new replies though.

The new SID plugin stuff was split from the original "Where is Fraggie?" thread to give it its own thread. Unfortunately, I don't think notifications get copied to the new thread, so you would need to add one for this thread.

Dhry

Quote from: Ian @ un4seenThe new SID plugin stuff was split from the original "Where is Fraggie?" thread to give it its own thread. Unfortunately, I don't think notifications get copied to the new thread, so you would need to add one for this thread.

Haha, not anymore! My post above automatically switched this thread to notify mode for me, and I just got the notification of your reply so I think it's all set for now.

DRS

Dhry

Tried out v1.2. I definitely hear the click on the start of some tracks, it's actually not very common but you can hear it pretty well on eg. \HVSC\MUSICIANS\S\Stinsen\Jeroenimo.sid

Also another defect. Surround sound mode sounds awesome, but it also appears to uncheck some of the 3 SID voices for some weird reason, and you can't recheck them unless you turn off surround mode. The problem is that if you DO turn off surround mode, those voices REMAIN unchecked so unless you then go back in and recheck them your SIDs will play without some voices present.

And as mentioned, the HVSC folder location appears hardcoded. It doesn't crash for me, but it also can't be changed.

Standing by for the next version!

DRS

Dhry

Another minor bug in 1.2. When playing back a track, you can change surround to be off or on and when you apply, the track automatically restarts with the new setting (which is good), however the track position bar does not reset to the beginning and remains where it was, which means it now does not accurately reflect the position of playback.

Now this COULD be because the HVSC path is hardcoded into it still, meaning it doesn't match my path, meaning no songlengths were added so it doesn't have a lock on the absolute length of a track, but even if that were the case, the track literally restarts from the beginning therefore so should the playback dragbar.

Cheers
DRS

Dhry

libsidplay 2.3.0 now available - https://github.com/libsidplayfp/libsidplayfp/releases
Not sure, but beyond the listed fixes I suspect that DrFiemost *might* also have fixed the defect related to the weird notes in Rob Hubbard's "Shockway Rider" starting around 0:16.

DRS

Malade

Hi,
I have been really busy , just updated the source to libsidplayfp 2.3 and Shockway_Rider.sid still goes wonky at around 12 to 16 or does it notice the second verse plays fine, i will listen to it on a c64 in a minute to compare and see if the notes are actually wrong.

Malade

#66
i was recording as i was going along here is part of the video 0:59 shockwave starts , this is on a real c64 with dual sid chips on a sid fx it was handy to check both chips just in case it was a 8580 or a 6581 related issue , it was not.

i will take a look into it.

https://www.youtube.com/watch?v=ud8Wg3hEfSo

edit:
appears to be fixed now , seems it was the c64 emulator not clearing certain memory locations on init ie,

ian-coog commented 2 hours ago
Joxstrap/HVSC found the problem, memory $ed00-ed08 was not inited to 0, now the sid file is fixed for the next HVSC update.

Dr. Fiemost

Actually the emulator is ok, it is the tune that is not initializing the memory it uses and will be fixed in HVSC #76, out in December.
In the meantime if you really want you can revert the memory init pattern change as a workaround (see https://github.com/libsidplayfp/libsidplayfp/commit/3a970a77bebbb530125cb12d2359e355c67ac8e6?fbclid=IwAR0WkW44Eh7IfAkhbhA3m10EoVacyt1JqNLNE503egXK2hj0x5VuF5V1BtU)

Malade

#68
Quote from: Dr. FiemostActually the emulator is ok, it is the tune that is not initializing the memory it uses and will be fixed in HVSC #76, out in December.
In the meantime if you really want you can revert the memory init pattern change as a workaround (see https://github.com/libsidplayfp/libsidplayfp/commit/3a970a77bebbb530125cb12d2359e355c67ac8e6?fbclid=IwAR0WkW44Eh7IfAkhbhA3m10EoVacyt1JqNLNE503egXK2hj0x5VuF5V1BtU)

yes i was reading in the github for lspfp and seen ians post on the issue, brilliant that its been figured out ,a simple patch of the $ed00-$ed08 if the sid tune was going to be played would have sufficed for now. glad its been figured out and the sid is being fixed in the next release of hvsc.

//     void reset() // wgc
//     {
//         uint8_t byte = 0x00;
//         for (int j=0x0000; j<0x10000; j+=0x4000)
//         {
//             memset(ram+j, byte, 0x4000);
//             byte = ~byte;
//             for (int i = 0x02; i < 0x4000; i += 0x08)
//             {
//                 memset(ram+j+i, byte, 0x04);
//             }
//         }
//     }
// Update RAM init pattern like it's done in VICE, fixes a couple of tests
void reset() // reverted to 2.1.1 fix for shockwave rider wgc
{
memset(ram, 0, sizeof(ram));
for (int i = 0x40; i < 0x10000; i += 0x80)
{
memset(ram + i, 0xff, 0x40);
}
}

note : i hope there aren't any protected sids ( i have never come across one but you never know ), a bit like some of the old tape loaders will fail in the first few code sections if the memory isn't the standard ( ie 00 check cyberload  ) , considering that the old memory from 2.11 is FF's 00's alternating it shouldn't lead to a problem , if it does it will be fixed / patched.

ps the reason i haven't posted a latest update with the fixes and latest lspfp is i am waiting to hear from Keltic Danor to see what he is doing or releasing as i don't want to hijack his creation.

he done a damn good job and all the best to him.

Malade

#69
Quote from: Dr. FiemostActually the emulator is ok, it is the tune that is not initializing the memory it uses and will be fixed in HVSC #76, out in December.
In the meantime if you really want you can revert the memory init pattern change as a workaround (see https://github.com/libsidplayfp/libsidplayfp/commit/3a970a77bebbb530125cb12d2359e355c67ac8e6?fbclid=IwAR0WkW44Eh7IfAkhbhA3m10EoVacyt1JqNLNE503egXK2hj0x5VuF5V1BtU)

btw , any idea why the memory init was changed, protection in game loaders etc for the test suite?

Dr. Fiemost

The change is based on VICE test suite:
https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/C64/raminitpattern/

Init pattern depends on memory chip types, this is just a common configuration that makes the known protections pass.

Anyway sid tunes should always initialize any memory used, if not they are broken and should be reported as bad rips.
The only chance to run into issues is by playing prg files, which shouldn't be very common, so I don't think is necessary to make the pattern configurable like in VICE. In fact there's no such option in VICE's sid player vsid.

Malade

Quote from: Dr. FiemostThe change is based on VICE test suite:
https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/C64/raminitpattern/

Init pattern depends on memory chip types, this is just a common configuration that makes the known protections pass.

Anyway sid tunes should always initialize any memory used, if not they are broken and should be reported as bad rips.
The only chance to run into issues is by playing prg files, which shouldn't be very common, so I don't think is necessary to make the pattern configurable like in VICE. In fact there's no such option in VICE's sid player vsid.

ok buddy thats interesting to know, and to be honest you've done a brilliant job on libsidplayfp , sounds very good , glad someone took up where simon white and anntti lankila left off , very good work to all of you, and keep up the good work.

Dhry

Quote from: Maladeps the reason i haven't posted a latest update with the fixes and latest lspfp is i am waiting to hear from Keltic Danor to see what he is doing or releasing as i don't want to hijack his creation.
he done a damn good job and all the best to him.

I don't think he (or anyone) would be adverse to you forking the code on github?

DRS

Keltic Danor

Quote from: Maladeps the reason i haven't posted a latest update with the fixes and latest lspfp is i am waiting to hear from Keltic Danor to see what he is doing or releasing as i don't want to hijack his creation.

he done a damn good job and all the best to him.

Hey mate, I appreciate the thought but please hijack away. ;D

Every skin, plugin or anything else I've ever done for XMPlay is, and will always be, for the XMPlay community to run with as they please. I can already see from your work that the SID plugin is in exceptionally capable hands. So you have my blessing to take the wheel, please feel free to rename it, make a new thread or anything else you like too! 8)

Don't worry, you won't be stepping on any toes, whatever is best for XMPlay has my thumbs up.

Sigma Seven

I too am also delighted that we all finally have a brand new, up to date and much needed replacement SID plugin for the mighty XMPlay. :)

Fraggie's one was brilliant in it's own right, but sadly way out of date.

Huge thanks to everyone involved in this one's creation and development. :)

Absolutely magnificent job. :)

A must for SID fans.

I've read through this topic, and so also mondo thanks to everyone who contributed ideas and suggestions. :)

Dhry

deus-ex

#76
Hmm, something didn't work as expected, the windows binaries of v2.3.0 aren't available for download on SourceForge.

Never mind. Although the files aren't available in the file listing, downloading via the green download button works. I got an error message "file not available" when trying to download but it worked nonetheless with a little delay.

Malade

#77
Hi all ,

new update:
xmplay-sidex plugin v1.3 using libsidplayfp 2.3.0 


Change Log
=============================
v1.3
- Update to libsidplayfp 2.3.0
- Improved surround effect to add more jangle to those world class jingles ('sid tunes').
- Voice selection disabled when surround sound is active.
- Added saving of voice config when switching between surround and none surround.
- Various other fixes see libsidplayfp git hub for details ( good work all involved )
- Changed c64 memory pattern to accommodate some sid tunes that do not initialize correctly ( bad rips ), Resulting in corrupt / off key notes being played
  as a result eg: Shockway Rider played corrupt notes.



i will upload the complete source when i have time if i don't forget.

edit:redownload the attachment , slight bug fix , wasn't setting init correctly due to my old config.

thank you for testing, post back if you find any issues.

good work to all involved , all the best. ;D

Sebby75

#78
Wow!! Thanks Malade !!

Testing testing testing...  just couple of things that I have noticed

- i was getting crashes when saving options post update... i had to delete old [SIDex] section from xmplay.ini which seem to have sorted it.
edit #1: well it did not sort it after all... played for a moment with surround... which seem to have resulted in 2nd voice of first sid being disabled (unticked) upon switching surround off.. i cannot save options anymore, as it is resulting in crash each and every time.
edit #2: well so i have deleted [SIDex] section from xmplay.ini again and tried to replicate my crashes but strangely it seem to be ok now... now i wish i kept copy of xmplay.ini to see if there was anything strange being saved here... will keep eye on it if it happens again.
edit #3: well yeah.. I seem to be getting crashes again when switching surround off...  then upon restarting xmplay  surround setting is off but 2nd voice of first sid is unticked... don't know where sid voice config is being saved as i can't see that in xmplay.ini, but looks like something is getting caught up when trying to revert from surround to normal...

- when seeking is enabled and sid is playing... if you change any options and hit save... music restarts but play time and progress bar carries on..

- pop at the start of sid is still there... fade-in doesn't seem to work in SIDex 1.3 while it did work with SIDex 1.1
first screenshot with SIDex 1.1 (without fade-in, 0.1s fade-in, 0.2s fade-in)... you can clearly see difference in produced waveform...
second screenshot with SIDex 1.3 (no fade-in, 0.1s, 0.2s)... produced waveform is identical ragardless of fade-in setting BUT pop is little bit later than in SIDex1.1, around 0.38s in... instead of 0.05s in, which means that SIDex 1.3 seem to be throwing extra sound data at the beginning of song and even if fade-in worked, it wouldn't mask that POP... testing done with various sids.. some do not produce pop, some do... waveforms on screenshot are from 4th subtune of Last_Ninja_3 by Reyn Ouwehand.


Kind regards
Sebby75

Malade

hi ,i will look at them as soon as i can ( some are fixed already btw ) . i do have an idea i will try regarding the click / pop , for info it is the c64 turning on so i could place a variable into the player .a65 code to change a zeropage when it actually initialises, or if there is some way with libsidplayfp that notify's that the c64 has actually initialized and is running code then i could go forward from there, and start the player code in the c64 memory without the c64 initialize sound to the sid chip, or possibly read a rom value maybe to tell the player that the c64 has actually initialized then feed sound into the player which will stop the pop completely.

regarding the switch between surround and standard crash, that's fixed , however there is an issue in which i cant seem to find a way to reset xmplays song time counter without calling load / open when and if seek is used ( seek still works but it cannot reset song time if a change in options is applied ), which was the cause of the crash due to the second sid being actively forced ( maybe this could be added to libsidplayfp to allow cloned sid addresses to be used in the sid mapper without a hack or being forced thats up to dr fiemost to allow or not as he is the man working on it at the moment, i am trying to make it as simple as possible to allow anyone downloading the source to add the latest libsidplayfp to the player code so anybody can make it them selves or improve it so i dont want to be spaghetti code all over the place as that will make things complicated for people who just want a better player or reminisce but tinker, ie download, drop latest libsidplayfp into folder , compile listen ,tinker with code , compile listen and enjoy the memories .

btw thank you for taking the time to post back with the issues , i will look into it and post an update soon.

best regards,
         Malade.