c64 .sid player coming soon to specy 128!!!

c64 .sid player coming soon to specy 128!!!

the first old version uses only square waves, 4 years ago:

but the new will support nearly all sid capabilities:

these videos are from enterprise 128 machine, which has similar sound chip like AY
«1345

Comments

  • WOW!!! I hope to see a similar program for the ZX!!!

    WOW, stra wow!!!
  • Sounds awesome!

    How will this work on 128 Spectrum? AY and beeper, to get the 'dirt'?
    WIP Tritone Demo
    No more html on dropbox. :(
  • FrankT wrote: »
    Sounds awesome!
    How will this work on 128 Spectrum? AY and beeper, to get the 'dirt'?
    Only AY will be used, and the quality is worse, because on Speccy we are not able to set 10KHz interrupt, so the 50Hz control interrupt stops the digi playback for 1,6% of CPU time (5 raster line)
    Test version is available, please test it :)
    SIDBasic.tzx is the player which contains ASTERIX.M64 music also, if you press Space during playback the screen changes to black and new file can be loaded, if error occured during load then the border changes it's color fast and waits for pressing a key, after new file can be loaded.
    Thanked by 2FrankT Pegaz
  • Thanks, It sounds really good. .)
    Is it possible to further improve sound quality, becouse the Enterprise version sounds perfect.
  • edited February 2017
    Geco wrote: »
    Test version is available, please test it :)

    Thanks. Tested a few songs, Last Ninja 2, Commando, Cobra, Cybernoid. Sounds really good, only problem is songs loop too early.

    Does it play PSID, PSID64 or RSID sid's? Do I just put a sid on a tzx, or do they have to be altered? I notice the first 498 bytes contain 0xD2. I think I can make the tzx with zx blockeditor.
    I want to try Turrican, Battle Valley, Delta, Ocean Loaders etc.

    Cheers.
    Post edited by FrankT on
    WIP Tritone Demo
    No more html on dropbox. :(
  • I had to persuade my emulator to continue loading from tape instead of auto-stopping, in case anyone is having trouble.

    It looks like you are using an 8-bit volume table so I'm trying to understand where the extra noise is coming from (esp compared to your enterprise play on video). Is the program just playing using the sidSynth loop until an interrupt occurs? So you're using the interrupt to sample the sid registers effectively and update some analog waveforms? On the enterprise you are able to sample the sid registers at 11kHz whereas on the spectrum you can only sample at 50Hz?

    The video irq looks heavy on computation so that ought to disturb the sidSynth timing with clicks or noise.. does the enterprise have a programmable LP filter to get rid of that?

    Maybe I'm misunderstanding what is going on there..
  • yay.. more idiots ripping out sid chips out of perfectly working c64's #sarcasm
  • edited February 2017
    Sounds like it's interleaving AY envelopes with AY buzzer. Heavy use of the buzzer in hvsc.raw.
    Post edited by FrankT on
    WIP Tritone Demo
    No more html on dropbox. :(
  • edited February 2017
    FrankT wrote: »
    Sounds like it's interleaving AY envelopes with AY buzzer.

    It's an 8-bit dac with the interrupt poking in waveshaping and ring modulation. If that's the case, a 50Hz interrupt is not going to be adequate to update the analog waveforms and that's why there is extra noise. The SID chip is a low bandwidth device so 11kHz is high enough for those things, especially if the enterprise can apply a lowpass filter to get rid of extra noise.
    fog wrote: »
    yay.. more idiots ripping out sid chips out of perfectly working c64's #sarcasm

    Does the sarcasm mean you know this is an AY chip or no? :D
    Post edited by Alcoholics Anonymous on
  • This is looking really really promising and much more useful than the Amstrad CPC version that was out awhile back...

    Im very eager to see how this develops, as its something of a dream to hear some of these SID pieces come to life on our humble speccy...

    I am however having problems understanding how one converts the SID files into the appropriate format however...

    The batch file seems to suggest that you have to start with a .M64 file rather than a straight SID file, but I can't for the life of me find any info as to what a .M64 file format corresponds with - is that a tape or disk format for c64 emulators or something?...

    I also tried to compile the ay_da_opt.exe & tapeenc.exe tools, which I did for Windows XP, but I don't how to use them, and the latter seems to throw me errors when I try to recreate the compile instructions that are included in compile.sh using Windows equivilents...

    And is there a reason everything has to be encoded in some elaborate loader format rather than allow a simple .TAP format?...

    I really want this to develop, and would love to see a user friendly format so amateurs like me can tinker with it... Its just begging for a simple SID to ZX interface to allow easy conversions of SID tunes directly, but I can't for the life of me see how the conversion is done at this stage...

    Anyone had any luck converting any SID tunes with this yet?...

    Eager to know...
  • Pegaz wrote: »
    Thanks, It sounds really good. .)
    Is it possible to further improve sound quality, becouse the Enterprise version sounds perfect.
    Maximum a bit, but I do not think so, IstvanV made optimalization on the 50Hz control code, some T-State can be saved but then the code would bigger. Enterprise version sounds better, becuause digi playback is in 10KHz interrupt, the control is in 50Hz interrupt, and interrupts are always enabled, unfortunately on there is no other interrupt possibility on speccy.

  • edited February 2017
    FrankT wrote: »
    Thanks. Tested a few songs, Last Ninja 2, Commando, Cobra, Cybernoid. Sounds really good, only problem is songs loop too early.
    Cheers.
    Unfortunately the songs which are longer than about 2:40 sec will be restarted at this point, because 6 RAM segments could be used for the unpacked data.
    FrankT wrote: »
    Does it play PSID, PSID64 or RSID sid's? Do I just put a sid on a tzx, or do they have to be altered? I notice the first 498 bytes contain 0xD2. I think I can make the tzx with zx blockeditor.
    I want to try Turrican, Battle Valley, Delta, Ocean Loaders etc.
    Cheers.
    It is not so simple :)
    IstvanV wrote 3 programs:
    1. SID_DUMP: make a SID register dump from SID
    2. SID_CONV: convert (4 byte is used per channel) and pack SID register RAW data to M64 file which can be played back on Enterprise
    3. TAPEENC: create TZX from M64 files.
    I converted about 2000 SID to M64, you can use it to create TZX, what I created I used TAPEENC, and deleted the 1st 2 block, with Speccy Block editor.
    Here you can find them: M64 files
    Post edited by Geco on
  • I It looks like you are using an 8-bit volume table so I'm trying to understand where the extra noise is coming from (esp compared to your enterprise play on video).
    The extra noise generated by the control code which runs at every 50Hz, because it disrupt digi playback for 1,6 % of CPU time.
    Is the program just playing using the sidSynth loop until an interrupt occurs? So you're using the interrupt to sample the sid registers effectively and update some analog waveforms?
    Yes :) The converted sid registers, 4 byte is used:
    00-01 frequency
    02: b7 ring mod, b5-b6 waveforms, b0-b4 volume (emulated by envelope and SID's D418 reg)
    03: PWM value
    On the enterprise you are able to sample the sid registers at 11kHz whereas on the spectrum you can only sample at 50Hz?
    Sample playback is 10KHz on speccy also, just it does not run from 10KHz interrupt, the control is 50-300 Hz on Enterprise depends on the original SID playback speed, on Speccy it is always 50Hz.
    The video irq looks heavy on computation so that ought to disturb the sidSynth timing with clicks or noise.. does the enterprise have a programmable LP filter to get rid of that?
    Maybe I'm misunderstanding what is going on there..
    Yes, the video irq generates the noise, on Enterprise Dave has programmable interrupt possibilities so we can setup interrupt from 50Hz to 125KHz, digi playback runs in 10KHz interrupt (it varies based on CPU speed, on 8MHz machine it is 20KHz), and the control is 50-300Hz , and interrupt is always enabled, this is the reason why there is no additional noise.


  • Part of me says that, at this stage, we should perhaps be making poker face comments like 'You aren't even using the beeper, can't you do something about that row transition noise?' :) Nevertheless, very, very impressive work.
    Spoiler:

    What is the reason for the unusual tzx data format? Is this perhaps the Enterprise's native loading scheme? It doesn't seem to be all too well received by most emulators I use (one even crashes outright). However, ZX-Blockeditor sees it as a valid .TZX, so it's probably not a bad thing
    Thanked by 1Geco
  • Hikaru wrote: »
    What is the reason for the unusual tzx data format? Is this perhaps the Enterprise's native loading scheme? It doesn't seem to be all too well received by most emulators I use (one even crashes outright). However, ZX-Blockeditor sees it as a valid .TZX, so it's probably not a bad thing
    IstvanV wrote a special turbo loader for Specball (speccy conversion from Enterprise by Zozosoft), it differs from enterprise loading scheme i think, the main purpose could be load as fast as possible :)
    Thanks for the hints, I had an idea in the beginning to stretch out the control part to very small portions, but I dropped this idea, the counter idea seems to be very good.
  • Tap files, using standard loader is faster with emulation, and with real speccy connected to DivIDE. Perhaps it would be possible to stream the data from DivIDE, so that songs of any length could be played. Is this possible? I don't have DivIDE, but have seen them in use, playing streamed videos and the like...
    WIP Tritone Demo
    No more html on dropbox. :(
  • FrankT wrote: »
    Tap files, using standard loader is faster with emulation, and with real speccy connected to DivIDE. Perhaps it would be possible to stream the data from DivIDE, so that songs of any length could be played. Is this possible? I don't have DivIDE, but have seen them in use, playing streamed videos and the like...
    Without interruption of playback, unfortunately it is not possible, the program load the M64 file unpack it to pages 00,01,03,04,06,07 then reorder the data, and preprocess to faster control during playback (it takes 5-20 seconds)
  • Would it be possible at some point to obtain the final version (and the songs) in the TAP format - for real ZX Spectrum - and not the TZX, to avoid emulation?
    ZX81/ZX Spectrum/Amiga/Atari music: http://yerzmyey.i-demo.pl/
  • Yerzmyey wrote: »
    Would it be possible at some point to obtain the final version (and the songs) in the TAP format - for real ZX Spectrum - and not the TZX, to avoid emulation?
    Yes
  • I have noticed it just today and it's a really impressive stuff !

    The quality is worse of course than original, it's a bit like listening to SID on old telephone but it's still a big achievement.

    I tried Commando tune which I consider one of the best SID tunes and could immediately recognize these funky sounds ;)

    Please polish it more if possible. I'll be watching this thread :)
  • Wow, works well on real Speccy, wow! If it can be improved will be fantastic!
  • Wow, works well on real Speccy, wow! If it can be improved will be fantastic!
    Great, thanks for the info, we could not test it on real HW :)
    Probably the sound quality will be a bit better, the control code will be much shorter.
  • Hi all, and mainly authors, that's awasome, hearing SID tunes from AY chip. Many thanks.

    TAP format would be certainly much better then TZX. Handling TZX even in emulator and joining them together in ZX Blockeditor is not much convenient, but I understand it was a test version.

    Can't wait for official release....:))
  • If there is no error in the program, then it is the final version of SIDBasicSP
    I tested it with some songs, but anything can happen.
    Thanked by 2Hood mulder
  • Great stuff... Im at work right now, so can't test it yet, but I was wondering: Is there any chance that you could share with us the tools that you used to turn the .SID tunes into .m64, so that people can convert their own SID tunes using this?...

    Many Regards,
    Karl :)
  • EG: What does "epcompress" refer to?... Is that a separate tool somewhere?... It is mentioned in your compile SH file...?
  • edited March 2017
    kgmcneil wrote: »
    EG: What does "epcompress" refer to?... Is that a separate tool somewhere?... It is mentioned in your compile SH file...?
    Yes, Epcompress is a compression utility specially developed for Enterprise by Istvanv (it can be used to compress any file from any computer, but it has special Enterprise features also )
    kgmcneil wrote: »
    Is there any chance that you could share with us the tools that you used to turn the .SID tunes into .m64, so that people can convert their own SID tunes using this?...
    About 2000 SID's converted to M64
    The utilites for creating M64 files from SID's are included into SIDBasic Enterprise version :) All great utilities developed by IstvanV.
    SIDBasic (both Enterprise and Speccy version) is the result of "teamwork" IstvanV and me worked together on it.
    Thanks Hikaru for your hints, counter was used, and helped to reduce runtime of control rutin by saving the interrupt usage.
    Post edited by Geco on
    Thanked by 1Hood
  • I've tried the new version in a few emulators and unfortunately it seems that there's no sound at all in most of them this time. The only one where it worked for me was UnrealSpeccy with the sound chip explicitly set to the AY8910. Looking at the code, I think the reason must have to do with how you've changed the way that the AY registers are selected. The high bits are important too, so you can't just output #88 and hope that it selects the AY register 8. So basically try to revert to the old way.
    Spoiler:

    A couple of other things I've noticed. The port number for 128K page switching using OUT (nn),A should be #FD, not #7D. In fact, to maximize compatibility, it should be #7FFD but that depends if BC is available so I can understand if you want to avoid that. I'm not sure about doing OUTs to #COFD in place of #FFFD either, although that in itself 'seemed to work' last time
  • thank you very much for your help
  • The utilites for creating M64 files from SID's are included into SIDBasic Enterprise version All great utilities developed by IstvanV.

    Thanks for that Geco, I will try to examine those tools some time tomorrow when I have time... I appreciate you sharing them... :)
Sign In or Register to comment.