/\ + ___/ \___ . \ / . + . \ / + / \ . + __/\__ /__ __\ _____ _______ ________ \ / -- __/\__ \ / ---- __/ \ - / \_- / \---- /_ _\ ----- __/\__ \ / \/ __\ __ \__\ __ /__\ __ /__ \/ \ / ---/_ _\--- __/\__\__ \/ __ \/ _/ __ \/ _/ \--------- /\ - /_ _\ \/ \ / / \/ _ \/ __ \ ___/ \___ \/ /_ _\ \ ___/\ \\ /\ \/ ___/ \ / --------/\------\/-----\_____!NE7--\____// /--\______/--------- \ / ----- ___/ \___ _/_/ /___/ \_\_/ \ \ / \ X ORB presents X /__ __\ \ / //_\ /_\\ \ / / \ \___\ "orbtraxx 3 - fUJi" /___/ \/ /__ __\ / / (commodore 64 musicdisk) \ \ \ / \ / \ / \/ / / | CREDITS - | \ \ \/ | | \/ /\ | CODE: ultra , 4mat | /\ \ \_|_ MUSIC: Various _|_/ / ----------------/ \ / SUPPORT: Keops \ / \-------------- \ X NFO: ne7 / Triad (thanx) X / / / \ THANKS: see below / \ \ \_/___\ /___\_/ /\ | / \ | /\ \_\ / \ /_/ ----------------/ \\/ Last time we brought you Atari \// \-------------- \ \ 8-bit music, this time it's / / /__/ Atari 16-bit music! \__\ ----------------\ \ ___ ___ / /-------------- / /__ / You will need a 6581 chip to \ __\ \ ----------------\___//_\ play the digi drum tracks. /_\\___/-------------- Notes & Instructions: --------------------- * Each disk loads independently and features 10 songs from Atari ST demos and games. * Menu: Use Crsr Up/Down & Crsr Left/Right to move up and down. Press Space to select a song. There is a playlist timer below the songs that will countdown and load the next track automatically if nothing is pressed. As songs return to the menu when they finish you can leave the disk on the menu and it'll play all 10 songs in order if you wish. * Player: Press F1 to switch to different volume envelopes, F3 to switch different envelope fx types. Press Space to exit back to the menu. * The digidrum songs require a 6581 sid chip to work, the rest are fine on either sid chip. See indicator icon at bottom left of menu for which songs support which chips. To make digidrums hearable on the new sid you can add a hardware fix to your c64. Just search for digi boost. * The intro features a PLUS/4 TED chip wrapper playing music from that machine. Credits: -------- Intro, loader integration, playlist code, reset screen and various bugfixes by ultra. Menu, players code, intro music and song stream converters by 4mat. Exomizer compressor and byte stream decrunch sources by Magnus Lind. Disk loader by Mafiosino (http://csdb.dk/release/?id=111136) Menu font originally by Knighthawks on the Amiga, converted down to a 2x2 char font. YM file format created by Leonard/Oxygene. Music sources: -------------- Atari ST YM files sourced from the YM Archive maintained by aldn. We also made use of the YMDump tool by Bulba S.V. for easier parsing of song data and debugging in our converters. Special thanks: --------------- Matt Furniss, Jason Page, Chris Huelsbeck, Big Alec, Chris Abbott, Rez, Ray Manta, Akira Xyno, 505, Mermaid, Jason Kelk for their support. Thanks to the websites above for their music archives. We tried to contact many of the musicians but didn't reach all of you, hope you don't mind your tracks being included. Some info on the converter/players: ----------------------------------- Being a software solution without generated audio, nothing can be simulated exactly. Here are the elements that are simulated to some degree by the players: * Source data comes from either YM or VGM files, converted to own data format and then Exomizer compressed. * Noise - Either straight noise or mixed tone/noise. (alternating between frames for the latter) * Volume support in either direction at any volume. Though there is some clicking at low volumes. If this bothers you use the COMP volume curve. Volume curve options are: AY - For Atari ST/Spectrum/Amstrad songs. A reasonably close approximation of the heavy log curve of the AY/YM chips. COMP - A louder version of AY with a smoother curve, should help with the 'clickier' tracks when they rapidly jump volumes. PSG - A reasonably close approximation of the log curve of the SN64789 chip. (not used here) LINR - A direct "linear" conversion of the volume of the song to C64 sustain values. Not recommended for playback but you can hear the difference in curve drop-off between chips. * Envelope - Envelope volume waveforms supported on AY chips. Partial 'buzz' fx support. For the buzz these rules are applied: 1) If buzz is enabled a saw wave is used as the waveform. 2) If two channels are free when playing a buzz envelope the harmonic is played on the second channel. (with chosen buzz waveform) 3) If only one channel is free the 'best' pitch is chosen from the root or harmonic, or there's a bypass to only use the root pitch. 4) If two or more channels are trying to use envelopes simultaneously the saw wave is used for each. This works best with bass buzz sounds though it has a go at other fx types, with varying levels of success. * Digi drums - Requires 6581 sid chip for playback. See menu indicator at bottom left of screen. * SID fx - Using either one or both timers for dual sid tracks. * PSG/SN64789 support - For playing tracks from the BBC Micro, Master System etc. The noise channel alternates with an existing tone channel on different frames. Some features are handled directly in the player while the rest are part of the conversion tool. Getting rapid volume changes on a SID chip ------------------------------------------ As you know getting the SID chip to rapidly change volume per frame leads to unstable results, which other sound chips like the AY and PSG don't have. Below I've posted the ramshackle solution I used in this and the Atari 800 wrapper in my last demo. It's a bit 'clicky' at low volumes but otherwise is pretty stable for changing to any volume instantly. Looking through the code below I'm sure some of it probably isn't even needed, but eh as it works I didn't want to change it if some random cycle delay is somehow making it work better. The waveform gate is kept on at all times except when this bit of code is being triggered. While this isn't a perfect solution by any means hopefully it's useful to anyone doing similar work. I'm sure one of the sid gurus out there can resolve the clicking problem too. In the demo the player routine is from $b900 in memory if you want to check how it's used in the playback. ;--------Volume switching code lda newvolume cmp currentvolume beq dontupdatevolume ; new volume is the same so dont update sta currentvolume bcs volumefix ; if new volume is greater do the volume fix ; Volume is lower so just store it as the new sustain, set release to max ; and carry on with rest of player. asl asl asl asl and #$f0 clc adc #$0f sta $d406 jmp dontupdatevolume volumefix ; Shift volume to be new sustain value and push it on stack asl asl asl asl and #$f0 pha ; Set sustain/release to zero lda #$00 sta $d406 ; Wait a bit... nop nop nop nop nop nop nop nop ; Set waveform register with a valid waveform or sync/ring mod, the actual one ; doesn't seem to matter as long as gate is unset. lda #$02 sta $d404 ; Set Sustain to new required volume with a release of zero. pla clc ; this was just in here when I was experimenting with different release values. adc #$00 sta $d406 ; Reset Attack/Decay. lda #$00 sta $d405 dontupdate ; Do your pitch/waveform changes etc. here. ;--------------------------------------------------