------------------------------------------------------------------------------- SID DUZZ' IT V1.801 (c) 2002 SHAPE ------------------------------------------------------------------------------- Written by Geir Tjelta and Glenn Rune Gallefoss ------------------------------------------------------------------------------- INTRODUCTION: ------------------------------------------------------------------------------- SDI is a music tracker system for the Commodore 64. BACKGROUND: ------------------------------------------------------------------------------- SID Duzz' It is built on ideas from JCH/Vibrants editor, Olav Morkrid/Panoramic "Digitalizer" editor, Geir Tjelta/Shape/Moz(ic)art "SID Systems" and Stein Pedersen/Panoramic/Prosonix "Steintronics" player & editor, and Rolf Runar Bakke/Shape' editor "voice-eater". The player have been updated and changed through the years that have passed but it's origin is mainly from Rob Hubbards player. The name, SID Duzz' It, was invented by us while watching a terrible TV commercial from America. It was a screwdriver that really did it! HARDWARE COMPATIBILITY: ------------------------------------------------------------------------------- Disk drives: 1541(II), 1571 and 1581 (Oceanic, FD and CMDHD have not been tested) Computers: C64x/C128x Cartridges: The Final Cartridge III: Works with fastload and fastsave on 1541(II) and 1571. You will have to use the KILL command before loading from a 1581 drive. Action Replay 6: Works with fastload and fastsave on 1541(II), 1571 and 1581. Epyx Fastload: Works with fastload and fastsave on 1541(II) and 1571. OVERALL KEYBOARD COMMANDS: ------------------------------------------------------------------------------- <- Fast forward F1 Play from mark F2 Set play mark F3 Stop/Continue play F4 Edit/Synth/Record mode F6 Tracker data on/off F7/F8 Select note octave = Play current line Z Play from current line RunStop Sequencer/Sound edit SH+RunStop Enter basic SH+L Load music SH+S Save music CBM+S Dump music CBM++ Next tune CBM+- Previous tune SEQUENCER KEYBOARD COMMANDS: ------------------------------------------------------------------------------- F5 Tracker/Sequencer InstDel Delete a line SH+InstDel Insert a line ClrHome Cycle sequence start/middle/end SH+ClrHome Go to start of tune RunStop Go to sound editor Space Delete down SH+Space Delete up SH+A Increase cursor jump CBM+A Decrease cursor jump SH+D Double sequence length SH+F Clear sequence (From cursor position) SH+K Kill sequence/Unused/Make a sequence ready for use. M Set start mark SH+M Set end mark CBM+M Copy marked area to cursor position SH+C Copy sequence to buffer SH+V Copy buffer to sequence SH+X Sequence line numbers / 2 (From cursor position) CBM+X Sequence line numbers * 2 (From cursor position) CBM+1234 Tracks on/off CBM+RTYU Set channel mark CBM+5678 Go to channel mark :/[ Set track transpose ;/] Set sequence number ,/. Jump down/up 16 lines >/< Increase/Decrease note values (From cursor position) / Press / twice for sound/sequencer split screen ? Set speed calls (1-16) CBM+* Set speed channels When you use the mark function (M and SH+M) you will notice that the marked area turns grey, this area can be copied anywhere within another sequence or inside the same sequence. To use the sequence divide or multiply function (SH+X and CBM+X) you have to place the cursor on a uneven line number. Fill up the sequence with notes and you will understand what this is used for. Channel marking is used for quickly jumping to different positions inside the tune. This has nothing to do with how the tracker loops when it reaches the end flag. Active speed channels are highlighted with light grey on the top of the screen. Precautions : The new raster routine doesn't use tables, only a simple adc calculation for the next d012 position. Therefore you should turn music off when setting speed calls. Could be the raster routine doesnt handle this perfectly, if the music is on. SYNTH keyboard: --------------- 1 2 4 5 6 8 9 + - £ CTRL Q WE R T YU I OP @ * UpArrow Hold down shift to get tie/glide/attack notes. TRACKER KEYBOARD COMMANDS: ------------------------------------------------------------------------------- / Tracker/Sound editor split screen F5 To sequencer > Increase transpose values or sequence values. < Increase transpose values or sequence values. InstDel Delete a track line SH+InstDel Insert a track line Return Set loop mark for current channel SH+Return Set stop mark for current channel SH+123 Swap tracks (all tunes) M Set start mark SH+M Set end mark CBM+M Copy marked area Marking tracks: Dont copy within the marked area and dont copy to a position above the marked area within the same track. You can copy track data to any of the other channels and to subtunes. The marked area is only displayed if the track displayer is turned on (F6). You can only copy tracks when the music is turned off. Swapping tracks: When swapping tracks you should be located at the very beginning of the first tune. All track data is swapped, including sub tunes. You can only swap tracks when the music is turned off. SOUND/INSTRUMENT EDITOR KEYBOARD COMMANDS: ------------------------------------------------------------------------------- N Name sound +/- Select sound SH+A Arpeggio program table SH+D Digi setup SH+F Filter program table SH+I Initial volume table SH+N NMI frequence table SH+P Pulse program table SH+S Sound setup table SH+T Tempo program table SH+V Vibrato program table SH+W Waveform program table Return Put current program line into sound setup Only for waveform, arpeggio, pulse, filter and vibrato. SH+Return Delete program from sound setup. Only for waveform, arpeggio, pulse, filter and vibrato. ,/. Jump 4 lines up/down ClrHome Go to current sound's program line (if there's one). SH+ClrHome Go to start of program line table InstDel Delete a program line. (not for sound setup table) SH+InstDel Insert a program line. (not for sound setup table) You cannot press SH+S to save the tune when you are in sound editor mode. Press Return to exit from Naming the sound. Instruments $20-$2f are only available through the arpeggio program. Last instrument selected is set to default instrument for blue mode. (Synth mode) LOAD MENUE COMMANDS: ------------------------------------------------------------------------------- SPACE Read a new directory into memory * Display files A-Z SH+* Display files Z-A A-Z Set display path SH+8/9 Select disk drive Crsr keys Select music Return Load music ,/. Jump 8 files up/down ClrHome Top of directory SH+ClrHome Bottom of directory RunStop Exit The load menue will immediately access the device you started the editor from, but only on the first time you enter the load menue. Load routine has disk error checks in case there are any problems loading a music. If you try to access a drive that is turned off you will get a message saying "disk status error". The same message will pop up if you try to read a dir and you have removed the disk. Load menue will only display SDI files. All SDI files are tagged with ">" at the beginning of the filename. Maxium number of SDI files on a disk is 160. It's possible to break this limit if you have a 1581/FD or HD, and if you do you will overwrite the load menue. SAVE/DUMP COMMANDS: ------------------------------------------------------------------------------- RunStop Exit Return Save/Dump music InstDel Delete text SAVING: ------- Filename can only be 15 letters long, the 1st letter is reserved for the SDI filename tag ">", it is not displayed on the screen. Save routine has disk error check in case there are problems saving a music. We are using a bytepacker inside the editor that will pack memory 3000-D000 and E000-EE00 thats why the files are rather small, especially compared to JCH's editor. Everything you do will be saved, including marking tags. File size of a empty file is 3 blocks. File size of a completely full music file is approximately 60 blocks. DUMPING: -------- Filename can only be 15 letters long. the 1st letter is reserved for the SDI dumpname tag " " (space), it is not displayed on the screen. Dump routine have disk error check. The dumper converts your tune(s) into a Turbo Assembler sequential file. Sequences with far too much data will cause the dumper to stall. What actually happends is that the dumped sequence data size is larger than the 256 byte limit we have on each sequence. We will try to fix this or atleast display a error message on the sequence that was too large. Furthermore, the dumper is pretty advanced, it will only dump sequences that are in use inside the sequencer/tracker, you don't have to think about killing sequences you're not using to save space. All you have to do is make sure the music sound alright before dumping, and remember that only channels that are turned ON will be dumped, including any subtunes you have. File size of a dumped file will range from 5 to 120 blocks. SOUND EDITOR: ------------------------------------------------------------------------------- Sound setup example: 05 WAVEFORM PRG 08 ATTACK/DECAY 7D SUST/RELEASE 20 GATE TIMEOUT 08 VIBRATO PRG 02 PULSE PRG 01 FILTER PRG 1F BAND/RESONANS 05 Waveform program Points to the waveform table, you can access this by pressing SHIFT+W. 08 Attack/decay 7D Sustain/release 20 Gate timeout/hard restart Let you specify for how long the player shall wait before setting release. For no timeout use values 00,20,40,60,80,A0,C0,E0. The longest timeout is 1f,3f,5f,7f,9f,bf,df,ff 01-1F gate timeout and normal hard restart. 21-3F gate timeout and hard restart 2. 41-5F gate timeout and hard restart 3. 61-7F gate timeout and hard restart 4. 81-9F gate timeout and soft restart 1. A1-BF gate timeout and soft restart 2. C1-DF gate timeout and soft restart 3. E1-FF gate timeout and soft restart 4. The latter one is like using a tie note. 08 Vibrato program Points to the Vibrato table, you can access this by pressing SHIFT+V. 00 indicates NO vibrato. 01-55 Vibrato programs. 56-FF for future expansion. 02 Pulse program Points to the Pulse table, you can access this by pressing SHIFT+P. 00 indicates NO pulse. 01-40 Pulse program 41-80 Pulse program with infinite sweep. 8X where X can be a number between 1-F this value is stored directly to the sid register for Pulse High. 90-FF for future expansion. 01 Filter program. Points to the Filter table, you can access this by pressing SHIFT+F 00 indicates NO filter. 01-40 Filter program 41-80 Filter sweep mode 1 81-C0 Filter sweep infinite mode 2 C1-FF Filter sweep mode 3 1F Band/Resonance settings 00 indicates NO filter. Creating drums: --------------- 00 SNARE DRUM WAVES 00 WAVEFORM PRG 00:09 00 08 ATTACK/DECAY 01:81 CE 88 SUST/RELEASE 02:41 AC 22 GATE TIMEOUT 03:41 AA 00 VIBRATO PRG 04:41 A7 88 PULSE PRG 05:81 DE 00 FILTER PRG 06:FF 05 00 BAND/RESONANS 01 BASED DRUM WAVES 07 WAVEFORM PRG 07:09 00 08 ATTACK/DECAY 08:81 CE 86 SUST/RELEASE 09:41 A6 22 GATE TIMEOUT 0A:41 A2 00 VIBRATO PRG 0B:41 9E 88 PULSE PRG 0C:FF 0B 00 FILTER PRG 00 BAND/RESONANS 02 BASS AND BASED1 WAVES PULSE 0D WAVEFORM PRG 0D:09 00 01:F7 88 08 82 ;Using pulse sweep 08 ATTACK/DECAY 0E:81 CE 02:81 2e 10 42 86 SUST/RELEASE 0F:41 A6 20 GATE TIMEOUT 10:41 A2 00 VIBRATO PRG 11:41 00 01 PULSE PRG 12:FF 11 00 FILTER PRG 00 BAND/RESONANS 03 BASS AND BASED2 WAVES PULSE 0D WAVEFORM PRG 0D:09 00 01:08 00 03 82 ;Using pulse hold 08 ATTACK/DECAY 0E:81 CE 02:81 2e 10 42 86 SUST/RELEASE 0F:41 A6 20 GATE TIMEOUT 10:41 A2 00 VIBRATO PRG 11:41 00 01 PULSE PRG 12:FF 11 00 FILTER PRG 00 BAND/RESONANS These are all examples using Hard notes, but you can ofcourse use Soft notes to create drums as well. WAVEFORM PROGRAM: ----------------- WAVES c1 c2 c3 00:41 00 01:41 03 02:41 07 03:FF 00 1st column (c1) displays program line position. 2nd column (c2) displays waveforms and waveform commands such as Jump (FF) - Delay (FE) - ADSR (FD) - Multipulse (FB) and Repeat (FA). 3rd column (c3) displays note values and other waveform commands values. Ordinary Waveforms: 03 Sync Bit: Synchronize Oscillator with Oscillator 3 frequency. 05 Ring Modulation: Ring modulate Oscillators 1 and 3. 11 Triangle waveform. 21 Sawtooth waveform. 31 Pulse waveform that works best on new sid chips. 41 Pulse waveform. 51 Pulse waveform that works with both old and new sid chips. 61 Pulse waveform that works on old sid chips. 71 Dont know how this sounds on new sids. 81 Noise waveform. Arpeggio Waveforms: When creating arpeggios you have to use the following waveforms: 91 Triangle waveform. A1 Sawtooth waveform. B1 Pulse waveform that works best on new sid chips. C1 Pulse waveform. D1 Pulse waveform that works with both old and new sid chips. E1 Pulse waveform that works on old sid chips. F1 Dont know how this sounds on new sids. Possible note values: 00-5E Soft notes, added to note+track transpose. 60-7F Soft notes, subtraced from note+track transpose. 80-DE Hard notes, overrides note+track tranpose. Jump command (FF): FF XX Jumps to program line position XX. Delay command (FE): FE XX Delay the next waveform for XX frames. ADSR command (FD): FD XX AD SR XX tells the player how many frames to wait before setting gate off. This value is anded with #$7f. 00 no gate off 80 no gate off AD = attack decay value. SR = sustain release value. Following example creates a nice ADSR effect: 00:09 00 01:41 00 02:fe 0f 03:41 00 04:FD 10 05:90 89 06:40 00 07:ff 01 Drum command (FC): FC 00 SDI FC 01 MON FC 02 ROB Unsupported for now. Multipulse command (FB): FB P2 0X YY Switches between two pulse programs. The instrument must have a pointer to a pulse program from the sound setup. P2 = second pulse program pointer. X = 0 start with P2 pointer. X = 1 start with sound setup pulse pointer. YY = switch speed. Example: 00:09 00 01:FB 02 02:01 07 03:41 00 04:FF 03 WF REPEAT command (FA): Must be used together with the jump command. FA XX XX = 01-7f Tells the player to repeat the following FF jump XX times. When the last FF jump is executed the player automatically jumps to the line below the FF command. Example: 00:FA 08 ;repeat 8 times 01:09 00 02:81 ce 03:41 a7 04:41 a5 05:41 a2 06:FF 01 07:21 00 ;ends here after the repeats. 08:FF 07 The FA command can be used together with all the other waveform commands. Press Return to put program line into sound setup. VIBRATO PROGRAM: ---------------- VIBRATO c1 c2 c3 c4 00:10 00 00 01:FF 03 32 1st column (c1) displays the table position. 2nd column (c2) displays the delay value and infinite loop command (FF). Delay values range from 01-FE. 00 is for future expansion. FF is infinite loop. 3rd column (c3) displays vibrato width. (00-7f going up then down) (80-ff going down then up) 4th column (c4) displays vibrato speed. Special example: Using values greater than 80 in column 4 will produce what we call the Crazy Comet loop. 00:08 00 00 ;wait 8 frames 01:FF 10 BE ;cracy comet loop You can call a vibrato program from the FX column in the sequencer with $21-$3f. Press Return to put program line into sound setup. PULSE PROGRAM: -------------- PULSE SWEEP c1 c2 c3 c4 c5 01:F7 88 08 82 ;jump and cut to program line 2 02:01 2e 30 42 ;continous sweep on program line 2 1st column (c1) displays the table position. 2nd column (c2) displays Pulse low and Pulse high starting value. 3rd column (c3) displays Pulse high/Pulsehigh sweeping value. 4th column (c4) displays sweep speed. 5th column (c5) displays sweep mode or sweep jump. 5th column commands: 00,40,80,C0 Sweep until reaching end value, then the sweep will stop. No jumping to other pulse program line will occur. The result of the pulse sweep all depends on the values used in c1 and c2. 0X-3f Sweep till end value then cut to the c2 value. X indicates which program line to cut to when reaching end. 4X-7f If X points to the same program line then the sweep will be continous between the two values in c3. If X points to a different program line the sweep will first go all the way betweem the two values in c3, then it will sweep to the new program line value in c3. 8X-BF Sweep till end value then cut to the c2 value. Behaves the same way as 0X-3f but the sweep is reverse. CX-FF Continous sweep between the 2 values in column 3. Behaves the same way as 4X-7f but the sweep is reverse. PULSE HOLD c1 c2 c3 c4 c5 01:08 00 18 82 02:01 00 18 81 Pulse hold is another special case for creating peculiar pulse sweeps. c2 is the init pulse value. If c3 is equal zero, c4 will be used as a delay value, the player will decrease this value down to zero, then perform the jump value in c5. Press Return to put program line into sound setup. FILTER PROGRAM: -------------- This program works just like the pulse program, with one exception: The low/high byte starting values in column 2 have switched places to high/low. Press Return to put program line into sound setup. ARPEGGIO PROGRAM: ----------------- The following example displays 5 arpeggios. The data values is the same for arpeggios 00-03 but the speeds are different. Arpeggio 44 is totally different from the others. ARPEGGIO c1 c2 c3 c4 00:00 00 15 ;Arp. 00 - 037CF - sound 15 - speed 1 01:03 00 55 ;Arp. 01 - 037CF - sound 15 - speed 2 02:07 00 95 ;Arp. 02 - 037CF - sound 15 - speed 3 03:0C 00 D5 ;Arp. 03 - 037CF - sound 15 - speed 4 04:8F 05 15 ;Arp. 04 - 0484 - sound 15 - speed 1 05:00 00 00 06:04 00 00 07:08 00 00 08 84 00 00 1st column (c1) displays the program line positon & indicates arpeggio Number. 2nd column (c2) displays arpeggio data. 3rd column (c3) displays arpeggio program line pointer. 4th column (c4) displays arpeggio speed & sound number. Column 2 uses Values greater than $80 to set loop. In column 4, if you want to play an arpeggio with instrument number $15 using speed 4 you must enter $d5. If you want to use speed 1, you must enter $15. Remember that the instrument you set in column 4 need to use these waveforms $91,$a1,$b1,$c1,$d1 in order to access the arpeggio table. You call the arpeggios with $40-$6f from the sequencer. Pressing Return jumps to the start of a arpeggio (using the jump pointer in column c3), the cursor will be placed at the beginning of the arpeggio data in column c2. Pressing SH+Return jumps back to the position you last jumped from, the cursor will be placed on column c3. This way you can quickly check your arpeggios. In older versions of this editor you had to scroll down using cursor keys. TEMPO PROGRAM: ------------- TEMPO c1 c2 c3 00:02 00 01:83 00 The tempo program works pretty much like the arpeggio program. The difference is that you don't have column 4. 1st column (c1) displays the program line position & tempo program number. 2nd column (c2) displays the the tempo values. Using values great than 80 indicates a loop. 3rd column (c3) displays the program line lookup pointer. To set default tempo program press RETURN on the lookup pointer you want to use. (Notice that the TP value in the down-right corner of the screen will change) You can also call these tempo programs with $40-$6f from track 4 in the sequencer. INITIAL VOLUME: --------------- If you want to change the volume or make the volume fade in you can access the INVOL menue from the sound editor by pressing Shift+I. c1 c2 00:14 ;volume for song 00 01:0F ;volume for song 01 02:F4 ;volume for song 02 1st column (c1) displays song number. 2nd column (c2) displays volume for the song. The high nibble of c2 is used to set fadein, valid numbers are 1-F where 1 is the fastest fadein (0 = no fadein ). The low nibble of c2 is the starting volume of the song, valid numbers are 0-F (0 = no volume and F = max volume). Using max volume together with a fadein value will not produce any fadein. The fadein routine will always fadeup to max volume. Default volume for all tunes on startup is $0F. Press ClrHome to go to current song's volume number. THE TRACKER: ------------------------------------------------------------------------------- The tracker looks pretty much like this when you start up the editor: OFF 00 00 OFF 01 00 OFF 02 00 OFF 03 00 xxyy xxyy xxyy xxyy A000unusedA001unusedA002unusedA003unused J000 J000 J000 J000 xx displays the Transpose value yy displays the Sequence number Valid Tranpose values: 80-9F Transpose down A0 No transpose A1-BF Transpose up Valid Sequence numbers: 00-7F Jump pointer: J000 The jump pointer is a 2 byte value. You can set the jump pointer in the tracker by pressing Return. Stop tag: STOP The stop tag triggers the music player to stop the music channel. You can set the stop tag by pressing Shift+Return in the tracker. THE SEQUENCER: ------------------------------------------------------------------------------- The sequencer consists of 4 channels. Channels 1-3 are ordinary sid channels while track 4 are used for main transpose and tempo changes. In the digi version of this editor channel 4 is used for digis. All sequences are marked with "unused" when you start the editor, to make a sequence usable you have to press SH+K and "unused" changes to "-- ---". Now you can change the sequence size with SH+D or SH+InstDel. There are 3 different edit modes in the sequencer. You can change between them by pressing F4, the edit bar will change color between Grey, Blue and Red 1) Grey mode (Normal mode): You can type notes while the music is playing or when the music is turned off. 2) Blue mode (Synth mode): You can type notes with sound output. You cannot play the music at the same time. To select a new sound you can type in the sound number or arpeggio number in the FX column, or you can select a instrument from within the sound editor (+/-). 3) Red mode (Record mode): Red mode is ONLY available when the music is playing, try pressing F4 and you'll see that the edit bar turns red and the sequencer is scrolling all the sequences. If the channel you are editing is turned ON you can record your notes at this point. If the channel you are editing is turned OFF you can play along with the music. You can't edit the FX columns while in record mode. Special 1: Pressing F3 to pause the music returns you to grey or blue mode, and the edit bar will be at the position where you stopped your music. Special 2: Pressing F4 to switch mode returns you to the position you had before you pressed F1 to play the music. Special 3: When you have the split screen up (sequencer/sound edit) you will not be able to record your notes. All keyboard inputs to the sequencer is is ignored (This is only for record mode. (Blue mode and Grey mode will behave as normal)). This way you can safely edit your sounds while being in red mode. Special 4: Please dont edit the tracker while in record mode because all data input is directed to the sequencer. SEQUENCER FX + NOTE COMBINATIONS for channels 1-3: -------------------------------------------------- Each sequence has two colums, the first is the FX column where you control what kind effects you want to use, the second is the note column. FX NOTE -- --- Empty line 06 --- [00-1F] Set sound number 06 and no note 10 C-4 [00-1F] Set sound number 10 and hard note C-4 06 c-4 [00-1F] Add sound number to waveform and tie note c-4 2E C-4 [21-3F] Set glide value 2E and hard note C-4 2E c-4 [21-3F] Set glide value 2E and tie note c-4 22 --- [21-3F] Set vibrato program 02 40 --- [40-6F] Set arpeggio 00 and no note 44 C-4 [40-6F] Set arpeggio 04 and hard note C-4 6F c-4 [40-6F] Set arpeggio 2F and tie note c-4 74 --- [70-7F] Set release 04 (cant have a note combination here) 74 C-4 [70-7F] Set sustain 40 and hard note C-4 7A c-4 [70-7F] Set attack A0 and tie note c-4 -- C-4 [C#0-A#7] Hard notes -- c-4 [c#0-a#7] Tie notes -- FLG [C-0] Set gate on for current sound -- flg [c-0] Set gate off using current sound release value 70 C-4 [70] Restore current sound ADSR values with hard note C-4 Tie notes are displayed with a brown background color inside the editor. The note for the attack function is displayed as a tie note, but it is a hard restart note. SEQUENCER FX + NOTE COMBINATIONS for channel 4: ----------------------------------------------- FX NOTE -- --- Empty line 06 --- [01-1F] Set tempo to 06 and no transpose 04 C#0 [01-1F] [C-0 to A#7] Set tempo to 04 and transpose 1 -- D-0 Set transpose 2 41 --- Look up tempo program 01 44 FLG Loop up tempo program 04 and transpose 0. This channel controls main speed and main transpose for all channels. It's not necessary to use this channel, but you can create some strange tunes by changing the speed and transpose values here. The only problem here is when setting a too high transpose value, it could make the editor crash. Keep the transpose between FLG and C-2. Starting the first sequence line here with -- FLG is a very good choice. SEQUENCE SIZES: --------------- 00 is min lenght of a sequence. 7F is max length of a sequence. TRACKER/SEQUENCER SCREEN: ------------------------------------------------------------------------------- =TOP OF SCREEN========================== 1a 1b 1c 2a 2b 2c 3a 3b 3c 4a 4b 4c 000 03 7F 000 06 3F 000 07 3F OFF 03 7F 1d1e 2d2e 3d3e 4d4e A00302 D#1A00606 D#2A00708 D#7A00302 D#1 A009-- ---A005-- ---A002-- ---J000-- --- A009-- ---A005-- ---A002-- ---03 -- --- 9E09-- ---9E05-- ---9E02-- ---04 -- --- 9E09-- ---9E05-- ---9E02-- ---05 -- --- A209-- ---A205-- ---A202-- ---06 -- --- A209-- ---A205-- ---A202-- ---07 -- --- STOP-- ---STOP-- ---STOP-- ---08 -- --- 1a = Track 1 current Position [000] 1b = Track 1 current sequence number [03] 1c = Track 1 current sequence length [7F] 1d = Track 1 current Transpose (A0) for.. 1e = ..sequence number (03). 2a = Track 2 current Position [000] 2b = Track 2 current sequence number [06] 2c = Track 2 current sequence length [3F] 2d = Track 2 current Transpose (A0) for.. 2e = ..sequence number (06). 3a = Track 3 current Position [000] 3b = Track 3 current sequence number [07] 3c = Track 3 current sequence length [3F] 3d = Track 3 current Transpose (A0) for.. 3e = ..sequence number (07). 4a = Track 4 is turned OFF. [OFF] 4b = Track 4 current sequence number [03] 4c = Track 4 current sequence length [7F] 4d = Track 4 current transpose (A0) for.. 4e = ..sequence number (03). =BOTTOM OF SCREEN======================= INSTRUMT WAVEFORM PULSELOW TRANSPOSE 4 00 00 00 00 00 00 00 00 00 00 00 00 00 ARPEGGIO FILTER PULSHIGH SEQUENCE 01 80 80 80 00 00 00 00 00 00 00 00 00 00 SONG #00 "SDI V1.6B " TP 00/04 01 Most of the information shown here is taken from the player when it is in play mode (F1). "TRANSPOSE 4" is the octave value (F7/F8). "SEQUENCE 01" is the cursor jump value (SH+A/CBM+A). "SONG #00" displays tune number. (CBM+/-). "TP 00/04 01" is (00) tempo program pointer, (04) tempo data value and "01" is speed calls (SH+?). TRICKS TO MAKE A TUNE USE LESS MEMORY: ------------------------------------------------------------------------------- The music player itself is around $0900 bytes long +/- the effects you want to use. Inside the Sequencer: 1) Instead of repeating the same notes inside a sequence you can make the tracker repeat the sequence. That will minimize the file size a lot, especially for the finalized tune. 2) Only set the instrument you want to use when it is necessary, you can save 1-2 bytes per note when finalizing the tune by doing this. The same goes for arpeggio and sustain/release values. Attack HAVE to be set each time. 3) Each tie note takes 2 byte in the finalized (dumped) tune. One byte for the duration and one for the note. While hard notes only needs a new duration when the duration value is different from the last. You will save a lot of memory by making a instrument that emulates tie notes. Make a instrument using gate time out E0 and set pulse prg to infinite sweep. This will sound just a like a tie note. We use this trick on solo leads quite a lot. Example: Fill up a $1f long sequence with only hard notes. Dumped sequence size will be : 34 bytes. Fill up a $1f long sequence with only tie notes. Dumped sequence size will be : 65 bytes. 03 TIE SOLO EMU WAVES PULSE 13 WAVEFORM PRG 13:41 00 01:0b 5e 30 41 00 ATTACK/DECAY 14:FF 13 86 SUST/RELEASE E0 GATE TIMEOUT 00 VIBRATO PRG 41 PULSE PRG 00 FILTER PRG 00 BAND/RESONANS You might have to set release before you use a instrument like this. (It has to do with sustain and decay value of previous sound played.) 4) Here are some dump examples: Large letters = hard notes Small letters = tie notes Editor: Dumped sequence: 01 C-4 81,63,30,0 -- --- -- --- -- --- 01 C-4 81,61,30,32,34,35,0 -- --- -- D-4 -- --- -- E-4 Sound 01 and hard notes. -- --- -- F-4 -- --- 01 C-4 81,61,30,61,B2,61,B4,61,B5,0 -- --- -- d-4 -- --- -- e-4 Sound 01 and tie notes. -- --- -- f-4 -- --- 01 C-4 81,61,30,AE,B2,AE,34,AE,B5,0 -- --- 2E d-4 -- --- 2E E-4 Sound 01 and hard glide + tie glide. -- --- 2e f-4 -- --- 40 C-4 C0,61,30,61,B2,61,B4,61,B5,0 -- --- -- d-4 -- --- -- e-4 Arpeggio 40 hard note + tie notes. -- --- -- f-4 -- --- 00 C-4 80,61,30,C1,32,81,34,C3,35,0 -- --- 41 D-4 -- --- 01 E-4 Hard notes and sound + arpeggio. -- --- 43 F-4 -- --- 00 C-4 80,61,30,F2,30,81,30,F3,30,0 -- --- 72 C-4 -- --- 01 C-4 Sound and sustain effects. -- --- 73 C-4 -- --- 01 C-4 81,61,30,F2,30,63,F4,0 -- --- 72 C-4 -- --- 74 --- Sound, sustain and release effect. -- --- -- --- -- --- 01 C-4 81,61,30,F9,B2,63,F4,0 -- --- 79 c-4 -- --- 74 --- Sound, attack and release effect. -- --- -- --- -- --- 01 D-4 81,61,32,A1,5F,86,63,B2,0 -- --- 21 --- -- --- 06 d-4 Sound, vibrato and waveform add effect. -- --- -- --- -- --- A empty $1F long sequence will look like this dumped: 7F,5F,0 A empty $3F long sequence will look like this dumped: 5F,FF,5F,0 A empty $7F long sequence will look like this dumped: 5F,E0,7F,5F,0 Inside the sound setup: 1) Using the arpeggio routine, instead of the waveform table to create arpeggios. 2) There's a trick with filter sounds and non-filter sounds also, but thats very hard to explain. Briefly explained : you can trigger the player to set a channel as a filter channel and all instruments played in that channel will have filter sweeps. What you need is to make a initial filter sound: 00 F/INITIAL FILTER 00 WAVEFORM PRG F0 ATTACK/DECAY ;This.. 00 SUST/RELEASE 22 GATE TIMEOUT ;......will not create a sound output 00 VIBRATO PRG 00 PULSE PRG 01 FILTER PRG 1F BAND/RESONANS FILTER PRG: 01:C0 1C 01 41 Now, for the rest of the instruments you will be creating write 80 as the "FILTER PRG" and 00 as "BAND/RESONANS". Like this: 01 BASS 00 WAVEFORM PRG 01 ATTACK/DECAY c8 SUST/RELEASE 20 GATE TIMEOUT 00 VIBRATO PRG 00 PULSE PRG 80 FILTER PRG 00 BAND/RESONANS This sound can be used on all channels, and is only played with filter on the channel triggered as filter channel with the instrument "F/INITAL FILTER". If you play a sound in the filter channel that doesn't have 80 as FILTER PRG or is not a filter sound at all you will destroy the filter sweep, and on older sid chips you will get filter clicking. Which doesnt sound good at all. 3) Using the same pulse programs, vibrato programs, filter programs and mixing the waveform jumps. FINALIZING A TUNE: ------------------------------------------------------------------------------- That's all done in our littled modded Turbo Assembler version. The assembler uses a fastload that is only compatible with 1541/1571 disk drives. But entering files with <- and E is done using normal load routines. Load the player source you want to use, there are 2 available sources, the normal ".sdin164" and the speed source ".sdif164". You can switch disk drives from TASS by pressing <- and shift+d Enter your dumped file at the end of the player source. Now you can change the effects you want to use at the top of the source, all effects are set to OFF as default. Here's a brief explanation on each effect: sid = $d400 ;The sid chip have a few mirror banks try setting this ;value to $d5C0 and you'll still hear music. ;For a C128 only banks $d400-$d500 will work. mzero = $fe ;The player is using $fe and $ff as zeropage. rem4ch = 1 ;1 = Ignore 4th channel. ;If you made a tune using 4 channels you have to set ;this parameter to zero. rem1wf = 0 ;1 = Ignore 1st waveform byte. ;If you want to save raster time and memory you can set this ;parameter to 1. The following effects are used inside the waveform table: remwfd = 1 ;1 = Ignore waveform delay (FE command). ;If you are using the waveform delay command you ;have to set this parameter to zero. remadsr = 1 ;1 = Ignore adsr command (FD command). ;If you are using the adsr command you have ;to set this parameter to zero. remmp = 1 ;1 = Ignore multipulse (FB command). ;If you are using the multipulse command you have ;to set this parameter to zero. remwfr = 1 ;1 = Ignore waveform repeat (FA command). ;If you are using the waveform repeat command you ;have to set this parameter to zero. remtrk = 1 ;1 = Max $0100 bytes per track. ;It is possible for a track to be $0800 bytes long. ;But in most cases you won't even exceed the $0100 limit. ;Set this parameter to zero, if you think you have. The following effects are for the frame player only: remopts = 0 ;1 = Optional speed channels. ;If you made a speed tune that only made use of one or two ;speed channels you can set this parameter to 1. ;If you do you have to set active speed channels ;In the parameter below. spdchan = %00000111 ;%00000001 = channel 1 ;%00000010 = channel 2 ;%00000100 = channel 3 ;%00000011 = channel 1 and 2 ;%00000101 = channel 1 and 3 ;%00000110 = channel 2 and 3 ;%00000111 = all channels (better use "speed1" instead.) frames = 4 ;This is how many speeds you have made the tune in ;you can enter a value between 2 and 15 here. ;This value has nothing to do with the player. It's for ;the music displayer which you can start with <- and 3 . system = 1 ;1 = pal ;0 = ntsc ;This has to do with the music displayer. ;US machines have to select zero for ntsc mode. For both normal and frame versions: When you have set the effects you want to use it is time to test the music. <- and 3 assembles the music and you can start by pressing S. Some text will be displayed on the screen and the music should be playing. If there's something wrong with the tune you can enter Turbo Assembler again by pressing CBM. Change the effects you want to use and test the music again. When you are happy with you choices you can save the music, from you monitor: s"hello world",8,1000,last address + 1 Yes, you have to add 1 byte to the end address. USING THE MUSIC IN A DEMO/GAME: ------------------------------------------------------------------------------- You are allowed to use the music player in a game free of charge, but you will have to credit us for writing the music player. Simply state that the music was written in Sid Duzz'It, or you can credit us with our real names. You are allowed to modify the player source, and if you find a way to make a routine faster, then please email : grg@shape.tm Now let's say you assembled the tune to $1000: ldx #00 - $1f jmp $1000 ;Init call for the tune you want to play. jmp $1003 ;Main play call for the tune. lda #$00-$7f jmp $1006 ;Fadeout call for the tune jmp $1009 ;Speedplay call for the tune. Correct raster setup for a speed tune on a PAL machine: A pal machine has 312 scanlines. raster = 312/frames (frames = how many speeds the tune was made in) Correct raster setup for a speed tune on a NTSC machine: A ntsc machine has 262 scanlines. raster = 262/frames (frames = how many speeds the tune was made in) You will need one Main call to the player, and the reamaining calls must go to the speedplay call. If frames = 4: IRQ: lda #0 cmp $d012 bne *-3 JSR $1003 lda #raster cmp $d012 bne *-3 JSR $1009 lda #raster*2 cmp $d012 bne *-3 JSR $1009 lda #raster*3 cmp $d012 bne *-3 JSR $1009 RTI Remember that the $d012-$d011 timing is critical to get the same sound output as in the editor. KNOWN BUG ISSUES: ------------------------------------------------------------------------------- 1) The dumper will stall if sequences contains to much data. Filling up a $7F sequence completely with hard notes and different sounds will not stall the dumper, no matter what! But when you include tie notes it will stall, because 2 bytes is needed for each tie note. 2) Transpose values in channel 4 can cause editor to crash, especially in the digi version. (has to do with the dd04/dd05 registers). DICTIONARY: ------------------------------------------------------------------------------- Arpeggio - A method to emulate chords on the c64. Channels - Tracks Glide - Glide from note X to note Y with a specified speed, there are two different note possibilities one with hard restart glide and one with tie glide. Instrument - Sound Line number - All sound programs or sequences have a line number displayed on the left to make it easy understand where you are located. Program line # - (In sound edit) The number displayed before ":" (ie. 01:). Sequence - Other editors call this a sector (ie. sync). Sequencer - FX columns and NOTE columns for all channels. Similar to a pattern in protracker on Amiga. Sound - Instrument Tie note - A note that doesnt restart the different sound setup programs it works like a glide note but doesnt have a glide value. Tie glide - A tie note using the glide function. Track line - Each track line consists of 2 bytes the first is transpose and the second is the sequence number. Tracker - Sequence transpose and sequence variables for all 4 channels. Tracks - Channels MEMORY OVERIEW: ------------------------------------------------------------------------------- 0800-2C00 Editor part 1 2C00-3000 Unused 3000-3800 Track 1 3800-4000 Track 2 4000-4800 Track 3 4800-5000 Track 4 5000-CF00 Sequences CF00-D000 Buffer D000-DA00 Directory memory DA00-E000 Editor part 2 E000-E100 Waveform program table E100-E200 Waveform program note table E200-E300 Pulse program table E300-E400 Arpeggio data E400-E500 Arpeggio program table E500-E600 Vibrato program table E600-E700 Filter program table E700-E900 Sound setup E700-E740 Waveform program pointer E740-E780 Attack/Decay E780-E7C0 Sustain/Release E7C0-E800 Gate timeout E800-E840 Vibrato program pointer E840-E880 Pulse program pointer E880-E8C0 Filter program pointer E8C0-E900 Filter band/resonance E900-EA00 Tempo data EA00-ED00 Sound names ED00-ED20 Default tempo lookup table for each tune ED20-ED40 Channels on lookup table for each tune ED40-ED70 Tempo program table ED80-EDC0 Mark channel positions EDC0-EDE0 Invol Volume program EE00-EE80 Sequence lengths EE80-F000 Unused F000-F0C0 Note frequence table F0C0-FFBC Editor part 3 FILE OVERVIEW: ------------------------------------------------------------------------------- 32 Tunes 127 Sequences 32 Instruments (but you get 48 through the arpeggio routine) 48 Arpeggios 85 Vibrato porgrams 64 Filter programs 64 Pulse programs 48 Tempo programs PROGRAMMING STATUS: ------------------------------------------------------------------------------- 17/09/02 PL: Pulse hold function 27/07/02 PL: HCL optimized player. 27/06/02 ED: Added colors to track marking. 20/06/02 ED: Fixed the record bug where you could enter note datas while in sound editor. 20/06/02 ED: Rewrote the disk error check routines, decided to use kernal error messages instead. Atleast you will get a sensible error message now. 20/06/02 ED: Rewrote the $d012 frame routine, we dont use tables anymore. The editor checks for ntsc/pal machine. 20/06/02 ED: Added Volume program. Linked volume program to dumper routine. 18/06/02 ED: Added SH+Return for sound edit. Shortened the dumper routine quite a lot. 15/06/02 ED: Time of day clock added. 14/06/02 PL: Waveform repeat command (FA) installed for: Normal and frame player. 12/06/02 PL: Attack function installed for: Normal and frame player ED: FX value 70-7f + tie note to set attack note. ED: Started working on next version ------------------------------------------------------------------------------- 25/05/02 NEW V1.5 VERSION RELEASED 25/05/02 ED: Mark+copy command for tracker was updated. ED: Drums commands are no longer in use. ED: Dir bug was fixed. Overwrote d400-d418. ED: When pressing F3 (stop), editor returns to your last mode. 13/05/02 PL: Updated NMI player, 70-7f can be used to set volume. High nibble of byte 3 in digi setup is initial volume. Low nibble is unused. 07/12/01 ED: Disk save, disk load is now secure. Disk error checks. 06/12/01 ED: Copy and paste sequence function. 05/12/01 ED: Swap tracks command added. 05/12/01 ED: Moved all load routines to rom area $DA00-$DFFF. 21/11/01 ED: Optimized many of the editor routines. ------------------------------------------------------------------------------- 20/04/01 NEW V1.3 VERSION RELEASED 20/04/01 ED: Mark+copy command for Tracker. 12/02/01 ED: Moved packer routines to rom area $DA00-$DFFF. 24/01/01 ED: SH+N and SH+D to edit NMI data and digi data. 22/01/01 PL: Wrote a more advanced digi player. 24/11/00 PL: Combined speed and normal player into the same editor. 24/11/00 ED: Load tunes from the device used. 29/10/00 ED: Added cbm check on shflag. 20/10/00 ED: Splitted the sources into two, one for digi and one for normal edit. 13/07/00 ED: Load menue crash fixed. (stack crash) 13/07/00 PL: MultiPulse init fixed. 12/07/00 ED: Edit with sound. (blue bar) 12/07/00 ED: Record mode/play along. (red bar) 11/07/00 ED: 16 letters instrument names. 10/07/00 ED: Vibrato Dumper 100%. 08/07/00 ED: Play from cursor (Z) and play line (=). 01/07/00 ED: Scratched the old digi and speed sources. ------------------------------------------------------------------------------- 1999 NEW V0.98A VERSION RELEASED 1998 ED: Moved the source over to PC. 1998 ED: Wrote a lot of SDI tools. 1997 ED: SDI V0.98 of the editor was finished. 1995 ED: Started with a new editor during military service, mostly built on the GT editor sources. The name Sid Duzz'It was taken from a US tv commercial. 1993 ED: GT finished his GT editor. 1989-1991 ED: Sid systems developments. ------------------------------------------------------------------------------- EXAMPLE TUNES COPYRIGHTS: All tunes was arranged/remixed/converted by GRG and GT. ------------------------------------------------------------------------------- 19 /R.H Rob Hubbard - Arranged by GT. ACE II /R.H Rob Hubbard - Arranged by GT. AGENT X /T.F Tim Follin - Arranged by GT. CANES /SCO Scortia - Arranged by GRG. CHIMERANG /JCH Jens Christian Huus - Arranged by GRG. COMMAND /R.H Rob Hubbard - Arranged by GT, two tunes. COMPO TUNE /STL Steel - Arranged by GRG. D'BREEZE II/J.T Jeroen Tel - Arranged by GRG. DAZZLER /M&D Mitch & Dane - Arranged by GRG. DELTA /R.H Rob Hubbard, two tunes - Arranged by GT. DROWNMINLUV/M&D Mitch & Dane - Arranged by GRG. ELIMINATOR /J.T Jeroen Tel - Arranged by GRG, four tunes. FLIMBO JING/GRG Reyn Ouwehand - Short jingle by GRG. HARDGLIDE /SCO Scorita - Arranged by GRG. HELLFIRE /DRX Drax - Arranged by GRG. HIT DA BAZE/J.B Johannes Bjerregaard - Arranged by GRG. HOLLYWOORD /JCH Jens Christian Huus - Arranged by GRG. HOTELCALIF /DKO Thomas Danko - Arranged by GRG. INT.KARATE /R.H Rob Hubbard - Arranged by GT. KAMIKAZE /J.B Johannes Bjerregaard - Arranged by GRG. MAN & DROID/R.H Rob Hubbard - Arranged by GT & GRG. METRO /M&D Mitch & Dane - Arranged by GRG. MONTY OTR. /R.H Rob Hubbard - Arranged by GT, three tunes. NIGHTDAWN /J.B Johannes Bjerregaard - Arranged by GRG, three tunes. NYPHOMAN /M+D Metal & Drax - Arranged by GRG. NUTRIMENT /M+D Metal & Drax - Arranged by GRG. ON ONE /LAX Laxity - Arranged by GRG. PRIAPOS /DRX Drax - Arranged by GRG. PUBHORNY /DRX Drax - Arranged by GRG. ROBOCOP III/J.T Jeroen Tel - Arranged by GRG. SAX NUDDLE /LAX Laxity - Arranged by GRG. SHAPE /J.B Johannes Bjerregaard - Arranged by GRG. SPELLBOUND /R.H Rob Hubbard - Arranged by GRG. SQUAMP /LAX Laxity - Arranged by GRG. SUPER MONAC/J.T Jeroen Tel - Arranged by GRG. SUPREMACY /J.T Jeroen Tel - Arranged by GRG, three tunes. SYNCOPATED /LAX Laxity - Arranged by GRG. W.A.R /R.H Rob Hubbard - Arranged by GT. WISDOM /LAX Laxity - Arranged by GRG. WOW REGGAE /LAX Laxity - Arranged by GRG. ZIMXUSAF /LAX Laxity - Arranged by GRG. -------------------------------------------------------------------------------