SYNC V1.02/V1.14 Below are the original notes by The Syndrom followed by the notes by DJB but first my bits. I tried the 64'er Music Editor with a demo tune and liked it. The Syndrom later worked on it to release SYNC then DJB improved it. Now I changed some minor bits. I have made only minor changes to the 3 main parts, the player, the editor and the packer. The player change is nothing too great although it uses a few more bytes but tunes should be ok with the original packer by The Syndrom, the modded version by DJB and my 2 bug fixed versions. My 2nd bug fixed version implements my player changes. What player changes? The high frequency sets, like drum sounds always write $00 to low frequency register. I wanted to change this so using the FNE support command, it reads from it's internal table. Try messing with it. Something I have not changed is if you loop with $91 and your arpeggio table is not 0 then you use switch, it will treat arpeggio as 00, even if it isn't. This is same for all SYNC versions. I haven't the patience to check everywhere in player that needs to be fixed for this but I do feel it is in more than 1 section. The packer fix is a bug when only 1 super command is used. It seems to pack properly but the support command code is not in the player! The packer only uses code for the used super commands so it can save memory. I think it was a simple CMP #$01, changed to CMP #$00 and it works. My openly available packer (I seem to lost the original fixed version) uses my updated player. Editor changes? It should no longer have that load and freeze/break bug. I think it related to SEI/CLI combo as one routine sometimes went longer or less time and interferred with some interrupt. I have no idea how I fixed it but it's done. I converted the whole lot into source so I could strip out the NOPs and repeats left over from DJB's improvements so it is now less scattered. In the past it was SYS $1FE8 to get the editor started again after a reset. It is now $0806 or something. SYS $0803 may even do the same. It uses a section (DJB added it?) where it checks for a SYNC signature in memory and if found then does not clear memory. Something from DJB's improvement, no idea if in original is the multispeed tune loading. Call it anything and it expect the extra plays to be $1006. If the first 2 characters are "X." then it defaults to $1003. Another thing worth trying is using the left arrow on notes in the sector editor (the key above control). You can get different note inits sound and also with the switch command, it does a gate off effect without using a DUR. I changed the disk IO to use different ROM routines so if you wanted to load "tuneX" and it wasn't found but you wanted to load "songY" (same filename length) it would also fail even if it existed. The packer doesn't have these fixes. I got lazy. It had been so many months working on plenty of different projects at once and nothing getting released - check my 2000-2003 record yet I have been working on demo code, tools, my own music system (most compromise every frame updates for all needed data to cut raster time, like spreading across 2 frames. My editor doesn't.), The Beergarden text, music, 3 diskmag outfits, Speed, Past and Present 2, Dangermouse... busy but not much released. Now the quickly converted text by The Syndrom from Insider 7. Hello Composers! This is THE SYNDROM typing. Once again I decided to release one of my music tools. This time it's my latest musicplayer+editor+ tunepacker. It's called SYNC what is short for: SYNdrom music Composer (how original :) Anyway,I started to code this, when Leo from the german magazine 64'er (r.i.p.) asked me to write an article series about music-programming. This series contained 4 parts, and each part contained some files on disk. The final part's file was called: "64'er musik-editor v1.0" and was released in summer 1996, if I remember it right. This was a fully working version, but I didn't stop coding and still did some improvements (like more commands, some frame shifting to decrease rastertime and so on.) Actually this player still takes a lot of rastertime ($1a up to $30), it depends how tricky you make use of it. When coding it, I mainly concentrated on functionality and not on rastertime (If I have to do a low-rastertime-tune I use other players). On the disk you will find the editor, the tune-linker and the sourcefile of my audio l contribution for this issue, which is a conversion of a tune of one of my favourite bands called "DE/VISION". The song is called "Take me to the time" and is featured on the album "Fairyland". Just if anybody was interested... :) In this chapter I will just write down the instructions for the editor. All in all it was designed after the famous DMC-editor (Version5), so that one won't have much trouble getting used to it. There is one big difference though: in the sector-editor there are only 5 commands left (SND, DUR, -END-, CUT and SUP). If you know DMC, you will notice that CUT and SUP are new. Well, SUP means SUPER-COMMAND (like JCH called it in his player) and it functions just as a pointer to another table where you enter all the other commands you need for your tune (like filter, arpeggio etc.). The packer then just picks the code for the commands you actually used, so if you don't use many different ones, you don't waste memory for code you don't need. Ok, let's start with the main-screen. Shift + D : enter DISK-MENU (Directory/Load/Save/Exit) Shift + C : change colors Shift + M: change tune Shift + + : Fade In Shift + - : Fade Out V : Set Volume + : Transpose up - : Transpose down Home : Jump to top of the screen/track (press twice) CLR: Jump to end of screen/-END- or STOP! mark (press twice) Shift+F : Clear Track (y/n Shift+A: Clear all (y/n) Arrow up: Copy track into buffer Shift + @: Paste Buffer into Track Shift + S: enter Sound-editor Sh.Return: fenter Sector-editor / : enter Super-command-table . : enter Filter-table , : enter Pulse-table m : enter Wave-table Shift + T: Edit Tune-settings (speed1, speed2, Frames, Init-Volume) Shift + E: Set End-Mark (the byte after is the Jump-To-Value) C= + E: Set Stop Mark Main Keys: f1: Start playing a tune CTRL + 1 :switch Voice #1 on/off f3: Stop playing a tune CTRL + 2 :switch Voice #2 on/off f5: Continue playing a tune CTRL + 3 :switch Voice #3 on/off run-stop: Fast Forward Sound-Editor: First of all I'll explain the individual sound-bytes. The Row looks like this: 00 11 22 33 44 55 00: Attack/Decay Value 11: Sustain/Release Value 22: Pointer for Wave-table 33: Pointer for Pulse-table 44: Pointer for Filter-table 55: right nibble works as speed-byte for wave-table, left nibble is unused (yet) The ADSR-Values should be clear for everyone, the wavetable works like this (almost similar to DMC5): xx-yy xx: Waveform yy: Frequency (if bit 3 of xx is set to 1 (#08), yy will be used as high-byte of the Frequency-registers (with low byte to #0) If the waveform is $90, "it" will loop to the position given in yy, if it is $91, it will stop the processing (saves rastertime, so make use of it, if you don't need to loop (f.e. for leads). BE CAREFUL - there is a bug in the editor-code, when you insert rows in the tables, don't do it on the first position of an instrument, otherwise the init-pointer will be updated too... (actually it's an incomplete Compare-command, but I don't touch that code again!!!). The pulse-table works the same way, except that the first position is the startvalue (high-low), and each following two rows are:} value to add (high-low) number of addings and so on... The filter table has the same structure like the pulse-table, but the filter-values are treated kinda different to usual players... Since I wanted to have the full range of 11 Bit, but they are split in the SID (bit 0-2 in Filterlowbyte, and bit 0-7 in high-byte), I shifted them together, so now it's bit 0-7 in low byte, and bit 0-2 in high byte, that means the full range is from $000 to $7ff. Remember this when using filter! As I told you the tables are accessable through "/.,m" most of the time, though when you are in the soundmenu you can't do it that way, but by pressing Shift+Return on the corresponding pointer. Ah, I almost forgot, change instruments with +/-. Buffer commands are working aswell. The Super-Table: Use +/- to choose between the commands, and enter 4-digit-numbers via the "hex-keyboard" (0-9,a-f).}Available Commands are: CONP: stands for Continuous Pulse, switches on/off the pulse reinit-frame when a new note is played. SRR 00XX: don't know what it stands for since I took the name from DMC 5 (maybe Sustain-Release-Reset), it changes the SR parameter of a note (equal if it's already playing or not), the first byte is unused. If the Sustain is set to #0, it remains unchanged (so only Release will be changed). ADR 00XX: probably (see above) means Attack-Decay-Reset. Due to the structure of SID it only has effect on a note which is not played yet. Both SRR and ADR will be overridden by a SND-Command. VOL 000X: Sets the Sustain-level, it will only be overridden by a new VOL-command. GLD XXXX: Starts the note after the command and glides it by XXXX to the next note (Important - GLD interpretes the next 2 bytes as note1 and note2!!!) SLD XXXX: Slides an already playing note to the note given after the command. Important: if you use SLD, you MUST enter} the GLD-Command into the super-table aswell. This is due to the structure of the code (they both partly use the same code. GLD works without SLD, but NOT vice versa). VIB YXXX: Vibrato (linear), where Y is the speed and XXX is the value. This version is though a bit superior, since the speedvalue actually is used for calculating half-values of the add-value. an example: if the speed is 2, the value will be added to the note for one time, then substracted for 2 times, then added for 2 times and so on. If the speed is 3, half of the add-value will be added for 1 time, then the add-value will be added for 1 time, then substracted for 3 times, then added for 3 times and so on. If you don't understand this now, take a sheet of papers and make a time-frequency-diagram and you will! FLT 00XY: Sets the filter. X is the type and y is the resonance. Please notice that you can use filter on all voices, but the frequency will ALWAYS be controlled by Voice #1!!! To switch filter off, use FLT.0000 CONF: Continues Filter. Toggles between Filter-restart-when-a- new-note-is-played on or off. FRQ 0XXX: Sets the Filter-frequency. This actually influences the INIT frequency corresponding to a first line in the filter-table ARP 0YXX: Sets a new pointer for the Wave-table. It will be overridden by a new SND- or ARP-command and works on both new and playing notes. Y is the speedvalue and XX is the new pointer. FNE 00XX: Finetune of a voice. XX will be (16bit)added to the final frequency output of a voice. But you should be aware of that this is linear, meaning it sounds different on low and high notes (the same goes for vibrato). SPD 00XY: Sets a new tune-speed. X is speed1 and Y is speed2. Sector-edit: Shift+S: Set Sound Shift+D: Set Duration Shift+C: CUT (stops Voice-Audio processing - saves rastertime) Shift+P: Super-command. If you press "/" on that, it will jump to the corresponding command in the super-table. Shift+E or = Sets END-mark.} < and >: transpose sector (from below cursor downwards) up or down (in halfsteps) Shift + + and Shift + - switches between the sectors. Copy and Paste work as usual, aswell as the cursor/Home keys. There is no Clear-command, since you can easily do it by going to an empty sector (using Shift and +) and then copy it into buffer and finally paste it into the sector you want to delete. Known Bugs: Somewhere in the code is a hidden part-time Stack-overflow, so that means the editor could quit into the prompt screen automatically. This mostly happens after loading a tune (or it hangs). In these cases just reset the computer and restart with SYS $1FE8. DON'T make recursive loops! (f.e 00: 01 01: END! 02: 01 ) This will cause the player to never stop processing, so you will have to restart manually (SYS $1fe8) and remove the problem.}If you want the rastertime to be low, just remember that each command takes rastertime, so don't waste it by having double commands (like two SND-commands right aftereachother) (or multiple DUR-commands with the same value) etc. in the sector. You can also try to look at the 3 voices overally and try some command-shifting to reduce the number of commands per duration. Stryyker - then followed The Syndrom's contact details. I doubt he wants to be disturbed so I cut them. DJB's text: SYNDROM COMPOSER v1.02/1.14+ 9 Speed Versiona Note by DJB/Onslaught Design/Blues Muz' About three years ago, german composer/programmer Matthias Hartung L (The Syndrom/TIA/Crest) K released a music editor named 64'ER Musik-Editor through the magazine 64'ER, which was supposed to be one of the best commercial german magazines available. This version was updated by Matthias and a scene version was released with Insider #7 in March, 1998. I recieved this tool in April'98 (I think) and started using it. After a while it was going to be the ONLY editor I used for writing musics because of how good the package was, but at the start of this year I really wanted to compose in something more than 6 Speed. After this thought and about 5 months later, the whole package is complete. Here's a list of what has been done to both the editor and packer, in my eyes some very nice improvments: Obviously more speeds. Originally I also was thinking about trying to cut down some Rastertime as well, but I don't have enough coding skills at the moment to attempt this. Two different Player configurations, this is in regard to multispeed musics. Press SPACE to access the menu from the Track editor. Here you can decide whether to use the normal $1006 call for the extra frames, or you can use $1003. After selection the editor will store a byte in the musicdata, and the configuration of the player will be recognised by both the editor and packer. NOTE: Don't use any more than 4 or 5 frames using $1003, as the editor can't take anymore. Using $1006 for extra frames lets you select which speed voices you want on/off. Press Shift+1/2/3 K to make the changes, the packer also recognises this too. The way the editor is packed is also unique. If the editor crashes, you can reload the editor and still keep the music that was in memory. A small test is done before the editor is unpacked which checks the memory for a few bytes. You can use the full 16 characters for filenames. MULTIFRAME TABLE The third byte in the music-options table represents how many extra frames are used. They ARE different so please take note of the changes. SYNDROM'S version: Normal, 2, 3, 4, 6 Speed. ($00-$04) DJB's version: Normal, 2, 3, 4, 5, 6, 7, 8, 9 Speed. ($00-$08) Notice how Syndrom's version doesn't have a 5 Speed player, so to play a 6 Speed in my version you have to change the byte from $04 to $05. Well, that's about it. I hope you have a lot of fun with this cool editor, and I also hope to hear some really good quality musics from this package. Stryyker - DJB lists some credits. No need for them. Now back to me, Stryyker. the first docs version had a tune by The Syndrom created in SYNC, as did DJB's docs (tune by DJB though) so I have included a tune by me - Night's Knight. Enjoy