💾 Archived View for mirrors.apple2.org.za › archive › apple.cabi.net › Music.and.Sound › GS.MUSIC.RE… captured on 2024-06-16 at 14:07:09.
⬅️ Previous capture (2023-01-29)
-=-=-=-=-=-=-
Imported MODfiles, Noise Tracker GS and SoundSmith (A Collective GS Music Report and Review) Compiled and Edited by Charles Turley, Ph.D. A FREEWARE - Copyright (c) 1994 by Charles Turley, Ph.D. An amazingly user friendly computer for music compositions, enjoyment and file format versatility, the IIgs has remained useful and popular with its music users, from it introduction in 1986. Now that Apple has discontinued the IIgs' production and the commercial efforts have diminished to nearly 'ZERO' with the music and sound related software, it's effectively become a user supported computer. As such, the IIgs gives both the users and hobbyist programmers, virtual freedom to develop, research and share their knowledge with other users, to keep the computer in an active, enjoyable and useful status, with so many applications, especially music and sound. Imported MODfiles, Noise Tracker GS and SoundSmith, have continued to show their popularity and abilities to preform what the IIgs' other music and MIDI programs can't. With their continual use and inventive applications with music compositions, programs and utilities, it's clear that they still remain popular with the IIgs' music users. While all of the music and sound programs for the IIgs, have their own special effects, abilities, limitations and restrictions, both SoundSmith and Noise Tracker GS have consistently shown their popularity, expanded potentials, faithful use and continued support by the music user. Realizing the IIgs music users need for clear and informative detail, with technical information concerning these programs, their abilities, usefulness and relation to Imported Module files, I've composed this collective report and reviews, with personal notes and general (updated) information I've obtained, concerning; Noise Tracker GS, SoundSmith, Imported Module files - (MODfiles), accessory programs and utilities that compliment and enhance their abilities with each other. I hope that my personal experience, collectives and knowledge will be of some useful value towards the understanding of these programs, in order to stimulate their use, with more creative efforts by their users. The IIgs had no useful modification utilities or editors, that could be used directly with the 'Imported MODfiles' or create them from scratch and then, allow you to save your music efforts back to the same 'Imported MODfiles' format, until just recently. That missing aspect with the IIgs, is no longer present. With the development efforts underway and nearing completion, with respect to the rewrite of Noise Tracker GS v2.00, as a GS/OS application program. Featuring new options such as; converting, editing and saving multi-format music files to the 'Imported MODfiles' format, in (Protracker file format) and supporting most major special effects of the MODfiles, the IIgs and its music users will have the abilities to make, edit, play and 'EXPORT' MODfiles to all of those other computers. With the (FIRST) release of Noise Tracker GS v2.00, you'll have the abilities to create a NATIVE IIgs MODfile from scratch, with your own score and samples, save it and then load and play it with any of the IIgs' MOD Players and EXPORT these new NATIVE IIgs MODfiles to any other computer that can accept and play MODfiles, in the current (Protracker) MODfile format. You'll also have the abilities to do the same things that you could do with the original ProDOS 8 versions of Noise Tracker GS, such as; load, convert, edit with cut/copy/paste (within the music score and/or to the clipboard - for multiple merge scores); Noise Tracker GS files, (all formats), SoundSmith and Imported MODfiles. The added advantages with NTGS v2.00, will allow you to also save your altered, merged/enhanced or original compositions and music scores as, MODfiles, (4 track - Protracker file format, with up to 31 RAM bank samples, of a maximum size of 128k each) to use, edit, enhance and play, on the IIgs or export, to the other computers for their use and enjoyment. The program will let you save any of the music as NTGS file formats; module or score/wavebank sets. But, you can't save them as SoundSmith music scores and wavebank files. It has full editing features, with the new additions of full score cut/copy/paste for; tracks, individual blocks, individual or multiple positions. With all the major 'user friendly' editing (SPREED-SHEET STYLE) score abilities that SoundSmith has to offer, the new NTGS v2.00 program should certainly give the IIgs music users a lot of enjoyment and hopefully, will help this computer gain its respected place within other computer groups, with the creations of NATIVE MODfiles on the IIgs for export to those other computers. I'm currently consumed with beta testing the b8 version and coordinating its design and development. It just keeps getting better and better, with each new beta I get from Dave Swanson. It's a great music program and I'm sure everybody will enjoy this complete rewrite and major upgrade of Noise Tracker GS. While everybody waits for the new (FREEWARE) Noise Tracker GS v2.00 release, projected to be around September 21, 1994, I'm presenting information on other new and useful programs to use with MODfiles, along with a collective of information on MODfiles and reviews of all the IIgs' programs that can be used with them, as well as, a few experimental MODfile; editing and creation, modification and enhancement suggestions. PATtern CHanger (PATCH), by Tony Morales, is a ShareWare utility basic program, which allows you to perform various actions on Amiga MOD pattern data structures. Pattern data structures are simply collections of notes, (sometimes called blocks), that when combined together, produce a musical sequence. PATCH takes any Amiga MODfile, and allows you to adjust all notes in the sequence. PATCH allows you to increment or decrement each note. This may sound like nothing special. But, giving PATCH the correct parameters, you can often produce pleasant sounding alternatives with MODfiles. There are 12 basic notes in each musical octave, (C, C#, D, D#, E, F, F#, G, G#, A, A#,B). If you hear a song in the key of G, this means it's playing with note offsets relative to the note G. Example given, (G, B, D). It's possible to play a piece of music in a different key, such as C. This is the equivalent of the above example, played in the key of C, (C, E, G). Think how many possible notes occur between each corresponding note in the examples. Three notes between G and B, and three notes between C and E. Two notes between B and D, [go up an octave] and two notes between E and G. PATCH takes each note in a MODfile and slides it up or down as many notes as you desire. To play in a different key, slide each note up or down x many notes, where x is the number of notes, (up or down the scale), it takes to reach the new key. If you're confused, consult a person, who knows music for more details. Always make a backup copy of your MODfiles before altering them with PATCH. If you make some alterations that don't sound good, you won't harm the original MODfile. PATCH's unique modification features follow. You're prompted to type in the pathname of the MODfile you're going to use. If the MODfile's in a different directory or folder, than the one you ran PATCH from, you'll need to type in the complete pathname, (/RAM5/MOD.xxx, for example). PATCH then displays the MODfile title, type and number of patterns, with the number of the first and last pattern in the MODfile. Next, you're asked for the start and end patterns to work on. If entering the same values as displayed, PATCH will convert the entire MODfile. You can't enter an ending pattern less than the starting pattern and vice versa. Nor can you enter a negative pattern. MODfiles (that the IIgs can currently deal with), have 4 basic tracks to play notes on. PATCH prompts you if it should operate on a particular track. Type in Y for yes, N for no, at each of the track prompts, (1 thru 4). PATCH then asks you if it should increment or decrement the specified notes. Type I or D, at this prompt. The last option will ask the offset to adjust the notes. There's no way of knowing, other than by listening, which key a particular MODfile was designed in. The best way, is to explore or experiment with various values. Values of 1 or 2 usually raise, or lower, MODfiles by 1 whole note. When you've entered the value, the conversion process begins. PATCH informs you with each pattern it's converting. Most MODfiles only support 3 octaves. So, most likely a note, when adjusted, will fall outside the allowable octave range. If this occurs, PATCH won't touch the note, leaving it the way it was. This results in a pattern that is partially converted. PATCH alerts you and gives you the options to; save the pattern or not save it. If you select no, the pattern remains unconverted. All good patterns are written automatically to disk over the original MODfile. That's why I suggest you backup the MODfile before you alter it. Chances are that your first session with PATCH won't produce a masterpiece. It's possible to do some nice things with MODfiles using PATCH. But, like everything new that you try, it takes practice to make it right. TRACk ediTOR is another very useful MODfile utility basic program by Tony Morales and it's a copyrighted FreeWare. TRACk ediTOR, (TRACTOR) lets you rearrange the tracks in any MODfile. Each MODfile has 4 tracks, and TRACTOR prompts you to specify 2 track numbers, then flips those corresponding tracks around. It requires a IIgs to run, and works fine under any memory configuration. It operates on any valid pattern or range of patterns, in the MODfile. When tracks are flipped the instruments on each track plays from opposite channels. The following table shows which tracks use which channels. Note: (Virtually all '4 Track MODfiles' use this channel configuration). Track Channel 1 Right 2 Left 3 Left 4 Right It's certainly a user friendly program. Launch it, from any application that's capable of running Applesoft ProDOS BASIC programs. The file TRACTOR.BIN, must reside in the same folder as, "TRACTOR." The program prompts you to type in the pathname for the MODfile you'd like to work with. Keep in mind, if the MODfile resides in a different directory, you'll need to type in the complete pathname. It then displays the MOD's title, type, and number of patterns. As previously mentioned, patterns are blocks of notes. It shows you the number of the first and last pattern in the MODfile. First, you're asked to define the range of patterns it should be constrained to when swapping tracks. If you enter the same values as displayed, it swaps tracks with the entire MODfile. You can't enter an ending pattern less than the starting pattern, nor a starting pattern greater than the ending pattern and you can't enter a negative pattern. You're next prompted to enter the number of the first track in the pair of tracks to swap. Enter a number between 1 and 4. You're then prompted for the second track in the pair. This can't be the same as the first track you selected. After you've entered all of this information, the swapping will begin. It will inform you of each pattern it's currently swapping. The pattern is saved to disk as soon as it's swapped. Tony Morales, is the first person to have created MODfiles, better stated 'NATIVE IIGS MODfiles' (ProTracker file format), entirely on the IIgs, using his own digitized samples, with his own manual and original score/sequence efforts, then assembling them by hand. This gives him the status of being the originator and inventor of 'Native IIgs MODfiles'. A two part article written by Tony, featuring his process in 'STEP-BY-STEP' detail, is presented in 'II Alive' Magazine, with the first part in the current issue and the second to be presented in the next issue. Tony could best be described as: 'THE NEW IIGS MASTER OF MODFILES'. I'm sure Tony plans to make many more, MODfile modification, manipulation, enhancement and file conversion programs, to release them for the IIgs users to enjoy. His assistance with techniques and information have been a valued asset, with our development of Noise Tracker GS v2.00. He has developed a vast knowledge and profound understanding of the Noise Tracker GS files, MODfiles and their related players, programs and utilities. He's sincerely commited to the IIgs and the needs of its many faithful users. All he needs, is a little encouragement and support from you, to stimulate him into creating some amazing, user friendly and very useful programming 'WORKS OF ART' for the IIgs. You can write or EMAIL Tony at the following addresses: Tony Morales 2260 Rock St, Apt K Mountain View, CA 94043 GEnie: T.MORALES Internet: hexman@netcom.com --------------------------------------------------------------------------- I've been fasinated and involved with sound and music for many years. I bought my first IIgs 01 ROM computer, in 1986. Because, I found it very useful for my sound and music efforts. I've been working with sound design and engineering efforts for 26 years now. I still enjoy using the IIgs, over either the MAC or PC. As time progressed over the years, I've used all of the IIgs music programs. The IIgs is unique, with its built-in Ensoniq DOC. But, I found the limitations of 64k RAM samples with the music composition and the lack of music program special effects frustrating. Compared to some of the other computers and what they had to offer, with sound and music, I was seriously considering another computer. Al Switzer, the same friend who first introduced me to the IIgs back in 1986, also introduced me to Noise Tracker GS via: beta v0.30 release. As soon as I listened to the music it presented, I knew the limitations with all the other music programs, was no longer of any concern to me. Noise Tracker GS, with its ability to use both the RAM based sound bank and the 64k Ensoniq RAM bank, for sample sound presentations, via swap/caching, limited only by the amount of RAM memory available, opened up an entirely new series of creative and expressive music composition options with the IIgs. With each updated release of Noise Tracker GS, the abilities of the program expanded the IIgs' music formats and composition options. Version 0.70 presented the NT module format and support, along with refined options for loading SoundSmith GS music and importing music modules originally created on the Amiga's, Atari ST's and more recently MAC's and PC computers. The abilities of Noise Tracker GS fascinated me. I began spending all of my spare time studying the program and what it could present with music compositions. I was eager to attempt some Virtual (3-D) Audio compositions and needed to use both right and left channels together, for such efforts. I was able to do this, using the RAM based sound bank. But, when attempting the same with the Ensoniq RAM bank, problems resulted. The program often would lock up or crash, with such dual (Right-Left channel) Ensonic RAM sample assignments. With the release of version 1.0, these problems with assigning both right and left channels to a sample in the Ensoniq RAM bank were eliminated. Version 1.0 allowed me to do this fine with either or both RAM banks and all of their samples. I was eager to see additional functions, improvements and enhancements with updates to the program. After waiting for over a year for an update and finding none available, I decided to write to the author, Olivier Goguel, to ask him when an update to Noise Tracker GS would be released. I mailed Olivier a package with many of my Virtual (3-D) Audio music compositions and thanked him for his efforts, in developing such a fantastic music program for the IIgs. I enclosed $20 as a contribution and requested any updates he had for release of Noise Tracker GS. I also enclosed a list of improvements and enhancements, I thought would be useful with updates to the program, for his review and comments. I received a reply from him a few weeks later, expressing that he was sorry to inform me that v1.0 was his final release for Noise Tracker GS, because the FTA was dead, 'FEU' in french and he had no plans to do any more with the program. He expressed how much he liked the music I sent him, thanked me for the $20 contribution and told me that my wishes for an update to Noise Tracker GS from him, would not be available. Most Noise Tracker GS users assume that the program was an FTA creation and release. Actually, Olivier Goguel was the programmer and author entirely, for the program. He conceived it, developed it, coded it and released it with music, animation, icons and graphic routine contributions from his friends and past members of the FTA, as a final tribute to the memory of the FTA. If you'll carefully check the v1.0 of Noise Tracker GS, you'll note that it saves sound files noted as v0.60, which is actually what Noise Tracker GS v1.0 was developed from. When I pointed this out to Olivier in one of our many lengthy international telephone conversations and asked him about it, he explained that it was indeed, developed from that unreleased beta version and he simply forgot to change the reference to v0.60 in the dialog. We discussed the possibility of upgrades for Noise Tracker GS in many of our telephone conversations. I wrote to Olivier again, expressing how much this computer needed the continuation with the upgrade and development of Noise Tracker GS, asking him if I could continue with such efforts. With his reply by mail, came the entire SRC.CODES for Noise Tracker GS v1.0 with the rights, to continue with development and upgrades for it. I continued to keep in close contact with Olivier by phone and mail. We developed a friendship and co-founded the One World Software Wizards development team in June of 1992. I was given the rights and SRC.CODES by Olivier for many of his authored programs, music, demos, routines, (both released and unreleased - finished and unfinished) to continue with their upgrades and development efforts for the 1WSW team and thru my own OmniSoft Research LAB (OSRL), for release on the IIgs. With Noise Tracker GS as the top priority development effort,the first basic improvements to Noise Tracker GS resulted, when I furnished the SRC.CODES to our (now past) 1WSW team associate, Ken for his assistance with upgrade efforts. With Ken furnishing the SRC.CODES, Ian Schmidt and James Brookes made several modifications, patches and basic improvements with it, by enhancing the sound abilities, filtering efforts, improving its abilities to load more imported module formats and faster swap routines. After reviewing the first upgrade of Noise Tracker GS with Olivier, we expressed concern with several problems the upgrade presented. We both felt, while there had been some basic improvements with enhancing the sound abilities, filtering efforts added, improving its abilities to load more imported module formats and faster swap routines, this was a very hasty and unprofessional effort, having several problems that required prompt action to correct. It was all done in a little over 24 hours, uploaded to the major on-line services and released for downloads, without my knowledge, review or premission. We expressed displeasure at having the copyright to the program, improperly replaced with 2 Meg Music and Ian Schmidts claim to copyright of Noise Tracker GS. I assured Olivier, that I would take the matter up with Ian, A.S.A.P. and make certain these things that displeased both of us were promptly corrected. Taking the appropriate actions, I discussed the matters with Ian at length and had this unauthorized version removed from the major on-line services from any further down-loads or distribution. With the release of version 1.20, we eliminated some problems that resulted with saving and reloading samples from the Ensoniq RAM bank, along with various other minor sound improvements and proper dialog changes, with respect to certain LAME comments in the saved samples and the correct copyright status of Noise Tracker GS to 1WSW and OSRL. When Dave Swanson joined our 1WSW team, he updated Noise Tracker GS to v1.30, our holiday release in December of 1993, giving it additional sound enhancements, filter refinements and faster sound swap improvements, repaired its abilities to correctly save and reload sound samples from both RAM based banks and Ensoniq RAM banks, as either RAW Binary or IFF sound files, plus some additional dialog changes. Noise Tracker GS has been a well received, favored music program and a blessing for this computers music composition abilities. It's gone through many changes, with a few trials and tribulations along the way. It's transcended from its very first conceptual alpha state, as a small binary file named NoiseBlaster II v0.1, when it was nothing more than a simple RAM bank sound/sample loader-player and preview utility from Olivier Goguel, (featured in a past VAMPS/NTV release), thru its Noise Tracker GS beta versions; 0.30, 0.50 and 0.70, on up to its most current upgraded ProDOS 8 release v1.40, with many major internal auto- functional modes and improvements by our 1WSW 'Master Programmer', Dave Swanson. You could say it's gone through its; Alpha, Beta, Delta and Gamma states, now progressing on toward its ultimate 'Omega Factor' capabilities, with continual upgrade efforts from our 1WSW team members, to improve it to the fullest abilities. Now it's under restricted beta testing, as a complete rewrite by Dave Swanson. It's now a GS/OS application program, in the final stages of development as an (ALL-NEW), Noise Tracker GS v2.00. Tony Morales, has developed the NT MOD Player GS/OS application program for loading and playing the NT music module format, from any storage device, having included the functionality of tool 220 in the program, thus eliminating the necessity of tool 220. This program gives you the ability to load and play the NT Module file format via your GS/OS v6.0.1, from the finder, via either your hard drive, 3.5 disk or whatever other device you use to launch GS/OS applications from. Dave Swanson is working on the next (pending) release of Noise Tracker GS v2.00, with many more amazing enhancement and improvement efforts, along with the assistance of many of our other team members, IIgs associates and friends. It has little, if resemblance to the P8 versions of Noise Tracker GS. It has so many new features and improvements, you'll be astounded with its abilities. With its release (COMING SOON !) and continual upgrades, you'll be able to; import MODS and convert them to both of Noise Tracker GS' file formats, using all of their major special effects and vice versa, compose, edit and save your own original MODfiles from scratch. Import SoundSmith music and wavebanks or instrument files, any of the current NT music file formats, save them all and/or create and convert, modify, manipulate, combine and enhance them with ease, to your own specifications. Then, you can save them as a MODfile (IN THE PROTRACKER FILE FORMAT), with all of the major special effects that MODfiles have, for use with any of the IIgs' MOD players or you can port them over to the other computers for their enjoyment by; Amiga, Atari ST, MAC and PC users. The new (FREEWARE) GS/OS application program, rewrite and release of Noise Tracker GS v2.00, will not convert and save any of the music formats to SoundSmith music formats. That ability already exist with the MODCONVERT and MODIFIER programs for the MODfiles. It won't have MIDI support either. Several IIgs MIDI music programs and pending file format converters for them, with the SoundSmith program and its MIDI abilities, will cover any such needs. The SoundSmith MIDI music can be imported into the new Noise Tracker GS v2.00, for additional enhancements and conversion efforts. Nor will it have any intro-music, SHR graphic intro-screen, whistles, bells, dazzle graphic players, screen savers, alarm clocks, jukebox options or the like. It's being presented and released as a serious multi-music format editor, converter, 'user friendly' expressive music sequencer and GS/OS application program, with full featured MODfile creation, edit and save abilities. There will be no upgrades from our 1WSW team, for the P8 Noise Tracker GS program. However, the new GS/OS rewrite of NTGS, will support, import and export, allowing you to convert all of the ProDOS NTGS music files. Soon, you'll all have the abilities to create, convert, edit, enhance, alter and modify MODfiles to your own individual specifications and desires, with GS/OS user friendly ease and do it with Noise Tracker GS v2.00 on your own wonderful IIgs music machine. I'm deligently coordinating its beta testing and development, every day and having a blast creating, editing, saving and playing native IIgs and anhanced original Imported MODfiles, via; ShellPlay, sonicTracker and MODZap. Within a few weeks, you too can do the same (using the popular PROTRACKER file format) and dazzle all those other computer users with your own impressive 'NATIVE IIGS EXPORTED MODFILE' creations and musical works of art. I just finished an international telephone conversation with Olivier Goguel, in FRANCE, informing him of the (ALL-NEW) Noise Tracker GS v2.00. We discussed many things about it and he's looking forward to my sending him the program, so he can warm up his 'friendly old IIgs' and check it out. He was very happy to hear about all the new NTGS rewrite has to offer. Noise Tracker GS lives on, and will continue to push the IIgs to its maximum musical abilities, with each future upgrade and release. About MODCONVERT v1.2 - (FREEWARE) This program consist of two files; a basic file (MODCONVERT) and a binary file (MODCONVERT.BIN). They must remain together in the folder/directory they were copied to in order for the program to work. The program was originally written by our (now past) 1WSW team member Alex, from Germany and given to me to improve, upgrade and distribute as a FREEWARE. The program will convert any MOD music file, from any computer; MAC, AMIGA, IBM or ATARI ST, to a SoundSmith GS or SSP music file. You must make sure that the MOD file is a binary file (BIN). If it's not, the program will not recognize it or attempt to do a conversion. If it's not a binary file, then you should change the MOD file to a binary file, (BIN - file type 06), before you attempt to do any converting with this program. You can use any file type changer utility to do this. I've found, in using this program, that it has many limitations with both; quality and construction of the samples/instrument files that it saves with the converted music file. Thus, I use Noise Tracker GS to load the MOD file, then I save the instruments via Noise Tracker GS as 'IIF' files, for use with the converted SoundSmith music file. I usually don't select the option to convert both the music and the instruments of a MOD file, for this reason. When you do use this mode, the program saves the instruments files with default names; INST1 - INST15 and so on, as raw binary file types. The older versions of MODCONVERT, wouldn't handle any MODfiles that were too large or that had too many instruments or tracks to convert. The older versions of the program would simply lock-up or break into the basic line where the error was. This version was updated to allow you the option to ' DO IT ANYWAY ', without such problems occurring. KEEP IN MIND THAT WHEN YOU: ' DO IT ANYWAY ' YOU'll MOST LIKELY, GET SOME BIZARRE SOUNDS WHEN SAVING THE INSTRUMENTS. SO DO WHAT I SUGGESTED AND LOAD THE MODULE FILE VIA NTGS, THEN SAVE THE SAMPLES/INSTRUMENTS AS IFF. BE SURE TO USE THE DEFAULT NAMES; INST1 - INST15, ETC. SO THAT THE SAVED IFF INSTRUMENTS - SAMPLE/SOUND FILES CAN THEN BE CONVENIENTLY LOADED BY SS OR SSP, TO MATCH THE CORRECT INSTRUMENTS NEEDED FOR THE MUSIC SCORE. The only advantage I can see currently, to converting an imported module to the SoundSmith GS or SSP music format is to be able to manipulate, enhance and modify the music score, to save that file, then import it to NTGS for additional changes, enhancements, modifications, etc. With the release of the new GS/OS application program (FREEWARE), Noise Tracker GS v2.00 and its continual upgrades, having implemented the special editing functions of SoundSmith, i.e.; track, block, individual position, volume fade-in and fade-out, etc., the logic to such conversions will become antiquated ! You can also use the most current release of MODZap (v00.90b3) to save MOD sounds, as raw data sound binary files, (KEEP IN MIND, THAT MODZAP CAN'T CURRENTLY SAVE A LOOP SAMPLE, AS A LOOP SAMPLE) then convert them to IFF files, modifying, cut & paste EDIT functions and a vast host of other special effects, using such programs as; AudioZAP, SSS Sound Editor (SE.SYSTEM), NTGS v1.40, Noise Tracker GS v2.00, Sound Ace, Sound Edit (USE), DigitalSessions, Sound Shop, etc. The MODCONVERT basic program is slow and works best if copied to RAM disk. You can make the conversion process fast and simple by copying the MOD files and the program files to RAM, with ProDOS and the Basic.system file, then run the program and save the converted music and/or instruments to RAM also. You can also copy and use MODCONVERT on your hard-drive. After you've done your conversion, you can copy the converted files to where you want them, load them into SoundSmith GS or SSP and make the modifications, etc. to the music score, rearrange or substitute the instruments, etc., to make your own customized version of the original MOD music file, as a new SoundSmith GS or SSP music and instruments wavebank set, then save them, via SoundSmith GS or SSP to the disk or device of your choice. I'm sure those of you that enjoy using the SoundSmith GS or SSP program will be glad 1WSW has updated and released this MODCONVERT P8 basic program. You'll enjoy using it and if you do any conversions with it and SoundSmith GS or SSP compositions, I'd like for you to send them out for down-loads, to other IIgs music users to listen to and enjoy. If you can't, send them to me and I will ! It's still far from perfect in many respects, but it's a FREEWARE and it's the only program I know of that will allow you to convert MODfiles to SoundSmith GS music files from P8 basic. I received a beta of MODCONVERT II in April, from Alex, which is a P8 system file. It has problems when saving the samples and converting the music score from an imported MODfile. But, it looks like it will be a useful program, when the final version is perfected and released. Alex also expressed in his letter with the beta, that his Ninja Force group have several unique music programs and utilities, that will work with Noise Tracker GS, SoundSmith and imported MODfiles for the IIgs, under development for release soon. The Ninja Force group from Germany are a very talented team of programmers that are devoted to the IIgs and its many users and should prove to contribute many worthy wares for the IIgs users needs. The 'Compact' option found in the AudioZAP Sound Editor, can reduce the size of the 'IIF' files, to about 1/2 their original size. Then you can save the sound files for use with SoundSmith GS or SSP GS in the SS file type/format. This would effectively, allow you to load and include more complex sample/sounds and still remain within the 64k maximum, for the total of 15 instrument limitations, with SoundSmith. The FREEWARE program, Modifier by Ian Schmidt, is a GS/OS application program for converting the imported MODfile score and sounds or instruments/samples. It saves the music score and instruments as files that SS or SSP can load and use. Modifier has its limitations also. It saves the score and all samples, without regard for the (64k) limits the Ensoniq RAM places on the amount of samples possible, which total 15. MODifier makes no effort to insure that the instruments fit into 64k of DOCRAM, nor does it 'synthesize' effects SoundSmith doesn't support. It converts many module effects into SoundSmith equivalents. MODifier can't coherently convert all MOD music scores, as there are thousands of MODs and at least 19 programs on the Amiga which use some variant of the module format. MODifier primarily supports ProTracker, NoiseTracker, and StarTrekker modules. Some programs such as DeliTracker use a completely incompatible format so don't even attempt to convert DeliTracker MODs, MED MODS, OKTAMODS, OKTA-MED MODS and other like varieties. None of these Imported MODfile formats can be used with the IIgs currently and most like won't be of any use for any IIgs program support for a long time to come, 'IF EVER'. MODifier has detailed, ample documentation to assist you with using it proficiently, to its maximum abilities. SuperSound PRO is a program developed and released by 1WSW, during 1992-93, (that is a generic FREEWARE clone of SoundSmith GS) when Huibert Aalbers was a 1WSW team member. Several bugs and problems were found with the SHAREWARE and final v1.0.1 release of SoundSmith GS. In a conversation I had with Huibert Aalbers, (the author of SoundSmith GS) he informed me that he accidently destroyed some 37 lines of the SRC. CODE for SoundSmith GS v1.0.1, and was attempting to reconstruct them, to send me, so that our One World Software Wizards team could develop the SuperSoundPro music program, with continual upgrades and release it as FREEWARE. Our 1WSW team worked on it to correct some of the problems, as best we could and released it in 1993 as a FREEWARE: SSP DEMO, with Huiberts blessings and full consent. Huibert has given up on any more efforts with the IIgs, moved to Canada and from what he related in our last conversation, is now devoting all of his efforts to developing a MAC version of SoundSmith. Thus, both SoundSmith GS and the SSP programs are at their FINAL states of development. No more work is planned for either of them ! If you have the need, skills and patients to convert your MODfiles collection to SoundSmith music files, you'll have a lot of creative media to work with and can do some impressive SoundSmith GS music compositions for additional use as imports for NTGS. The following information concerning: SoundSmith GS and the SuperSoundPRO GS DEMO is an update and excerpt from the SuperSoundPRO GS (SSP) DEMO Reference Manual. This information is a concise review for the SuperSoundPro.GS (SSP) DEMO. It is also equally applicable to both SoundSmith GS v1.0 and v1.0.1. Please note: Updates to SuperSoundPRO or SoundSmith GS have been abandoned. About: SuperSoundPro.GS (SSP) DEMO First you should know that the program is not public domain and is FREEWARE. It's constructed SRC.CODES are available to any sincere and talented programmer for the asking, if they wish to do any rewrites or upgrades. SuperSoundPro is a functional and combined upgrade of SoundSmith GS v1.0 and v1.0.1. The name SuperSoundPro was suggested to me in a conversation back in 1992, I had with Earl Childers, Pres. of Seven Hills Software. They were hoping to be able to develop SoundSmith GS to a commercial version and release it. But, many problems resulted and the project was canceled. A beta version of SoundSmith GS v1.0, the (never released) commercial program by Seven Hills and ESP, was uploaded (without any authorization) to Internet and many BBS' around the world, which created many problems, bad feelings and destroyed any further development efforts from Seven Hills and the European Software Partners, (ESP). Next the SHAREWARE v1.0.1 of SoundSmith GS, released by Huibert Aalbers arrived, on-line as an alternative and hopeful solution to the abandoned SoundSmith GS v1.0 project. Realizing that SoundSmith v1.0.1 had some major bugs and limitations with MIDI functions and several other problems, our 1WSW team, (with the assistance, knowledge and blessings of our past team member Huibert Aalbers) decided to release this FREEWARE for all of you to use and enjoy, while we were (then beginning) to work on a project, for a major commercial upgrade of SoundSmith GS v2.0. As a result of many additional complications, SoundSmith GS v2.0 has been abandoned, as have any future efforts with any more upgrades to SoundSmith GS. If any of you have sent Huibert a shareware fee for SoundSmith v1.0.1 and you feel that the program didn't meet up to your expectations, please contact the 1WSW team Executive Coordinator to rectify your discontent, to the best abilities possible. SuperSoundPro.GS (SSP) is a (FREEWARE release) and full function Apple IIgs GS/OS application program, that's relevant and functional in all respects, with SoundSmith GS, using MIDISYNTH (tool 35), designed to create both; regular and 3-D enhanced stereo music with ease on your IIgs. A unique FREEWARE NDA, was also included with its release. This is a full function, SL player/recorder new desk accessory (NDA), that allows you to; play/modify/record and save synthLAB v1.1 music, from within the SSP program. You even have the ability (with an Apple MIDI interface and the proper GS/OS MIDI setup, I/O port setups and the appropriate MIDI instruments, keyboard or synthesizers) to port the synthLAB music into the SSP.GS program, via MIDI file to enhance it, as you wish, save it and use it the way you decide to use it. These options, should open up a new creative door to all Apple IIgs MIDI composers and music devotees. The program was released at Apple Expo West and to Internet in April of 1993. The SSP program is 100% compatible with all previous SoundSmith GS music, with the exception and excluding the first 'ANTICS' SoundSmith release, which saved the music score files as a P8 system file. If anybody still has music made with the first 'ANTICS' version, (CRUDE AND LIMITED AS THEY WERE) if you so wish, you can simply use any file type changer program and change the music P8 system file to the current SoundSmith GS file type. It should then load and function properly, via any current SoundSmith GS versions 0.94 thru 1.0.1 or the SSP DEMO program. The sound/sample wavebank file was a binary file and you don't need to convert it. However, keep it in mind, that neither SoundSmith or SSP can directly load and use the GS wavebank file format generated and saved by the SS or SSP programs, with its score. You can conviently, load and/or import the SS or SSP GS wavebank file, via either AudioZAP or Noise Tracker GS, extract the individual samples, save each as IFF file formats, then you can load the SS/SSP music score and the SS/SSP programs will automatically load the correct samples for the score. The SSP DEMO (FREEWARE) release, is an improved enhancement of the (OFFICIALLY) unreleased SoundSmith GS v1.0 and has somewhat better MIDI compatibility support and sync. functions, than the SHAREWARE release v1.0.1 of SoundSmith GS, having combined some improved aspects of each. About SuperSoundPro GS DEMO Instruments: The instruments (sounds/samples) used by SuperSoundPro GS DEMO, must be standard ASIF, Polysons or (NT instrument/sample/sound (IFF) files) which can be import constructed and saved with either NoiseTracker GS, any of the SSS Sound Editor versions or any of the many other Sound Editors that save IFF/AIFF samples or SoundSmith file format sound samples. As mentioned above, you can also extract and save the sample files via AudioZAP, from the SS/SSP wave bank file. SS/SSP instruments/sounds/samples are available from a multitude of sources or they can be designed, converted and saved via; the Sound Editors, which are included with many other exceptional SSP compliment programs, utilities and music/sample data disks, in the response and reply kit, you'll receive promptly, when you send your request with disks for them, with return postage. The special conversion program update of MODCONVERT, to directly convert Amiga Music Modules to SSP or SS music will be included also. About Launching: Insert the SuperSoundPRO GS DEMO. MUSIC LAUNCH/BOOT disk in disk drive 1. Point and click your mouse on the SSP.GS, to launch it from your GS/OS Turbo mini- Launcher. For those of you with limited RAM memory in your Apple IIgs, we have included a FREEWARE mini-launcher: TURBO LAUNCHER - (START), donated for update, by Seven Hills Software. If you need to use this fast load mini-launcher to conserve RAM memory, you can select the TURBO LAUNCH (START) application program, via your favorite file copy utility and replace the finder application program or your start program with it. You can then use this 'START' application (mini-launcher) program to select and launch SuperSoundPRO GS DEMO (SSP), any other P16, GS/OS application program or P8 system program. When SSP is launched, the TITLE.SCREEN appears, the 3-D Stereo INTRO.MUSIC plays and then the programs GS/OS desktop appears with one open window. About the Windows, Menu and Options: Instruments Window: This window is for a list of loaded instruments (sounds/samples) used with the SS/SSP music or songs you load. There are 4 buttons in this window for your use to: load, remove/delete instruments and save SSP music wavebank files (not music files). It's possible (currently) to load only up to 15 instruments for use with SS/SSP music. We are working on a duel RAM bank, with unlimited multiple samples/sounds, like NoiseTracker GS uses. We hope to have this included in the next release of SSP. Just when this will be released, (if ever) will depend on you 'the user'. If you want updates and improvements for the SSP DEMO program, you'll have to write and tell us what updates and improvements you want ! You can see how much memory is available by viewing the size of the largest free block at the bottom of the window. This value doesn't however, always represent the size of the largest loadable instrument, as the IIgs handles DOC Memory in a unique and special way. We can't explain how everything works in the IIgs DOC memory in this SSP.GS reference manual. You can find more information in your Apple IIgs Hardware Reference Manual. Using the DOC Memory option from the SSP.GS DEMO 'Information menu', lets you see a map of the ENSONIQ DOC Memory. When an instrument has been loaded, two other windows become active. The first one gives you information about the instrument selected in the instrument list. You'll find the fully functional and compatible MIDI parameters. The keyboard window allows you to hear the selected instrument and also see the note played in the top right part of the screen. Playing on the keyboard while the music is running with MIDI, will record the notes. The Open Music option of the File Menu allows you to load music. After loading the instruments and the music, a new window will appear. This window should look familiar to everyone who ever used; Appleworks GS spreadsheets, the older versions of SoundSmith and other programs that use this layout for: Cut/Copy/Paste functions of data. You can edit the music by selecting any zone (clicking the mouse on the block number selects the whole block, on a line number selects the line (single note position), on a track number (selects the track), using the; Cut, Paste, Copy and Clear commands. The selected zone can be extended by holding the Shift key down while pressing the mouse button. When a single case is highlighted, you can move around by using the arrow keys. These commands are identical to the ones used by AppleWorks GS, SoundSmith GS and many other programs, to make them easy to learn and user friendly. To enter a new note, you can enter the values in the three editable boxes on the music window (a single case must be selected) and pressing RETURN or you may use the keyboard shortcuts; To change the Octave press 1-7 on the numeric keypad. To change the instrument press 1-F on the main keyboard. To enter a note using the current instrument, effect and octave press: G for C , Y for C# H for D , U for D# J for E K for F , O for F# L for G , P for G# ; for A , [ for A# ' for B The effects are composed by an effect number and an effect value. They modify the way a note is played (except the set tempo effect which modifies the tempo for all the following notes). The following effects are defined; Effect: 0 = Arpeggio Value: 0 = no Arpeggio nm = Increment1=n, Increment2=m 3 = Set Volume nm = New Volume (0-$FF) 5 = Decrease Volume nm = Volume to subtract from: (Instrument Volume) 6 = Increase Volume nm = Volume to add to: (Instrument Volume) F = Set Tempo nm = New tempo You can now start to compose by using the New Music File option from the File menu. Before you start to compose new music you need to know the way SSP plays the music. You can use up to 14 tracks (0-13) simultaneously, and you can use any instrument sample/sound in any track. But, you can only play one instrument at a time in one track. We'll show you how this works with an example: Track 00 00. C#3 1000 01. E3 2000 02. --- 0000 03. C#3 1000 04. STP 0000 SSP DEMO will first play line 00. This means that it will play a C#3 note using the first sample. Then it will play line 01. To do this, it will first stop to play the C#3 note and then play the E3 note, using the second sample. This means that if the first sample is long, you won't hear it completely. If you want to continue to play a note, you must do what we did on line 02. You can repeat this many times, if your sample is very long. The instrument will continue to be played until the end of the wave is reached or a new note is played. If you want to stop a note without playing another one, you must enter a STP command instead of a note (line 04). SSP DEMO gives you total control over the stereo and 3-D (dimensional sound scape) enhancement effects. There are two different ways to select on which channel, a note will be played. The first one is used by all the IIgs music programs. Each one of the instruments has a stereo parameter that indicates, on which channel it will be played. To use this method you must select (for each instrument) in the (Instrument data Window), the stereo channel (Right or Left - R, L) that you want to assign to that particular instrument. Then, you must go to the Tracks option from the Information menu and click on the (Use Instrument data) button. The other way to use stereo is powerful and more impressive. You assign a stereo channel to each track. This means that an instrument will play on the right or left channel depending on which track it is played on. This is a very interesting and creative option. Because, it allows you to create incredible 3-D Stereo sound effects. This option is activated by clicking on the: (Use Channel/Track data) button on the: Tracks dialog box. This is the same basic Channel/Track data format used by almost all of the 'Imported MODfiles', using their four tracks. SSP, allows you to do this with up to 14 tracks, for some vivid 3-D sound scape dimensional and localization points, sweeps, etc. The Music option from the Information menu allows you to set some important parameters like the length of the music, the tempo, etc. The length of the music is given in number of blocks. If the music is for example four blocks long, you must tell the program which four blocks to play. This is necessary because you may want to repeat some blocks. You can play blocks 0,1,2 and 3 or 0,1,0,1 or 2,4,6,8, etc. Imagine that you want to play the following sequence: 0,1,2,2. Set position to 0 and then block number to 0. Then set position to 1 and block number to 1. Repeat the same steps for positions 2 and 3, setting the block number to 2. On the Music data dialog box there is also a check button. If you click on it, the entire music score will loop (or play from start to end - over and over again). The Preferences option from the Information menu, lets you set some more important parameters. The volume scroll bar sets the main volume (this is the same value that you set on the control panel). The Keyboard translation scroll bar is used to set the keyboard octave (if the keyboard translation is 2, the first note of the keyboard will be C2). The sound file format buttons allow you to select the type of file that will be used when saving a sound file (not a music file !). When the sound file format is set to Music Studio, SuperSoundPro GS will save two files, a wavebank and a sound file. These files can be loaded by Music Studio. If you're wondering why Music Studio is an option on SuperSoundPro GS, some IIgs users still enjoy using Music Studio. This allows you to use new instruments with the Music Studio program. The SuperSoundPro GS (SSP GS) binary file has the following structure: Number of instruments: 2bytes DOC Memory: 64K Instrument Definition: 92bytes*Number of instruments The Play options from the Play menu doesn't need to be explained. When using the Graphic Player option you'll see that you can move a cursor that looks like an electric guitar. Use it to select the active tracks and the ones that are displayed on the screen. Since no more than four tracks can be displayed at once, you must first un-select a track to be able to select another one. The Continue and Graphic Continue options use the value of the Position scroll bar (on the music data dialog box) to know where to start to play the music. The following is an edited and compiled collection of notes originally available from several on-line services, dealing with composing music with: SSP DEMO or SoundSmith GS. If you can't read spread-sheet music, you're probably going to initally be confused, no matter how simply I try to explain this. Although when I first started, I couldn't read spread-sheet music either. It took me about a week to get used to it. But, now it's really easy to use and fairly simple to understand. The beauty of this method for music score display and manipulation, is that it's real easy to understand and use, and the only 'user friendly' alternative to composing music, if you can't read or write normal music scores, (LIKE ME, who plays by ear). If you can read and/or write music, you'll have to learn how to translate a note on a scale to a SUPERSOUNDPRO DEMO spread-sheet-like note. It's fairly straight forward, but like anything else you've never done before: practice is the only logical way to learn how to get it all right. When you first run SUPERSOUNDPRO DEMO, you are greeted by the INTRO MUSIC AND INTRO PICTURE. If you like the program, PLEASE send your comments, (LIKES & DISLIKES). The effort and price for a postage stamp and a postcard or letter to show your interest and appreciation would be very welcomed. It's really a small price to pay for such a great (FREEWARE) MIDI sequencer composition program. Next, you'll see a dialog box containing various instrument options. At this point, as you probably already know, you can load in a song to be played (from the FILE menu.) Another thing you can do is load in an instrument (see that big "Load Instrument" button). Try loading an instrument now. Just pick one from any song you happen to have (KEEP IN MIND THAT SSP IS FULLY SOUNDSMITH MUSIC COMPATIBLE) (you'll probably have to swap disks unless you have a hard drive.) Now you'll see a keyboard & an instrument data box appear. Try clicking a few notes on the keyboard with your mouse. Nothing too spectacular here. The only reason you'll ever use the keyboard is to test an instrument before you use it to see what it sounds like. Or, if you'll be writing your own songs, this is how you'll probably do it (just like a real keyboard.) For now, don't worry about the stuff in the instrument data box. I'll get to that later. If it appears that SUPERSOUNDPRO DEMO has a problem sometimes when it comes to starting a new song. If you're not careful, you could waste a lot of time entering notes only to find out later that the tempo is stuck on zero! What this means is that your song has no tempo & it will NOT play! Here's what you do to avoid this: 1. Load in any song (ie. "open" it from the FILE menu.) 2. Close the song. 3. Start a new song by selecting "New" from the FILE menu. 4. Open the "Music" option from the INFORMATION menu. 5. Make sure the "Tempo" is set to something other than zero. 6. You're ok! Now you can start composing. There are other ways to start a new song. But, this method works the best. From here, it's a good idea to save your empty song & reload it. Then check the tempo again. You can never be too sure! While you were in the "Information" box, you might have noticed the other items: Position, Block, etc. This is where you tell SUPERSOUNDPRO how to play your song. Since SUPERSOUNDPRO uses a spread-sheet instead of a musical staff, you'll be typing your notes into "Blocks" and "Tracks." Each block can contain up to 896 notes (64 rows * 14 Tracks, 0-13). The "Information" box is where you choose how many blocks (positions) are in your song & in what order you want to play them. SUPERSOUNDPRO can play blocks in any order. For example: Position Block -------- ----- 0 0 1 1 2 1 3 2 4 2 5 1 6 3 This tells SUPERSOUNDPRO to play block #0 followed by #1 (twice), #2 (twice), #1 again, & #3 last. For your first few songs, you'll probably just play the blocks in order: 0,1,2,3,... without repeating any blocks. When you get used to using SUPERSOUNDPRO, you'll realize that many songs repeat themselves. So instead of wasting blocks on identical music, you can just repeat a block each time it's needed. So, set the number of positions to something like 5. Then set position #0 to block #0, position #1 to block #1, and so on up to position #4 (since positions start at 0, #4 is actually the fifth position.) Now you're ready to start typing in notes. Get back to the main screen by clicking "OK." you'll see the familiar blank spread-sheet. Make sure you have at least one instrument loaded & you're ready to go. Before you start entering notes, make sure your "Caps Lock" key is down. SUPERSOUNDPRO will only recognize upper case notes. Another thing you have to get used to is the numbers on the keypad and the main keyboard are DIFFERENT & they do different things. Ok, hit your "G" key. Notice that a "C" note was placed in highlighted box. The number after the "C" is the note's octave. For example, C5 means "C" in the fifth octave. You'll find that different instruments sound better in different octaves. Octave 0 is a lower note than Octave 5. Why, you might ask, did the letter "G" produce a "C" note? Well, the keyboard is mapped out like a musical keyboard as follows: key: G H J K L ; note: C D E F G A Where is the "B"??? Well, there is no key for "B". Normally, If you want a "B" you have to enter it manually. Click on the "Note" box at the top & type "B5" & hit Return to put a fifth octave B in the box. ALTERNATIVE: Because the original program was authored in SPAIN, an alternative to the 'No key for "B", does exist. As an alternative, go into the Control Panel (by pressing; Control, Option and ESC. keys) and select options. For Keyboard layout, select Spanish. Return to the program and the ";" key will give you a B note, the "M" key will give you an A note and the "\" key (to the right of the spacebar), gives you an A# note. Make certain to change back to your normal keyboard layout in the Control Panel when you quit and start with another GS/OS application program, such as a word processor or the like. Otherwise, they will be in Spanish ! Without using the 'ALTERNATIVE', in the normal keyboard layout (U.S.A.), sharp notes are done the same way as covered before the ALTERNATIVE: key: Y U O P [ note: C# D# F# G# A# Again, please note: (using U.S.A.), that some sharps don't exist: B & E. The B# is a C and a E# is an F. Notice that the keys for sharps are just above and to the right of the regular notes (just like on a real keyboard.) What about flat notes? There aren't any. Don't worry though. If you want a flat note, just use its equivalent. For example, if you need a A flat, simply use a G sharp (they are the same note anyway.) Here are the flat equivalents: flat: D E G A B use: C# D# F# G# A# As before, some flats don't exist: F & C. Fb is an E and Cb is B. Look at the keyboard below & you'll see why certain notes can't be sharp or flat: _________________________________________ | | C | | D | | | F | | G | | A | | | | # | | # | | | # | | # | | # | | | | | | | | | | | | | | | | | D | | E | | | G | | A | | B | | | | b | | b | | | b | | b | | b | | | |___| |___| | |___| |___| |___| | | | | | | | | | | C | D | E | F | G | A | B | |_____|_____|_____|_____|_____|_____|_____| For those who can't read sheet music, (LIKE ME, WHO PLAYS BY EAR) here's where the notes are on the scale: _________________________________________ F E T _____________________________ R __________ D E C B _________________________________________ B L A E _________________________________________ G F _________________________________________ E ------------------------------------------------------------------------ _________________________________________ A G _________________________________________ F B E A _____________________________ S___________ D S C _________________________________________ B A _________________________________________ G (Hopefully, that didn't confuse or mystify you to much. As above and below, I didn't lay it out or character draw it. I only obtained it from on-line text files and tech. notes, including it for your reference, hoping it might be useful). On sheet music, the clefs are marked with: T /\ __ R | / B / \ E / A \ | B / /\ S / B < < | S / L \__/ _/ E Pardon the bad (lunatic ?) artwork, but you get the idea. Now you'll notice that all your notes have no instrument associated with them yet. If you plan on using a single instrument for an entire track, you cam simply click on the track number to highlight it. Then choose "Change Sample" from the EDIT menu (instruments are also called "samples"). You'll want to change from "0" to the number of the instrument you want. The sounds, samples or instruments are numbered from 0-F (hex) according to how they are listed in the "Instruments" box. Another way to choose an instrument is to insert it manually with each note. Here's where you have to remember that the keypad numbers are different from the main numbers. The keypad is used to set a note's octave, & the main row of numbers above the keyboard are used to set the sample (instrument.) - (Samples, Instruments and Sounds are all the same thing) Here's how to usually enter notes: 1. Enter the octave using the keypad. 2. Enter the instrument using the regular numbers. 3. Enter the actual note using the proper key (see above.) You must hit the keys in this order or it might not work. If you hit the wrong key, just go back and try again. Also note that this won't work for "B" notes because they have to be typed in manually. Any note can be typed manually, & I know some people prefer to do it this way. Just click on the Note & Sample boxes to enter the note & instrument manually. The octave is set along with the note (C#5, for example). The box labeled "Effect" is for effects. These include changing tempo & volume. When you enter an effect for a note, the change is not just for that note. Whatever you do will effect all notes after the one you changed. To change tempo within the score, click on the effect box & enter "F" followed by hex number from 1-F. DO NOT TYPE "0" FOR TEMPO!!! I can't stress this enough. If you enter a zero, your song will have no tempo & will not play. To change volume, type "3" followed by a hex number from 00-FF. 00 is no volume, FF is full volume. Now for the hard part. SUPERSOUNDPRO doesn't use time signatures. In other words, there is no 4/4 2/4 3/4, etc. You have to scan your music first & see what the shortest note is. This will usually be a sixteenth note. In this case, a sixteenth note is simply one box long. An eighth note would be two boxes long. A quarter note, 4 boxes. A half note, 8 boxes. A whole note, 16 boxes. This means that for a half note, you must leave 7 empty boxes after the note. For a sixteenth note, you don't have to leave any empty boxes. You may find that when you play your song, it's too fast or too slow. Go back to the "Music" box (from the INFORMATION menu) & reset the tempo to make it sound right. Tips & hints on writing music with: SUPERSOUNDPRO DEMO or SoundSmith GS After booting SUPERSOUNDPRO DEMO and getting past the title screen & Title song a small, empty box with 4 buttons is displayed. The only button you can use at this point is Load instrument. This is how you load instruments. You can load instruments from any disk and use them. The author of SUPERSOUNDPRO, was gracious enough to include a plethora of instruments for our use, all of which sound better than any of Music Studio's sounds (but, SSP sounds may be saved into MS Wave-files. If you do this, make sure you change the envelope form in the Design instrument section of Music Studio). To change the default volume of an instrument, highlight the instrument and use the scrollbar to set the volume. You can test the notes on the keyboard and what you play on a keyboard will be recorded into your song. Now that you have selected all your instruments (you can still select more later on if you don't have enough), ( UP TO 15 INSTRUMENTS TOTALING NO LARGER THAN 64K) go to the file menu and select 'New Song.' This will give you the familiar spread-sheet that you usually see littered with 'D#5's and stuff, except that it is empty. You are now ready to begin composition. First of all, select MUSIC from the pull down menu. You should get a screen with 'Number of Positions','Position','Block' and 'Tempo'. Set the number of positions to about 10 or so, and then set POSITION #0 to BLOCK #0 and Position #1 to Block #1 and so on and so forth and then set Tempo to whatever you want. (REMEMBER DON'T USE 0 (ZERO)) 1 is the fastest and 16 is the slowest. The Position bar and the Block bar are vital. The program plays the blocks according to how you tell it to: for example, SSP starts at position zero and at position zero, you have instructed SSP to play Block #0. After playing Block #0, SSP moves on to the next position. At position #1, you have instructed SSP to play block #1. But, let's say you want to repeat a block. Set position #10 (or whatever) to block #10 and Position #11 to block #10. This will repeat the 10th block. Hit the 'OK' button to get back to the Spreadsheet. What you should do at this point, is put any note on the screen and save it to /RAM5 and then close the spreadsheet and load the song back up (but, 'Cancel' the loading of new instruments). This way, you have loaded a song and are modifying it. Delete the dummy note you have placed on the screen and now you are ready to begin. On some other songs, you may have noticed the way the notes were arranged: Note instrument || | | D#5 | 4000 | | ||| Octave Effect Note: This is the note. The musical alphabet is CDEFGAB and that is how SSP looks at it's notes. Some times a note will have # after it. This denotes a 'Sharp' or an increase in the notes pitch. Since SSP doesn't recognize flats, only sharps may be used, such as G# instead of Ab (these are both the same note). Sometimes, though, notes can't be sharp. These notes are B and E. This is because B# is C and E# is F. Keep that in mind. (The following is an example of a musical staff. If you'll notice, they are in alphabetical order from bottom to top, counting spaces and lines) Spaces Lines(Treble) _______________________________________________ F(ine) E _______________________________________________ D(oes) C _______________________________________________ B(oy) A _______________________________________________ G(ood) F _______________________________________________ E(very) _______________________________________________ A(lways) G _______________________________________________ F(ine) E _______________________________________________ D(o) (Bass) C _______________________________________________ B(oys) A _______________________________________________ G(ood) Octave: This is what pitch the note will be played at. Each new octave starts at C(ex: A4 B4 C5 D5). You can usually use the C in the Treble Clef as C5, the C in between the two clefs (middle C) as C4 and the C in the Bass Clef as C3. Your octave may range from a low 2 to a high 7. Instrument: This is the instrument number to play. They range from 1 to F(a Hex number{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}). You can use any instrument in any row. Effect: A very useful tool. This affects the way a note preforms. The most useful effects are Volume and Tempo. To change the volume of your score, go up to the effect box and type 3 (this says, I'm changing volume, to SSP) followed by any number from 00 to FF (again, this is Hex). 00 is no volume at all and FF is full blast. This type of volume only affects the current note. To change the Tempo, go to the Effect box and type F (again, "I'm changing Tempo now!!") followed by any number from 01 to 0F. (WARNING-WARNING: Under NO circumstances type F00 and play it as it will shut off the speed of your song. There is no way out of this (the Tempo Bar in the pull-down is now all solid, and you can't change Tempo again in your song because your song isn't moving!) Your only option is to reload the song. Again please make note of it. The first question everyone asks is "How do you set the Time Signature?" Forget this. There are no time signatures in SUPERSOUNDPRO. If you want to make a whole note, put down a note and leave 3 blank spaces after it. If you want to make an eight note, put down a note and leave no spaces after it (if you aren't adding anything after it, that's fine. The note will play to it's full extent, but it won't mess anything up. If you're pickey, place 'STP' in place of the note/octave. This should stop the note. Let's say you have sixteenth notes in your song: to make a whole note, put down the note and leave 7 blank spaces after it. To make a quarter note, put down a note with 1 blank space. As you can see, I've doubled the distance between all notes, and with this, you may also need to half the tempo. Usually, however, duration doesn't mean anything in SSP. What is important is when each note starts since that is all that is really audible. Shortcuts: Instead of typing in each note, octave, instrument, and effect, you can simply highlight the square you want to work on by clicking on it. Then, typing any number on the keypad will set the octave, and any number on the top-number-row will set the instrument (apparently, 5 on the keypad and 5 on the keyboard are different!). Typing the keys between [G] and [:;] on the keyboard will produce the notes C though A. The letters on the row above will produce the sharp notes. Ex: [Y][U] [C#][D#] [G][H] will give you [C ][D ] Of course, all the Open Apple-commands work as well. Cut and Paste is vital to a song writer. If you want to copy part of your song, take your mouse, click and hold at the top part of your segment and drag the mouse all the way to the bottom part of your segment. You may also drag it across several rows. Now that it's all highlighted, release the mouse and select Cut or Copy (cut removes the selection and puts it into memory, copy copies it into memory). Now take the mouse and move it to the top corner of where you want your segment to end up and then select paste(or hit Open Apple-V). and, there it is. You may notice Fade IN and Fade Out in the menu(OA+ and OA-). This is a real effective item. All you do is select the area of the song (for example, the last block) and then select Fade Out or Fade In. SSP automatically calculates the variables needed for a nice, even fade in/out. Change Sample: If, for some reason, you decide you don't like the instrument you wrote your song with, select the portion of the song with the instrument (you can select whole rows, columns, and blocks by clicking on the heading), and go to change sample. Put simply, SSP is asking: You, do want me to change all the instruments Number x to instruments Number y. This is useful. Set Octave: This is rather useful. Sometimes, you make a really great Drum Beat, and when you listen to it, you discover it sounds like your supper is attacking you from the inside because the octave is to low. (THIS IS A GROWL EFFECT, THAT I USE IN SOME OF MY VAMPS COMPOSITIONS). Select the area and then pick Change Octave from the Menu. This will set everything in the selected area to Octave x. A drawback of this is when you have multiple octaves such as B3 C4 D4, it will change them all to the same octave, such as B5 C5 D5 (which will produce 1 high note and 2 low notes instead of 3 low notes). (WELL, NOTHING IS PERFECT)! Never forget about the UNDO item. If you make a bad mistake (such as fading a part of a song you don't want to) go up and select Undo and it will undo it. DOC: It shows exactly what memory specifically designated for your DOC (Digital Oscillator Chip (the ENSONIQ sound chip!) is used up by the instrument data. Play and Graphic Play are used to listen to your music. Continue and Graphic Continue doesn't continue the song from where you stopped it, it acts as a loop so it will play forever. Stop Sound stops it from playing. (You can do Continue and listen to the song while you're writing it. It'll play the notes after you add them.) After you have a song all written out, go back to MUSIC in the Pull-down and set the Total Positions to the greatest position +1. This will cause the song to end right after the last position. (+1 because Number of Positions starts with 1 and Position Number starts with 0). Clicking on the LOOP box will make the song start over after the last position. A few Hints: To give your song a spacial hollow type sound, copy all the tracks and fill up all 14 tracks with your music. The sound effect is interesting. The lower the octave of a note, the longer it gets. To make a long fuzzy sound, use C2 with the instrument. If you're just starting out, I recommend adding a drum beat to a classic song such as 5th Symphony, Blue Danube, etc. See the example of Pachelbel's Canon in D under the name 'New.Cannon'. To give that BassDrum2 more bass, play 2 or 3 notes at the exact same time. Echo the note, by staggering in adjacent tracks, positioned one above and one below the original tracks note position. If there are any questions at all, please, feel free to write me or give me a call. I look forward to your reply. I hope this SSP GS Reference Manual will help you to understand the basics for using SuperSoundPro GS, how the program works and how to compose some music. This SSP GS Reference Manual covers all the important functions of this program. I know that some points could be explained in greater details. However, since I wanted to include this compiled Reference manual, with the SSP.GS program, I couldn't spend more time on it. I will furnish any MORE comprehensive SSP.GS program operations that I can, which you request with the REPLY KIT, that includes some useful compliment programs, utilities and music/sample data disks. As soon as you send your (REPLY/RESPONSE) with your disks and return postage, to cover mailing cost you'll receive your reply kit, promptly. Make sure the program is distributed on a FREE basis, please be advised, this program is FREEWARE. We spent a great deal of time, energy and effort designing the SuperSoundPro GS DEMO for the Apple IIgs world to use and enjoy FREELY, as an alternative to the SoundSmith ShareWare versions. Hopefully, you'll like this (FREEWARE) full-function MIDI program enough to send your comments, (LIKES & DISLIKES) about the SuperSoundPro GS DEMO program. The REPLY/RESPONSE accessories package will be sent to you when you respond with your comments and any problems that you find with the SSP DEMO program, when you use it. Please send your responses, with four 800k (3.5) DSDD disks, return postage and your comments, if you want the REPLY/RESPONSE accessories package to: Charles T. Turley, Ph.D. - (Dr. Tom) Executive Coordinator One World Software Wizards 115 Santa Clara St. Brisbane, CA. 94005 USA Tel. (415) 468-1609 Remember, you'll receive a wonderful collection of useful accessories, sounds and music, along with any additional detailed information or updated files I can present, that you request, covering every function of these SSP compliment programs, with tips, tricks and special Noise Tracker GS (VAMPS/NTV) Virtual (3-D) Audio Global Stereo sound scape design techniques. I hope you'll enjoy using the SuperSoundPro GS DEMO. If you like the SSP GS DEMO please let me know. If you don't, let me know also. If you have any problems with the program, please let me know what they are, so I can advise you how to correct them. If you can't locate it anywhere, send two blank disks with return postage and it will be mailed to you promptly, for your use, review and comments. A final (reminder) note to all SS and SSP users: Huibert Aalbers accidently destroyed some of the SRC.CODE for his release of SoundSmith GS v1.0.1. He is a full time university student and he is involved with writing a SoundSmith for the MAC and also an assembly language tutorial for the MAC, with whatever spare time he has. Without the SRC.CODES for the original SoundSmith GS v1.0.1 our team was not able to do very much to improve the problems that were discovered with SoundSmith GS v1.0.1. We have attempted to reconstruct the codes and do the best we could to correct those problems by rewriting, enhancing, patching and releasing the SSP GS DEMO as a FREEWARE for the IIgs world to use. Huibert had a disabled IIgs that refused to function. He's bought a new MAC and has moved to Quebec, Canada. to go to, live, work and continue with his education. Effective, last November of 1993, Huibert left the 1WSW team and has abondoned any more efforts for any upgrades with either SoundSmith GS or SuperSoundPRO GS or any efforts with the IIgs. KNOWN BUGS WITH THE SSP GS DEMO PROGRAM THERE IS ONLY ONE KNOWN BUG WITH THE DEMO PROGRAM ITSELF. BE VERY SELECTIVE WHEN YOU DO ANY CUTS AND PASTES INTO TRACK 13. (don't cut & paste an entire track into track 13-do your cut & paste efforts to track 13 in small increments or sections only !) THIS TRACK MAY LOCK UP YOUR ENTIRE PROGRAM AND CAUSE YOU TO HAVE TO RE-BOOT, THUS YOU WOULD LOSE ANYTHING YOU HAD DONE SO FAR WITH THE COMPOSITION OF YOUR SONG/MUSIC. BE SURE TO SAVE YOUR WORK OFTEN TO AVOID THIS PROBLEM. CONCERNING THE 3-D SL MIDI NDA: IF YOU LOAD A (SL FILE) AND PLAY IT THEN LOAD A SS OR SSP MUSIC FILE OR SONG, YOU MAY HAVE SOME SEVERE CONFLICTS WITH THE SAMPLES AND THE SOUND OF THE SAMPLES. THEY WILL OFTEN RETAIN THE SOUNDS OF SAMPLES FROM THE SL MUSIC FILE. OTHER STRANGE CONFLICTS AND PROBLEMS MAY ALSO RESULT WITH THE INCORRECT USE OF THIS NDA WITH THE SSP DEMO PROGRAM. TRIAL AND ERROR ARE YOUR BEST TEACHERS USING THIS NDA WITH THIS PROGRAM. SO, USE IT WITH CARE ! I'VE ATTEMPTED TO DISCOVER AND RELATE ALL THE BUGS I COULD FIND WITH THIS SPECIALLY DESIGNED AND CONSTRUCTED SSP DEMO BOOT DISK AND SSP DEMO PROGRAM DATA DISK. IF YOU ENCOUNTER ANY OTHER BUGS OR ANOMALIES, PLEASE WRITE AND LET ME KNOW, SO THAT I CAN RELATE THE INFORMATION, WITH ANY POSSIBLE SOLUTIONS ON TO OTHER USERS. I hope you'll understand that we have done the best we could, with what we had to work with, our limited resources and the limited time we had to work with it. If you have the talents and/or skills, resources and time to improve this SSP GS DEMO (FREEWARE) release, please do ! I'll be happy to furnish you with the SRC.CODES. Next comes an edited excerpt, dealing with notes for tuning with SoundSmith GS from: Ian Schmidt, via his original on-line posting. Note that MegaTracker is Ian's SoundSmith Player. How to sample perfectly tuned SoundSmith/MegaTracker instruments First off, print out the tuning table at the end of this SECTION. Compare the frequencies to those offered by your favorite sampler (I personally wouldn't do this without either Audio Animator and its sw, or AudioZap. Once you find the closest one, its a matter of checking which note that corresponds to and then sampling that note from your instrument at that frequency. Then clean it up, convert to ASIF, and you're done. Tuning for standard MOD-type sequencers (including SoundSmith GS) (note: NoiseTracker is slightly flat from these specs) (note2: MOD/SS's definition of MIDI octaves is one above the Intl. MIDI Associations's...so subtract 1 octave to get a normal MIDI note) Note Frequency (Hz) Note Frequency (Hz) C1 N/A C2 2107 C#1 1130 C#2 2193 D1 1182 D2 2346 D#1 1233 D#2 2499 E1 1336 E2 2601 F1 1387 F2 2754 F#1 1490 F#2 2958 G1 1542 G2 3111 G#1 1645 G#2 3315 A1 1747 A2 3519 A#1 1850 A#2 3723 B1 1953 B2 3927 Note Frequency (Hz) Note Frequency (Hz) C3 4182 C4 8313 C#3 4386 C#4 8823 D3 4692 D4 9333 D#3 4947 D#4 9894 E3 5253 E4 10506 F3 5559 F4 11067 F#3 5865 F#4 11730 G3 6222 G4 12444 G#3 6579 G#4 13158 A3 6681 A4 13974 A#3 7395 A#4 14790 B3 7854 B4 15657 Note Frequency (Hz) Note Frequency (Hz) C5 16626 C6 33303 C#5 17646 C#6 35292 D5 18717 D6 37383 D#5 19788 D#6 39627 E5 20961 E6 41973 F5 22236 F6 44472 F#5 23562 F#6 47124 G5 24939 G6 49929 G#5 26418 G#6 52887 A5 27999 A6 55998 A#5 29682 A#6 59364 B5 31467 B6 62883 --------------------------------------------------------------------------- EXPLORING SOUNDSMITH "Exploring SoundSmith" is an 82 page guide to all the features of SoundSmith. The publication, from Al Crout and Gareth Jones, covers every possible aspect of making music with the IIgs and SoundSmith. Sections include such topics as; getting the best possible sound from a IIgs, musical composition using the SoundTracks module (THE MUSIC SCORE AND EDITING PORTION OF THE PROGRAM), MIDI recording and play back and saving your work to storage devices. It has appendices which briefly cover a number of items of shareware and freeware for the enhancement of SoundSmith including DreamVoir, AudioZap and Noise Tracker GS. I found the MIDI recording information, reviews and tech. materials very revealing, informative and easy to understand. This portion alone makes the publication a very worthy addition for anybody using SoundSmith that never fully understood its MIDI abilities before. Exploring SoundSmith costs $15.00 (US) post paid and can be ordered from: Gareth Jones Apartment 1 3872 Sunset Street Burnaby British Columbia Canada V5G 1T3 Tel. (604) 435-1416 Gareth furnished me with a copy for review and I must say it's an very informative and well written publication, that all serious SoundSmith users should have. In a lengthy, friendly and informative conversation, I had last week, with Al Crout, he informed me that he was working on a HyperStudio stack, that had a lot of information from the publication with undated information and other things of interest for SoundSmith users. If you should care to make contact with him for information about this, his mailing address follows: Al Crout Apt. 102, 215 Mowat Street New Westminster British Columbia CANADA V3M 4B1 Next, is my compiled and edited collection of notes and on-line postings, that deal with Imported Modules, with some possible novel and experimental procedures, you might care to try. A composite of all related information concerning the construction and operation of Imported MODULE files (MODfiles) from the Amiga, follows. They were passed along to me from many people and collected over the past few years, from many on-line services. They all pertain to commands, special effects and native languages of the Amiga computer. You shouldn't confuse the context of this portion of this collective article and reviews, with programming languages or commands native to the IIgs. The content of this portion is presented for experimental and research use only, to help any of you, that care to take on the challenging adventure of modifying, altering, enhancing or reconstructing an Imported Module file that's a standard text file type. If you have an Imported Module file that is a text file, you should be able to load it into WRITE AWAY!, a (ShareWare) which is a very useful, well designed and unique word processor GS/OS application. You might also try using the ShadowWrite (FreeWare) NDA. If you have an Imported Module file that isn't a text file, change it to a text file with any file type changer program. Such efforts, will become needless and antiquated, for their originally intended purpose, within couple of months or so, with the release of Noise Tracker GS v2.00. But, pending its release, which will allow you to construct, edit and arrange MODfiles (ProTracker file Format) music scores, then save them, (Native MODfiles from the IIgs - AT LAST), you can review this following information to gain an over-all understanding of MODfiles, for whatever use you care to apply the knowledge you might gain, for your future efforts with MODfile music on the IIgs. Even with the release of Noise Tracker GS v2.00, (the first GS/OS application program for composing, editing and saving MODfiles), you can still experiment and play around with the MODfiles or even with the Noise Tracker GS v2.00 music file format, and (with trial & error), obtain some interesting results. Sometimes they could result in unique effects and sometimes they could result in completely corrupting the files structure and usefulness. As with any file you are experimenting, attempting to modify or alter, you should always keep a copy of the original, in the event you mess up, with your efforts. --------------------------------------------------------------------------- Protracker 2.1A Song/Module Format Information: Courtesy of: Lars Hamre and Peter Hanning Offset Bytes Description ------ ----- ----------- 0 20 Songname. Remember to put trailing null bytes at the end. Information for sample 1-31: Offset Bytes Description ------ ----- ----------- 20 22 Samplename for sample 1. Pad with null bytes. 42 2 Samplelength for sample 1. Stored as number of words. Multiply by two to get real sample length in bytes. 44 1 Lower four bits are the finetune value, stored as a signed four bit number. The upper four bits are not used, and should be set to zero. Value: Finetune: 0 0 1 +1 2 +2 3 +3 4 +4 5 +5 6 +6 7 +7 8 -8 9 -7 A -6 B -5 C -4 D -3 E -2 F -1 45 1 Volume for sample 1. Range is $00-$40, or 0-64 decimal. 46 2 Repeat point for sample 1. Stored as number of words offset from start of sample. Multiply by two to get offset in bytes. 48 2 Repeat Length for sample 1. Stored as number of words in loop. Multiply by two to get replen in bytes. Information for the next 30 samples starts here. It's just like the info for sample 1. Offset Bytes Description ------ ----- ----------- 50 30 Sample 2... 80 30 Sample 3... . . . 890 30 Sample 30... 920 30 Sample 31... Offset Bytes Description ------ ----- ----------- 950 1 Songlength. Range is 1-128. 951 1 This little byte is set to 127, so that old trackers will search through all patterns when loading. Noisetracker uses this byte for restart, but we don't. 952 128 Song positions 0-127. Each hold a number from 0-63 that tells the tracker what pattern to play at that position. 1080 4 The four letters "M.K." - This is something Mahoney & Kaktus inserted when they increased the number of samples from 15 to 31. If it's not there, the module/song uses 15 samples or the text has been removed to make the module harder to rip. Startrekker puts "FLT4" or "FLT8" there instead. Offset Bytes Description ------ ----- ----------- 1084 1024 Data for pattern 00. . . . xxxx Number of patterns stored is equal to the highest patternnumber in the song position table (at offset 952-1079). Each note is stored as 4 bytes, and all four notes at each position in the pattern are stored after each other. 00 - chan1 chan2 chan3 chan4 01 - chan1 chan2 chan3 chan4 02 - chan1 chan2 chan3 chan4 etc. Info for each note: _____byte 1_____ byte2_ _____byte 3_____ byte4_ / \ / \ / \ / \ 0000 0000-00000000 0000 0000-00000000 Upper four 12 bits for Lower four Effect command. bits of sam- note period. bits of sam- ple number. ple number. Periodtable for Tuning 0, Normal C-1 to B-1 : 856,808,762,720,678,640,604,570,538,508,480,453 C-2 to B-2 : 428,404,381,360,339,320,302,285,269,254,240,226 C-3 to B-3 : 214,202,190,180,170,160,151,143,135,127,120,113 To determine what note to show, scan through the table until you find the same period as the one stored in byte 1-2. Use the index to look up in a notenames table. This is the data stored in a normal song. A packed song starts with the four letters "PACK", and then comes the packed data. In a module, all the samples are stored right after the pattern data. To determine where a sample starts and stops, you use the sample info structures in the beginning of the file (from offset 20). Take a look at the mt_init routine in the playroutine, and you'll see just how it is done. Amiga Imported MOD tips from Mike: This is an explanation for how the notes are played on the Amiga. So, you can figure out how to handle them. The Amiga's audio DMA runs on a bus cycle of 2.79365E-07 seconds. (All you really need to know about the Amiga's audio DMA for your purposes is this number.) All the sample playback periods are based on this number. The table can be constructed of Amiga playback sample periods with the following formula: 1 Sample period=--------------------------- Sampling rate * 2.79365E-07 And you get the following table. C C# D D# E F F# G G# A A# B ------------------------------------------------------------ 1st Octave.| 856 808 762 720 678 640 604 570 538 508 480 453 | 2nd Octave.| 428 404 381 360 339 320 302 285 269 254 240 226 | 3rd Octave.| 214 202 190 180 170 160 151 143 135 127 120 113 This gives the values for the 3 octaves the Amiga can play from a raw sample. To get the sample rates in samples per second that you'll need you use the formula: 1 Sample rate(Hz) =--------------------------- Sample period * 2.79365E-07 (from table) So for a note C-2 the sample rate is 8363 Hz. The fine tuning is accomplished buy adding/subtracting to the periods taken from period table at playback. Thus you get this conversion formula: 1 Sample rate(Hz) =------------------------------------------ (Sample period + Finetuning) * 2.79365E-07 (Finetuning value can be positive or negative) MED and the newer Trackers can also use IFF instrument files which contain a sample for each octave. With these instruments you use only the playback rates from one octave but a different sample from the file. This allows five instead of three octaves per instrument. Tempo (playing speed) To understand this completely, you need to know some technical aspects. MED uses the CIAB timers for timing. They give " timing pulses " that trigger the MED's player interrupt. On each timing pulse effects are handled (e.g. commands 1,2,3,4,5,D, hold/decay, synthsounds). But, the new note is usually not played on each pulse. The time between timing pulses can be changed (primary tempo). The new note is usually played on every 6th pulse. But, this can be changed also (secondary tempo). For example, if new note was played on every 3rd pulse, the playing speed would be twice as fast. This doesn't affect the speed of effects. Graphically: pulse \ PLAY NOTE the time between pulses can be changed (primary tempo) pulse / DO EFFECTS \ \ pulse DO EFFECTS \ The number of pulses between / notes can be changed (4 in this example). pulse DO EFFECTS / This is the secondary tempo. / pulse PLAY NOTE MED V3.2 player commands/effects: This section gives information about commands/effects. They are events which affect the playing and they are handled by the MED player routine. C - 2 1 2 3 4 | \ | command number \| data byte You insert the commands usually by hand (turn editing on, move cursor on the command numbers and type the numbers). It may be a bit easier if you turn off automatic-advance with Ctrl-A. Here are the descriptions of each of the currently recognized commands: Command 0: ARPEGGIO MIDI: controller value This command changes the pitch of the note quickly (6 times during 1 note). It can be used to create "chords" or special effects. If you've listened to music made with the C-64, you MUST have heard arpeggios. The pitch is changed between 3 different pitches during one note: the 1st pitch is the pitch of the original note the 2nd pitch is the pitch of the original note + the 1st number of databyte halfsteps up the 3rd pitch is the pitch of the original note + the 2nd number of databyte halfsteps up Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch changed 6 times during note It may be a bit difficult to understand, so here's an example: You want to make an arpeggio which sounds like C-major chord. The lowest pitch is C (C-2 in this example). The second is E-2 (4 halfsteps higher than C-2). The third is G-2 (7 halfsteps higher than C-2). 4 halfsteps from C-2 -+ 7 halfsteps from C-2 |/ That produces: C-2 1047 --- 0047 --- 0047 and so on... Data byte for a minor chord would be 37. The arpeggios sound better with some instruments than others. MIDI: See command 5 for a description. Command 1: SLIDE UP MIDI: pitchbender up This command slides up the pitch of the current track. With Amiga samples: Decreases the period of the note the amount of databyte on each timing pulse. Sounds rather technical ?? Yes. The instructions for previous (before 2.10) versions of MED contained detailed instructions for making good-sounding slides with this command. Because this version now contains the easy automatic slide making (Amiga-T), I felt that these instructions are not necessary any more. If you use this function for special effects (not real slides) then you can experiment with the values for the databyte. Example: A-1 1000 --- 0000 --- 010F <- slide up a bit With MIDI: This commands works very differently with MIDI. It actually "turns" the pitchbender 8 * databyte steps up on each timing pulse. Because the actual range of the pitchbender may be different with different MIDI-devices, you must find the right value by experimenting. There's also one thing you should know: when a new note is played, the pitchbender isn't reset automatically. To reset the pitchbender, you use this command with databyte zero. Example: G-2 L1FF <-turn it up very quick --- 0000 --- 0100 <- then reset the pitchbender Command 2: SLIDE DOWN MIDI: pitchbender down It's just like command 1 except it slides down. Command 3: PORTAMENTO MIDI: set pitchbender This is another slide command (on some old MED versions (2.00) this was a vibrato command, see command 5 now). It can be used to make perfect slides more easily. First an example: C-2 5000 <- played note C --- 0000 E-2 5305 <- this note is not played!! Instead, slide target is set --- 0300 to G-2 and slide speed is 5 --- 0300 <- when speed is zero, use the previous speed --- 0306 <- the speed can be changed, of course This example would slide from C-2 to E-2, but the slide stops EXACTLY when E-2 is reached. The remaining 3's have no effect. This command is easier to handle with automatic slide making (see Edit/S1 above). MIDI: By using this command, you can set the pitchbender to an absolute value, instead of sliding as commands 1 and 2 do. The data byte is the pitchbender value, expressed as a signed hexadecimal digit (a nightmare to non-programmers!). 00 = center position 80 (-7F) = smallest value 7F = largest value Example: C-2 3000 --- 037F <- pitchbender to max. value --- 0300 <- reset Command 4: VIBRATO MIDI: modulation wheel The first number of the data byte is vibrato speed, the second is vibrato depth. If the numbers are zeros, the previous speed and depth is used. Example: F-215000 --- 0000 --- 0433 <- slow, not much depth --- 0437 <- more depth --- 043F <- full depth --- 0482 <- fast, not very deep MIDI: This command affects the modulation wheel of the current channel. The data byte can be 00 - 7F. 00 = no modulation, 7F = maximum. Values 80 - FF are reserved for future expansion (and won't work). Command 5: OLD VIBRATO MIDI: controller number This is the old vibrato command (previously it was 3). The command 3 is automatically converted to 5 when loading old MED songs. The pitch of the note is changed between two values, databyte is the depth. Example: A#1 J502 --- 0507 increasing depth --- 0517 v --- 0527 --- 0537 MIDI: Command 5 in conjunction with command 0 allows you to change any controller of MIDI (command $Bx cc vv, where cc = controller number, vv = value). First you set the number of controller you want to change with command 5. Then you can select the value with command 0. Subsequent uses of command 0 will affect the controller previously set with command 5. Each channel has its own controller number. If the controller value is $00, you can't use '00', because the command '000' means 'do nothing'. Instead, you type '80'. Acceptable controller numbers and values are $00 - $7F. For example: (assuming instrument 3 is set to MIDI channel 1) C-2 3000 --- 0507 <- controller $07, volume, according to MIDI standard D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent --- 0000 F-3 3001 <- small volume ($01) --- 055C <- select controller $5C (tremolo depth) G-4 3080 <- set to 0 (note: $80 = $00) Command 8: SET HOLD/DECAY MIDI: set hold only This command must be located on the same line with a note. The command assigns the hold and decay values for the note (see above for description about hold/decay). hold value decay----------+| || Example: C-3 3824 -|- 3000 -|- 3000 --- 0000 Command 9: SEC. TEMPO MIDI: no action This command sets the secondary tempo (the number of timing pulses/note). The argument must be 01 - 20. Example: --- 0903 <= double tempo --- 0000 Command A: VOLUME SLIDE MIDI: polyph aftertouch This is the same as command D (for Noisetracker/Protracker compatibility). However, please use D instead of this. MIDI: Command A changes the polyphonic aftertouch of the most recent note. The value should be $00 - $7F. Example: C-3 4000 --- 0A30 <- aftertouch $30 --- 0000 --- 0A00 <- aftertouch $00 Command B: POSITION JUMP MIDI: position jump This command lets you make songs that have a beginning which is played only once and then some part which is looped forever. Position jump causes the jump to play sequence number pointed by the data byte. If the data byte is 0, then the playseq jumps to the first entry. Example: --- 0B02 <- start playing from play sequence number 3 Command C: SET VOLUME MIDI: set volume You can override the default volume of the instrument with this command. Example: A-3 4C20 <- played with volume 20 There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex). Non-programmers will probably want to use the decimal numbers. See (Play/[Dec/Hex]). If you want the playroutine to have maximum performance, then use hex values. It's also possible to change the volume of already played note. Note that it doesn't work with MIDI-instruments. Example: A-3 4000 --- 0000 --- 0C10 <- volume to 10 It's possible to change the default volume of an instrument (MED V2 and later). The value must be between 80 and C0 (always hex!). Value $80 = volume 0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the set of instruments (and their default volumes) are common. I recommend that you change the default volume only on non-multi-modules. Command D: VOLUME SLIDE MIDI: channel pressure You can increase/decrease volume smoothly with this command. The data byte is divided in two parts: C-3 3D01 || |+- Amount of decresdendo +-- Amount of crescendo If crescendo is zero, then the decrescendo is performed. Otherwise only crescendo is performed. Example: C-2 3C40 --- 0D01 <- a bit more quiet --- 0D01 <- even more --- 0D20 <- and crescendo back to original One unit in these commands means six actual volume units, so this example would look like this, when using the C-command (except that it doesn't sound so smooth): C-2 3C40 (volumes are decimal in this example) --- 0C34 <- -6 --- 0C28 <- -6 --- 0C40 <- +12 MIDI: This command sends a channel pressure (channel aftertouch) message using the channel in which the most recent note was sent. The databyte should be $00 - $7F. D#5 J000 --- 0D40 <- channel aftertouch $40 --- 0D00 <- to $00 Command E: SYNTH/JMP MIDI: pan control When used with synth/hybrid instruments, this command triggers a jump in the waveform command sequence. The databyte is the jump destination (line number). Example: C-4 4000 <- this should be synth/hybrid instrument --- 0000 --- 0E05 <- cause a jump to line # 5 With MIDI-instruments, this command controls the stereo location of the sound. The data byte can be 00 - 7F. left mid right | | | 00 3F 7F If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember that this command controls the low-pass filter. I think that it was unnecessary to spend the command E only for controlling only a single switch. See command F. Command F: TEMPO/MISC. MIDI: tempo/misc. Command F has many different actions depending on the data byte. If the data byte is zero (00), this command causes the immediate jumping to the next block on the playing sequence (or to the beginning of this block if you're only playing the block). This function is better to implement by making the block shorter (takes less memory). Example: C-2 4F00 <- this is the last note of this block When the data byte if 01 - F0, the command changes the tempo. This is the primary tempo (length of the pause between timing pulses). If the new tempo is 01 - 0A, it is compatible with Trackers, but now you should use the command 9 instead of this command, as it's directly Tracker-compatible (set the primary tempo to 33). Example: E-3 6FF0 <- highest tempo --- 0000 --- 0F0B <- slowest Data bytes FF1 - FFF are reserved for special actions, some of them are currently used: FF1 causes the same note played actually twice. This way it's possible to create fast rhythms. C-3 2FF1 is same as C-3 2000 C-3 2000 with double tempo FF2 plays the note only once, but it is not started immediately: C-3 2FF2 is same as --- 0000 C-3 2000 with double tempo FF3 works like FF1 except the note is played three times (very fast). FF8 turns off the low-pass filter (power-LED will dim). FF9 turns the low-pass filter on (bright LED). FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments). FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments). FFD works only with Amiga-samples. It causes the pitch of the channel to be set to the pitch of the new note, but the new note is not replayed. C-1 2000 <- play note --- 0000 C-2 2FFD <- don't replay the note, just set the pitch to C-2 FFE stops playing immediately. If you want to make a song which plays only once, put this command to the end of the song. This command can be easily entered: Click "Stop playing" while holding the Shift-key. FFF Stops the note on the current track. Works with both Amiga- and MIDI- instruments. Nearly identical to "C00" on Amiga-samples, but because "C00" doesn't work with MIDI, I made this command. About MMD: Tempo (playing speed) To understand this completely, you need to know some technical aspects. MED uses the CIAB timers for timing. They give " timing pulses " that trigger the MED's player interrupt. On each timing pulse effects are handled (e.g. commands 1,2,3,4,5,D, hold/decay, synthsounds). But, the new note is usually not played on each pulse. The time between timing pulses can be changed (primary tempo). The new note is usually played on every 6th pulse. But this can be changed also (secondary tempo). For example, if new note was played on every 3rd pulse, the playing speed would be twice as fast. This doesn't affect the speed of effects. Graphically: pulse \ PLAY NOTE the time between pulses can be changed (primary tempo) pulse / DO EFFECTS \ \ pulse DO EFFECTS \ The number of pulses between / notes can be changed (4 in this example). pulse DO EFFECTS / This is the secondary tempo. / pulse PLAY NOTE MED V3.2 player commands/effects: This section gives information about commands/effects. They are events which affect the playing and they are handled by the MED player routine. C - 2 1 2 3 4 | \ | command number \| data byte You insert the commands usually by hand (turn editing on, move cursor on the command numbers and type the numbers). It may be a bit easier if you turn off automatic-advance with Ctrl-A. Here are the descriptions of each of the currently recognized commands: Command 0: ARPEGGIO MIDI: controller value This command changes the pitch of the note quickly (6 times during 1 note). It can be used to create "chords" or special effects. If you've listened to music made with the C-64, you MUST have heard arpeggios. The pitch is changed between 3 different pitches during one note: the 1st pitch is the pitch of the original note the 2nd pitch is the pitch of the original note + the 1st number of databyte halfsteps up the 3rd pitch is the pitch of the original note + the 2nd number of databyte halfsteps up Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch changed 6 times during note It may be a bit difficult to understand, so here's an example: You want to make an arpeggio which sounds like C-major chord. The lowest pitch is C (C-2 in this example). The second is E-2 (4 halfsteps higher than C-2). The third is G-2 (7 halfsteps higher than C-2). 4 halfsteps from C-2 -+ 7 halfsteps from C-2 |/ That produces: C-2 1047 --- 0047 --- 0047 and so on... Data byte for a minor chord would be 37. The arpeggios sound better with some instruments than others. MIDI: See command 5 for a description. Command 1: SLIDE UP MIDI: pitchbender up This command slides up the pitch of the current track. With Amiga samples: Decreases the period of the note the amount of databyte on each timing pulse. Sounds rather technical ?? Yes. The instructions for previous (before 2.10) versions of MED contained detailed instructions for making good-sounding slides with this command. Because this version now contains the easy automatic slide making (Amiga-T), I felt that these instructions are not necessary any more. If you use this function for special effects (not real slides) then you can experiment with the values for the databyte. Example: A-1 1000 --- 0000 --- 010F <- slide up a bit With MIDI: This commands works very differently with MIDI. It actually "turns" the pitchbender 8 * databyte steps up on each timing pulse. Because the actual range of the pitchbender may be different with different MIDI-devices, you must find the right value by experimenting. There's also one thing you should know: when a new note is played, the pitchbender isn't reset automatically. To reset the pitchbender, you use this command with databyte zero. Example: G-2 L1FF <-turn it up very quick --- 0000 --- 0100 <- then reset the pitchbender Command 2: SLIDE DOWN MIDI: pitchbender down It's just like command 1 except it slides down. Command 3: PORTAMENTO MIDI: set pitchbender This is another slide command (on some old MED versions (2.00) this was a vibrato command, see command 5 now). It can be used to make perfect slides more easily. First an example: C-2 5000 <- played note C --- 0000 E-2 5305 <- this note is not played!! Instead, slide target is set --- 0300 to G-2 and slide speed is 5 --- 0300 <- when speed is zero, use the previous speed --- 0306 <- the speed can be changed, of course This example would slide from C-2 to E-2, but the slide stops EXACTLY when E-2 is reached. The remaining 3's have no effect. This command is easier to handle with automatic slide making (see Edit/S1 above). MIDI: By using this command, you can set the pitchbender to an absolute value, instead of sliding as commands 1 and 2 do. The data byte is the pitchbender value, expressed as a signed hexadecimal digit (a nightmare to non-programmers!). 00 = center position 80 (-7F) = smallest value 7F = largest value Example: C-2 3000 --- 037F <- pitchbender to max. value --- 0300 <- reset Command 4: VIBRATO MIDI: modulation wheel The first number of the data byte is vibrato speed, the second is vibrato depth. If the numbers are zeros, the previous speed and depth is used. Example: F-215000 --- 0000 --- 0433 <- slow, not much depth --- 0437 <- more depth --- 043F <- full depth --- 0482 <- fast, not very deep MIDI: This command affects the modulation wheel of the current channel. The data byte can be 00 - 7F. 00 = no modulation, 7F = maximum. Values 80 - FF are reserved for future expansion (and won't work). Command 5: OLD VIBRATO MIDI: controller number This is the old vibrato command (previously it was 3). The command 3 is automatically converted to 5 when loading old MED songs. The pitch of the note is changed between two values, databyte is the depth. Example: A#1 J502 --- 0507 increasing depth --- 0517 v --- 0527 --- 0537 MIDI: Command 5 in conjunction with command 0 allows you to change any controller of MIDI (command $Bx cc vv, where cc = controller number, vv = value). First you set the number of controller you want to change with command 5. Then you can select the value with command 0. Subsequent uses of command 0 will affect the controller previously set with command 5. Each channel has its own controller number. If the controller value is $00, you can't use '00', because the command '000' means 'do nothing'. Instead, you type '80'. Acceptable controller numbers and values are $00 - $7F. For example: (assuming instrument 3 is set to MIDI channel 1) C-2 3000 --- 0507 <- controller $07, volume, according to MIDI standard D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent --- 0000 F-3 3001 <- small volume ($01) --- 055C <- select controller $5C (tremolo depth) G-4 3080 <- set to 0 (note: $80 = $00) Command 8: SET HOLD/DECAY MIDI: set hold only This command must be located on the same line with a note. The command assigns the hold and decay values for the note (see above for description about hold/decay). hold value decay----------+| || Example: C-3 3824 -|- 3000 -|- 3000 --- 0000 Command 9: SEC. TEMPO MIDI: no action This command sets the secondary tempo (the number of timing pulses/note). The argument must be 01 - 20. Example: --- 0903 <= double tempo --- 0000 Command A: VOLUME SLIDE MIDI: polyph aftertouch This is the same as command D (for Noisetracker/Protracker compatibility). However, please use D instead of this. MIDI: Command A changes the polyphonic aftertouch of the most recent note. The value should be $00 - $7F. Example: C-3 4000 --- 0A30 <- aftertouch $30 --- 0000 --- 0A00 <- aftertouch $00 Command B: POSITION JUMP MIDI: position jump This command lets you make songs that have a beginning which is played only once and then some part which is looped forever. Position jump causes the jump to play sequence number pointed by the data byte. If the data byte is 0, then the playseq jumps to the first entry. Example: --- 0B02 <- start playing from play sequence number 3 Command C: SET VOLUME MIDI: set volume You can override the default volume of the instrument with this command. Example: A-3 4C20 <- played with volume 20 There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex). Non-programmers will probably want to use the decimal numbers. See (Play/[Dec/Hex]). If you want the playroutine to have maximum performance, then use hex values. It's also possible to change the volume of already played note. Note that it doesn't work with MIDI-instruments. Example: A-3 4000 --- 0000 --- 0C10 <- volume to 10 It's possible to change the default volume of an instrument (MED V2 and later). The value must be between 80 and C0 (always hex!). Value $80 = volume 0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the set of instruments (and their default volumes) are common. I recommend that you change the default volume only on non-multi-modules. Command D: VOLUME SLIDE MIDI: channel pressure You can increase/decrease volume smoothly with this command. The data byte is divided in two parts: C-3 3D01 || |+- Amount of decresdendo +-- Amount of crescendo If crescendo is zero, then the decrescendo is performed. Otherwise only crescendo is performed. Example: C-2 3C40 --- 0D01 <- a bit more quiet --- 0D01 <- even more --- 0D20 <- and crescendo back to original One unit in these commands means six actual volume units, so this example would look like this, when using the C-command (except that it doesn't sound so smooth): C-2 3C40 (volumes are decimal in this example) --- 0C34 <- -6 --- 0C28 <- -6 --- 0C40 <- +12 MIDI: This command sends a channel pressure (channel aftertouch) message using the channel in which the most recent note was sent. The databyte should be $00 - $7F. D#5 J000 --- 0D40 <- channel aftertouch $40 --- 0D00 <- to $00 Command E: SYNTH/JMP MIDI: pan control When used with synth/hybrid instruments, this command triggers a jump in the waveform command sequence. The databyte is the jump destination (line number). Example: C-4 4000 <- this should be synth/hybrid instrument --- 0000 --- 0E05 <- cause a jump to line # 5 With MIDI-instruments, this command controls the stereo location of the sound. The data byte can be 00 - 7F. left mid right | | | 00 3F 7F If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember that this command controls the low-pass filter. I think that it was unnecessary to spend the command E only for controlling only a single switch. See command F. Command F: TEMPO/MISC. MIDI: tempo/misc. Command F has many different actions depending on the data byte. If the data byte is zero (00), this command causes the immediate jumping to the next block on the playing sequence (or to the beginning of this block if you're only playing the block). This function is better to implement by making the block shorter (takes less memory). Example: C-2 4F00 <- this is the last note of this block When the data byte if 01 - F0, the command changes the tempo. This is the primary tempo (length of the pause between timing pulses). If the new tempo is 01 - 0A, it is compatible with Trackers, but now you should use the command 9 instead of this command, as it's directly Tracker-compatible (set the primary tempo to 33). Example: E-3 6FF0 <- highest tempo --- 0000 --- 0F0B <- slowest Data bytes FF1 - FFF are reserved for special actions, some of them are currently used: FF1 causes the same note played actually twice. This way it's possible to create fast rhythms. C-3 2FF1 is same as C-3 2000 C-3 2000 with double tempo FF2 plays the note only once, but it is not started immediately: C-3 2FF2 is same as --- 0000 C-3 2000 with double tempo FF3 works like FF1 except the note is played three times (very fast). FF8 turns off the low-pass filter (power-LED will dim). FF9 turns the low-pass filter on (bright LED). FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments). FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments). FFD works only with Amiga-samples. It causes the pitch of the channel to be set to the pitch of the new note, but the new note is not replayed. C-1 2000 <- play note --- 0000 C-2 2FFD <- don't replay the note, just set the pitch to C-2 FFE stops playing immediately. If you want to make a song which plays only once, put this command to the end of the song. This command can be easily entered: Click "Stop playing" while holding the Shift-key. FFF Stops the note on the current track. Works with both Amiga- and MIDI- instruments. Nearly identical to "C00" on Amiga-samples, but because "C00" doesn't work with MIDI, I made this command. Tempo (playing speed) To understand this completely, you need to know some technical aspects. MED uses the CIAB timers for timing. They give " timing pulses " that trigger the MED's player interrupt. On each timing pulse effects are handled (e.g. commands 1,2,3,4,5,D, hold/decay, synthsounds). But, the new note is usually not played on each pulse. The time between timing pulses can be changed (primary tempo). The new note is usually played on every 6th pulse. But this can be changed also (secondary tempo). For example, if new note was played on every 3rd pulse, the playing speed would be twice as fast. This doesn't affect the speed of effects. Graphically: pulse \ PLAY NOTE the time between pulses can be changed (primary tempo) pulse / DO EFFECTS \ \ pulse DO EFFECTS \ The number of pulses between / notes can be changed (4 in this example). pulse DO EFFECTS / This is the secondary tempo. / pulse PLAY NOTE MED V3.2 player commands/effects: This section gives information about commands/effects. They are events which affect the playing and they are handled by the MED player routine. C - 2 1 2 3 4 | \ | command number \| data byte You insert the commands usually by hand (turn editing on, move cursor on the command numbers and type the numbers). It may be a bit easier if you turn off automatic-advance with Ctrl-A. Here are the descriptions of each of the currently recognized commands: Command 0: ARPEGGIO MIDI: controller value This command changes the pitch of the note quickly (6 times during 1 note). It can be used to create "chords" or special effects. If you've listened to music made with the C-64, you MUST have heard arpeggios. The pitch is changed between 3 different pitches during one note: the 1st pitch is the pitch of the original note the 2nd pitch is the pitch of the original note + the 1st number of databyte halfsteps up the 3rd pitch is the pitch of the original note + the 2nd number of databyte halfsteps up Note: 3rd pitch | 2nd pitch | 1st pitch | 3rd pitch | 2nd pitch | 1st pitch changed 6 times during note It may be a bit difficult to understand, so here's an example: You want to make an arpeggio which sounds like C-major chord. The lowest pitch is C (C-2 in this example). The second is E-2 (4 halfsteps higher than C-2). The third is G-2 (7 halfsteps higher than C-2). 4 halfsteps from C-2 -+ 7 halfsteps from C-2 |/ That produces: C-2 1047 --- 0047 --- 0047 and so on... Data byte for a minor chord would be 37. The arpeggios sound better with some instruments than others. MIDI: See command 5 for a description. Command 1: SLIDE UP MIDI: pitchbender up This command slides up the pitch of the current track. With Amiga samples: Decreases the period of the note the amount of databyte on each timing pulse. Sounds rather technical ?? Yes. The instructions for previous (before 2.10) versions of MED contained detailed instructions for making good-sounding slides with this command. Because this version now contains the easy automatic slide making (Amiga-T), I felt that these instructions are not necessary any more. If you use this function for special effects (not real slides) then you can experiment with the values for the databyte. Example: A-1 1000 --- 0000 --- 010F <- slide up a bit With MIDI: This commands works very differently with MIDI. It actually "turns" the pitchbender 8 * databyte steps up on each timing pulse. Because the actual range of the pitchbender may be different with different MIDI-devices, you must find the right value by experimenting. There's also one thing you should know: when a new note is played, the pitchbender isn't reset automatically. To reset the pitchbender, you use this command with databyte zero. Example: G-2 L1FF <-turn it up very quick --- 0000 --- 0100 <- then reset the pitchbender Command 2: SLIDE DOWN MIDI: pitchbender down It's just like command 1 except it slides down. Command 3: PORTAMENTO MIDI: set pitchbender This is another slide command (on some old MED versions (2.00) this was a vibrato command, see command 5 now). It can be used to make perfect slides more easily. First an example: C-2 5000 <- played note C --- 0000 E-2 5305 <- this note is not played!! Instead, slide target is set --- 0300 to G-2 and slide speed is 5 --- 0300 <- when speed is zero, use the previous speed --- 0306 <- the speed can be changed, of course This example would slide from C-2 to E-2, but the slide stops EXACTLY when E-2 is reached. The remaining 3's have no effect. This command is easier to handle with automatic slide making (see Edit/S1 above). MIDI: By using this command, you can set the pitchbender to an absolute value, instead of sliding as commands 1 and 2 do. The data byte is the pitchbender value, expressed as a signed hexadecimal digit (a nightmare to non-programmers!). 00 = center position 80 (-7F) = smallest value 7F = largest value Example: C-2 3000 --- 037F <- pitchbender to max. value --- 0300 <- reset Command 4: VIBRATO MIDI: modulation wheel The first number of the data byte is vibrato speed, the second is vibrato depth. If the numbers are zeros, the previous speed and depth is used. Example: F-215000 --- 0000 --- 0433 <- slow, not much depth --- 0437 <- more depth --- 043F <- full depth --- 0482 <- fast, not very deep MIDI: This command affects the modulation wheel of the current channel. The data byte can be 00 - 7F. 00 = no modulation, 7F = maximum. Values 80 - FF are reserved for future expansion (and won't work). Command 5: OLD VIBRATO MIDI: controller number This is the old vibrato command (previously it was 3). The command 3 is automatically converted to 5 when loading old MED songs. The pitch of the note is changed between two values, databyte is the depth. Example: A#1 J502 --- 0507 increasing depth --- 0517 v --- 0527 --- 0537 MIDI: Command 5 in conjunction with command 0 allows you to change any controller of MIDI (command $Bx cc vv, where cc = controller number, vv = value). First you set the number of controller you want to change with command 5. Then you can select the value with command 0. Subsequent uses of command 0 will affect the controller previously set with command 5. Each channel has its own controller number. If the controller value is $00, you can't use '00', because the command '000' means 'do nothing'. Instead, you type '80'. Acceptable controller numbers and values are $00 - $7F. For example: (assuming instrument 3 is set to MIDI channel 1) C-2 3000 --- 0507 <- controller $07, volume, according to MIDI standard D-2 307F <- set max. volume ($7F), command $B0 $07 $7F is sent --- 0000 F-3 3001 <- small volume ($01) --- 055C <- select controller $5C (tremolo depth) G-4 3080 <- set to 0 (note: $80 = $00) Command 8: SET HOLD/DECAY MIDI: set hold only This command must be located on the same line with a note. The command assigns the hold and decay values for the note (see above for description about hold/decay). hold value decay----------+| || Example: C-3 3824 -|- 3000 -|- 3000 --- 0000 Command 9: SEC. TEMPO MIDI: no action This command sets the secondary tempo (the number of timing pulses/note). The argument must be 01 - 20. Example: --- 0903 <= double tempo --- 0000 Command A: VOLUME SLIDE MIDI: polyph aftertouch This is the same as command D (for Noisetracker/Protracker compatibility). However, please use D instead of this. MIDI: Command A changes the polyphonic aftertouch of the most recent note. The value should be $00 - $7F. Example: C-3 4000 --- 0A30 <- aftertouch $30 --- 0000 --- 0A00 <- aftertouch $00 Command B: POSITION JUMP MIDI: position jump This command lets you make songs that have a beginning which is played only once and then some part which is looped forever. Position jump causes the jump to play sequence number pointed by the data byte. If the data byte is 0, then the playseq jumps to the first entry. Example: --- 0B02 <- start playing from play sequence number 3 Command C: SET VOLUME MIDI: set volume You can override the default volume of the instrument with this command. Example: A-3 4C20 <- played with volume 20 There are 65 volume levels (0 - 64), 0 = no sound, 64 = maximum. The data byte of command C can be 00 - 64 or 00 - 40 (decimal or hex). Non-programmers will probably want to use the decimal numbers. See (Play/[Dec/Hex]). If you want the playroutine to have maximum performance, then use hex values. It's also possible to change the volume of already played note. Note that it doesn't work with MIDI-instruments. Example: A-3 4000 --- 0000 --- 0C10 <- volume to 10 It's possible to change the default volume of an instrument (MED V2 and later). The value must be between 80 and C0 (always hex!). Value $80 = volume 0, and $C0 = 64. Note: This can cause trouble in multi-modules, because the set of instruments (and their default volumes) are common. I recommend that you change the default volume only on non-multi-modules. Command D: VOLUME SLIDE MIDI: channel pressure You can increase/decrease volume smoothly with this command. The data byte is divided in two parts: C-3 3D01 || |+- Amount of decresdendo +-- Amount of crescendo If crescendo is zero, then the decrescendo is performed. Otherwise only crescendo is performed. Example: C-2 3C40 --- 0D01 <- a bit more quiet --- 0D01 <- even more --- 0D20 <- and crescendo back to original One unit in these commands means six actual volume units, so this example would look like this, when using the C-command (except that it doesn't sound so smooth): C-2 3C40 (volumes are decimal in this example) --- 0C34 <- -6 --- 0C28 <- -6 --- 0C40 <- +12 MIDI: This command sends a channel pressure (channel aftertouch) message using the channel in which the most recent note was sent. The databyte should be $00 - $7F. D#5 J000 --- 0D40 <- channel aftertouch $40 --- 0D00 <- to $00 Command E: SYNTH/JMP MIDI: pan control When used with synth/hybrid instruments, this command triggers a jump in the waveform command sequence. The databyte is the jump destination (line number). Example: C-4 4000 <- this should be synth/hybrid instrument --- 0000 --- 0E05 <- cause a jump to line # 5 With MIDI-instruments, this command controls the stereo location of the sound. The data byte can be 00 - 7F. left mid right | | | 00 3F 7F If you've used MED V2.00/V2.01 or NoiseTracker/SoundTracker, you may remember that this command controls the low-pass filter. I think that it was unnecessary to spend the command E only for controlling only a single switch. See command F. Command F: TEMPO/MISC. MIDI: tempo/misc. Command F has many different actions depending on the data byte. If the data byte is zero (00), this command causes the immediate jumping to the next block on the playing sequence (or to the beginning of this block if you're only playing the block). This function is better to implement by making the block shorter (takes less memory). Example: C-2 4F00 <- this is the last note of this block When the data byte if 01 - F0, the command changes the tempo. This is the primary tempo (length of the pause between timing pulses). If the new tempo is 01 - 0A, it is compatible with Trackers, but now you should use the command 9 instead of this command, as it's directly Tracker-compatible (set the primary tempo to 33). Example: E-3 6FF0 <- highest tempo --- 0000 --- 0F0B <- slowest Data bytes FF1 - FFF are reserved for special actions, some of them are currently used: FF1 causes the same note played actually twice. This way it's possible to create fast rhythms. C-3 2FF1 is same as C-3 2000 C-3 2000 with double tempo FF2 plays the note only once, but it is not started immediately: C-3 2FF2 is same as --- 0000 C-3 2000 with double tempo FF3 works like FF1 except the note is played three times (very fast). FF8 turns off the low-pass filter (power-LED will dim). FF9 turns the low-pass filter on (bright LED). FFA sends MIDI "hold pedal on"-command (works only with MIDI-instruments). FFB sends MIDI "hold pedal off"-command (works only with MIDI-instruments). FFD works only with Amiga-samples. It causes the pitch of the channel to be set to the pitch of the new note, but the new note is not replayed. C-1 2000 <- play note --- 0000 C-2 2FFD <- don't replay the note, just set the pitch to C-2 FFE stops playing immediately. If you want to make a song which plays only once, put this command to the end of the song. This command can be easily entered: Click "Stop playing" while holding the Shift-key. FFF Stops the note on the current track. Works with both Amiga- and MIDI- instruments. Nearly identical to "C00" on Amiga-samples, but because "C00" doesn't work with MIDI, I made this command. EFFECT COMMANDS --------------- Effect commands on Protracker should be compatible with all other trackers. 0 - None/Arpeggio 8 - * NOT USED * 1 - Portamento Up 9 - SampleOffset 2 - Portamento Down A - VolumeSlide 3 - TonePortamento B - PositionJump 4 - Vibrato C - Set Volume 5 - ToneP + VolSlide D - PatternBreak 6 - Vibra + VolSlide E - Misc. Cmds 7 - Tremolo F - Set Speed E - COMMANDS ------------ The E command has been altered to contain more commands than one. E0- Filter On/Off E8- * NOT USED * E1- Fineslide Up E9- Retrig Note E2- Fineslide Down EA- FineVol Up E3- Glissando Control EB- FineVol Down E4- Vibrato Control EC- NoteCut E5- Set Finetune ED- NoteDelay E6- Patternloop EE- PatternDelay E7- Tremolo Control EF- Invert Loop Cmd 0. Arpeggio [Range:$0-$F/$0-$F] ----------------------------------- Usage: $0 + 1st halfnote add + 2nd halfnote add Arpeggio is used to simulate chords. This is done by rapidly changing the pitch between 3(or 2) different notes. It sounds very noisy and grainy on most samples, but ok on monotone ones. Example: C-300047 C-major chord: (C+E+G or C+4+7 halfnotes) C-300037 C-minor chord: (C+D#+G or C+3+7 halfnotes) Cmd 1. Portamento up [Speed:$00-$FF] ------------------------------------ Usage: $1 + portamento speed Portamento up will simply slide the sample pitch up. You can NOT slide higher than B-3! (Period 113) Example: C-300103 1 is the command, 3 is the portamentospeed. NOTE: The portamento will be called as many times as the speed of the song. This means that you'll sometimes have trouble sliding accurately. If you change the speed without changing the sliderates, it will sound bad... Cmd 2. Portamento down [Speed:$00-FF] ------------------------------------- Usage: $2 + portamento speed Just like command 1, except that this one slides the pitch down instead. (Adds to the period). You can NOT slide lower than C-1! (Period 856) Example: C-300203 2 is the command, 3 is the portamentospeed. Cmd 3. Tone-portamento [Speed:$00-$FF] -------------------------------------- Usage: Dest-note + $3 + slidespeed This command will automatically slide from the old note to the new. You don't have to worry about which direction to slide, you need only set the slide speed. To keep on sliding, just select the command $3 + 00. Example: A-200000 First play a note. C-300305 C-3 is the note to slide to, 3 the command, and 5 the speed. Cmd 4. Vibrato [Rate:$0-$F,Dpth:$0-$F] -------------------------------------- Usage: $4 + vibratorate + vibratodepth Example: C-300481 4 is the command, 8 is the speed of the vibrato, and 1 is the depth of the vibrato. To keep on vibrating, just select the command $4 + 00. To change the vibrato, you can alter the rate, depth or both. Use command E4- to change the vibrato-waveform. Cmd 5. ToneP + Volsl [Spd:$0-$F/$0-$F] -------------------------------------- Usage: $5 + upspeed + downspeed This command will continue the current tone portamento and slide the volume at the same time. Compatible with Noisetracker 2.0. Example: C-300503 3 is the speed to turn the volume down. C-300540 4 is the speed to slide it up. Cmd 6. Vibra + Volsl [Spd:$0-$F/$0-$F] -------------------------------------- Usage: $6 + upspeed + downspeed This command will continue the current vibrato and slide the volume at the same time. Compatible with Noisetracker 2.0. Example: C-300605 5 is the speed to turn the volume down. C-300640 4 is the speed to slide it up. Cmd 7. Tremolo [Rate:$0-$F,Dpth:$0-$F] -------------------------------------- Usage: $7 + tremolorate + tremolodepth Tremolo vibrates the volume. Example: C-300794 7 is the command, 9 is the speed of the tremolo, and 4 is the depth of the tremolo. To keep on tremoling, just select the command $7 + 00. To change the tremolo, you can alter the rate, depth or both. Use command E7- to change the tremolo-waveform. Cmd 9. Set SampleOffset [Offs:$00-$FF] -------------------------------------- Usage: $9 + Sampleoffset This command will play from a chosen position in the sample, and not from the beginning. The two numbers equal the two first numbers in the length of the sample. Handy for speech samples. Example: C-300923 Play sample from offset $2300. Cmd A. Volumeslide [Speed:$0-$F/$0-$F] -------------------------------------- Usage: $A + upspeed + downspeed Example: C-300A05 5 is the speed to turn the volume down. C-300A40 4 is the speed to slide it up. NOTE: The slide will be called as many times as the speed of the song. The slower the song, the more the volume will be changed on each note. Cmd B. Position-jump [Pos:$00-$7F] ---------------------------------- Usage: $B + position to continue at Example: C-300B01 B is the command, 1 is the position to restart the song at. This command will also perform a pattern-break (see 2 pages below). You can use this command instead of restart as on Noisetracker, but you must enter the position in hex! Cmd C. Set volume [Volume:$00-$40] ---------------------------------- Usage: $C + new volume Well, this old familiar command will set the current volume to your own selected. The highest volume is $40. All volumes are represented in hex. (Programmers do it in hex, you know!) Example: C-300C10 C is the command, 10 is the volume (16 decimal). Cmd D. Pattern-break [Pattern-pos:00-63, decimal] ------------------------------------------------- Usage: $D + pattern-position This command just jumps to the next song-position, and continues play from the patternposition you specify. Example: C-300D00 Jump to the next song-position and continue play from patternposition 00. Or: C-300D32 Jump to the next song-position and continue play from patternposition 32 instead. Cmd E0. Set filter [Range:$0-$1] -------------------------------- Usage: $E0 + filter-status This command jerks around with the sound-filter on some A500 + A2000. All other Amiga-users should keep out of playing around with it. Example: C-300E01 disconnects filter (turns power LED off) C-300E00 connects filter (turns power LED on) Cmd E1. Fineslide up [Range:$0-$F] ---------------------------------- Usage: $E1 + value This command works just like the normal portamento up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300E11 Slide up 1 at the beginning of the note. (Great for creating chorus effects) Cmd E2. Fineslide down [Range:$0-$F] ------------------------------------ Usage: $E2 + value This command works just like the normal portamento down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300E26 Slide up 6 at the beginning of the note. Cmd E3. Glissando Ctrl [Range:$0-$1] ------------------------------------ Usage: $E3 + Glissando-Status Glissando must be used with the tone-portamento command. When glissando is activated, tone portamento will slide a half note at a time, instead of a straight slide. Example: C-300E31 Turn Glissando on. C-300E30 Turn Glissando off. Cmd E4. Set vibrato waveform [Range:$0-$3] ------------------------------------------ Usage: $E4 + vibrato-waveform Example: C-300E40 Set sine(default) E44 Don't retrig WF C-300E41 Set Ramp Down E45 Don't retrig WF C-300E42 Set Squarewave E46 Don't retrig WF C-300E43 Set Random E47 Don't retrig WF Cmd E5. Set finetune [Range:$0-$F] ---------------------------------- Usage: $E5 + finetune-value Example: C-300E51 Set finetune to 1. Use these tables to figure out the finetune-value. Finetune: +7 +6 +5 +4 +3 +2 +1 0 Value: 7 6 5 4 3 2 1 0 Finetune: -1 -2 -3 -4 -5 -6 -7 -8 Value: F E D C B A 9 8 Cmd E6. PatternLoop [Loops:$0-$F] ---------------------------------- Usage: $E6 + number of loops This command will loop a part of a pattern. Example: C-300E60 Set loopstart. C-300E63 Jump to loop 3 times before playing on. Cmd E7. Set tremolo waveform [Range:$0-$3] ------------------------------------------ Usage: $E7 + tremolo-waveform Example: C-300E70 Set sine (default) E74 Don't retrig WF C-300E71 Set Ramp Down E75 Don't retrig WF C-300E72 Set Squarewave E76 Don't retrig WF C-300E73 Set Random E77 Don't retrig WF Cmd E9. Retrig note [Value:$0-$F] ------------------------------- Usage: $E9 + Tick to Retrig note at. This command will retrig the same note before playing the next. Where to retrig depends on the speed of the song. If you retrig with 1 in speed 6 that note will be trigged 6 times in one note slot. Retrig on hi-hats! Example: C-300F06 Set speed to 6. C-300E93 Retrig at tick 3 out of 6. Cmd EA. FineVolsl up [Range:$0-$F] ---------------------------------- Usage: $EA + value This command works just like the normal volumeslide up, except that it only slides up once. It does not continue sliding during the length of the note. Example: C-300EA3 Slide volume up 1 at the beginning of the note. Cmd EB. FineVolsl down [Range:$0-$F] ------------------------------------ Usage: $EB + value This command works just like the normal volumeslide down, except that it only slides down once. It does not continue sliding during the length of the note. Example: C-300EB6 Slide volume down 6 at the beginning of the note. Cmd EC. Cut note [Value:$0-$F] ------------------------------ Usage: $EC + Tick to cut note at. This command will cut the note at the selected tick, creating extremely short notes. Example: C-300F06 Set speed to 6. C-300EC3 Cut at tick 3 out of 6. Note that the note is not really cut, the volume is just turned down. Cmd ED. NoteDelay [Value:$0-$F] ------------------------------- Usage: $ED + ticks to delay note. This command will delay the note to the selected tick. Example: C-300F06 Set speed to 6. C-300ED3 Play note at tick 3 out of 6. If you use ED0, the note will be delayed a little anyway. You can play the same note on two channels, delay one, and get a nice flanging effect. Cmd EE. PatternDelay [Notes:$0-$F] ---------------------------------- Usage: $EE + notes to delay pattern. This command will delay the pattern the selected numbers of notes. Example: C-300EE8 Delay pattern 8 notes before playing on. All other effects are still active when the pattern is being delayed. Cmd EF. Invert Loop [Speed:$0-$F] --------------------------------- Usage: $EF + Invertspeed This command will need a short loop ($10,20,40,80 etc. bytes) to work. It will invert the loop byte by byte. Sounds better than funkrepeat... Example: C-300EF8 Set invspeed to 8. To turn off the inverting, set invspeed to 0, or press ctrl + Z. This effect will trash the sample, and will probably be removed in the next version. Cmd F. Set speed [Speed:$00-$FF] -------------------------------- Usage: $F + speed This command will set the speed of the song. Vblank: Range 01-FF - Normal timing CIA: Range 01-1F - Set vblank speeds with CIA timing. CIA: Range 20-FF - Set BPM speeds, range 32-255. Both: Range 00 - STOP song. ABOUT: THE SYNTHETIC SOUND EDITOR (USED WITH THE AMIGA MODULES) This is the editor, which is used to design simple pieces of waveforms and to " program " the volume and pitch altering sequences. Synthetic sounds don't take much memory (that's the main advantage of them). They can use the whole 5-octave range. Although they are quite simple, they usually sound quite "cool" (and remind me of the good old C-64). Getting started: First load MED, select the Instr-panel, click the Synth-gadget to initialize a new synthsound. Then click the Synth-display selection gadget to display the synthsound editor. Please turn editing off. You can play the current sound with keyboard, like ordinary samples. Waveform editing: There are two waveform displays, the left one is the "master waveform display" and the right one is for intermediate editing (it also serves as a copy buffer). Between the waveform displays are some gadgets, that are used for transferring waveforms between displays. First, there are two copy gadgets. If you press the left copy gadget, the right waveform will be copied to the left one (and vice versa). Gadget "<- EXCHANGE ->" exchanges the waveforms on the left and right. "<- MIX" mixes the left waveform to the right waveform. It is a powerful tool that can be needed quite often. "<-ADD" is similar to the mix, but it doesn't produce any average between the waveforms (= waveforms, from now on). The waveforms are simply added together. It's possible, that the waveforms exceed the upper and lower limits (in that case, they are truncated). Two "<- EDIT" "EDIT->" gadgets allow you to select either of the displayed waveforms as a current waveform, which is then used in some editing functions. Sometimes they're automatically set (when you draw the waveform with mouse, for example). "UNDO" undoes your last editing operation. It can be quite useful. "RANGE ALL" selects the current waveform, so that any editing operations affect the whole waveform. Freehand drawing: A very simple way to create waveforms is to draw them from scratch. This is easily done. Just press the left mouse button and draw. There are two drawing modes. The default is "pixel". The other is "line". This can be used for drawing straight lines. There's also a mix-mode, that works in both "line" and "pixel" -mode. It mixes the drawed pixels or lines with the already existing data. Mode-selection gadgets are located below "RANGE ALL". Waveform length: Each waveform in synthsound can be 2 - 128 bytes long (it must be even, though). The shorter the waveform, the higher the pitch (it also depends on the waveform itself). Usually, to make the pitches compatible with other instruments, you should use length 2, 4, 8, 16, 32, 64 or 128. The length can be changed with "LEN:" gadgets below the left waveform, by typing in a new value or by clicking the single-step gadgets. Multiple waveforms: Each synthsound can consist of more than one waveform (the maximum is actually 64). On the left, below the left waveform, there's a set of gadgets: curr. waveform # | 0 < > / 00 |/ \| next/prev number of the last waveform The arrow gadgets select the next/previous waveform. As this is an operation that is needed often, there are keyboard shortcuts: Alt-cursor left = previous Alt-cursor right = next There are two Add gadgets that allow you to increase the number of waveforms. "Last" adds a new waveform after the last waveform. "Here" inserts a new waveform here, and shifts the others. Del gadgets: "Last" deletes the last waveform. "Here" deletes the current waveform. Preset waveforms: There are some simple, often needed preset waveforms available at a single click. First, make sure, that the destination waveform is the current waveform (selected with the EDIT <-/-> gadgets). Then, just click the preset waveform icon. The icons are located at the bottom of the editor. The available waveforms are: sine, saw up/down, pulse, random and triangle. The CLR-gadget clears the current waveform. The ALL-gadget clears the whole synthsound (so be careful..) Range operations: These are some basic operations, that are applied to the selected range (highlighted white). You can select the range by dragging the mouse over the waveform with the right mouse button down. You can select the whole waveform by clicking "RANGE ALL". The Range start/Range end gadgets at the lower right corner of the synthsound editor can be used to make small corrections to the area. When there's no range selected, there's a single horizontal white line. This is the cursor. Some editing operations need it. The cursor position can be set by clicking the right mouse button on the waveform area. There are also three narrow gadgets (on the left of the preset waveform gadgets) for positioning the cursor: cursor to cursor to end start | | < + > | cursor to the middle (of the waveform) On the middle of the screen, there's a word "RNG", followed by a strip of gadgets: RNG Cut Copy Paste Clr Dbl Rev < > Cut- (works only on left waveform). It "cuts" the selected area, which is then moved to the right waveform display. Copy- copies the selected range to the right waveform, but doesn't cut it away. Paste- copies the contents of the right waveform to the position pointed by the cursor. Clr- clears the range. Dbl- "doubles" the range, making it play one octave higher. Rev- reverses the range. < or > shift the ranged data to left or right. There are two other editing operations: stretch and volume change. Stretch allows you to stretch a point of the waveform towards some other point (understand?? no?? then try this:) For example, select a sine wave. Then position the cursor on the middle of the waveform (there's a gadget for this purpose, see above). Now activate the "STRETCH:"-gadget (on the left lower corner of the synthsound ed). Type in the amount of moving, e.g. 32. This should demonstrate it... If the number you type in is negative, the point is stretched to left. Volume change allows you to increase/decrease the volume of selected range: First, select a range. Then activate the "VOL.CHG:"-gadget. Now you must enter the amount of volume change (in %'s). For example, to halve the volume, you should type 50. If you want to double the volume, type 200. The volume will be changed when you press Return. Transformation: This is quite a powerful feature. It allows you to change a waveform to another smoothly (by creating the waveforms between them). Demonstration: Allocate 9 new waveforms (click Add/Last 9 times). Now you have 10 waveforms. Move to waveform 00, and select a pulse waveform, for example. Then click Transform: Start to mark the beginning of transformation range. Move to waveform 09 (the last one). Put here a sine waveform. Click Transform: Do, and the magic is done. If you view the waveforms 01 - 08, you'll notice that there's now a smooth transition from the pulse wave to the sine wave. PLEASE NOTE: AGAIN ALL OF THIS DATA AND INFORMATION (WHICH FOLLOWS) CONCERNING 'THE PROGRAMMING LANGUAGE' DEALS WITH THE AMIGA AND NOT WITH THE IIGS SPECIFICALLY. --------------------------------------------------------------------------- THE PROGRAMMING LANGUAGE ======================== Note: please read this section carefully before experimenting, because you can lock up your machine with the synthsound programming language (as with any other language) The programming language is used for controlling the volume/pitch/vibrato/ waveforms/arpeggio/etc... of the synthsound. It consist of simple keywords, of which some have an argument. The programming is done using two lists of commands/numbers. These lists are displayed through a small window below the right waveform display. First there are line numbers in decimal and hex (two leftmost columns). The middle column contains the volume sequence, while the rightmost is the waveform/pitch sequence. volume ctrl seq | line | waveform ctrl seq | | | 00 00 40 00 01 01 END END These lists are both max. 127 ($7F) entries long. The list is always terminated with "END" instruction (it's automatically there so you don't have to do that). You can scroll the list with cursor up/down -keys. The cursor can be moved horizontally using the cursor left/right -keys. There are six possible cursor locations (3 for both lists). When entering commands, the cursor should be on the leftmost position of that list. Values are entered by pointing the cursor over the value to be changed and entering a new value. Commands and numbers are entered with keyboard. You can insert entries to the list with the Return-key (or clicking Ins-gadget), and delete using Del (or clicking Del-gadget). JMP commands are renumbered when entries are inserted or deleted. ALL NUMBERS IN THE SEQUENCE LISTS ARE HEXADECIMAL. Just remember this, and you have no problems (fingers crossed :^) Also, the editing (Esc) must be on before the lists can be changed. First, let's examine some example sequences: This is a volume sequence: 00 40 <= set initial volume to 64 (hex $40, did you already forget?) 01 CHD <= command, that means "Set volume change down speed" 02 03 <= argument (speed = 3) 03 END Here's another: 00 00 <= initial volume = 0 01 CHU <= Command: Set volume change up 02 07 <= speed = 7 03 WAI <= Command: Wait 04 10 <= wait 10 pulses 05 CHU <= Set volume change up 06 00 <= speed = 0 -> stop changing volume 07 WAI <= Wait 08 70 <= 70 pulses 09 CHD <= Cmd: Set volume change down 0A 01 <= speed = 1 (slow) 0B END Third: 00 40 <= vol = $40 01 30 <= vol = $30 (without command, the values are volume changes) 02 20 <= vol = $20 03 END And fourth, finally: 00 40 <= vol = $40 01 CHD <+ <= change down speed.. 02 01 | <= ..= 1 03 WAI | <= Wait.. 04 20 | <= ..20 05 CHU | <= change up 06 01 | <= ..1 07 WAI | <= Wait.. 08 20 | <= ..20 again 09 JMP | <= Jump (= goto) 0A 01 -+ <= to line number 01 0B END Now some waveform/pitch sequences. waveform/pitch sequence is the "mastersequence" while the volume sequence is a kind of "slave sequence". First: (the simplest case) 00 00 <= set waveform #00 01 END A bit more complex: 00 VBS <= set vibrato speed 01 40 <= speed = $40 02 VBD <= set vibrato depth 03 02 <= depth = 2 04 00 <= waveform #00 05 END And very complex: 00 ARP <= start arpeggio sequence 01 00 \ 02 03 arpeggio values 0, 3, 7 (minor chord) 03 07 / 04 ARE <= end arpeggio sequence 05 VBD <= vibrato depth 06 06 <= 6 07 VBS <= vibrato speed 08 40 <= $40 09 00 <= set waveform #0 0A 01 <= set waveforms 01 - 0A (one timing pulse/waveform) 0B 02 | | 0C 03 \ / 0D 04 \_/ 0E 05 0F 06 10 07 11 08 12 09 13 0A and back to #01... 14 08 15 07 16 06 17 05 18 04 19 03 1A 02 1B 01 1C JMP <= jump 1D 09 <= to position 09 (restart waveform changing) 1E END --------------------------------------------------------------------------- You can learn a lot by examining the example synthsounds and by experimenting. Now, some reference... About timing: For both sequence lists, most of the commands are fetched, executed, and the next command is immediately fetched. There are also some commands that wait for the next timing pulse, this is important because the computer would otherwise send all its time executing the sequence lists (and would hang up). You should take care that all loops contain a command, that waits for the next timing pulse. These commands are WAI (Wait), vol chg (plain number in the volume list) and set waveform (plain number in pitch/waveform list). For example, the following loops will hang up your computer: 00 JMP 00 CHU <-+ command CHU doesn't wait 01 00 01 02 | 02 JMP | 03 00 --+ While the following would not: 00 20 00 WAI 01 JMP 01 02 02 00 02 JMP 03 00 Execution speed: The synthsound handling routine is called once every interrupt. This means that the handling is usually done 6 times/note (can be changed with secondary tempo, see main docs). Both lists have an execution speed, that is the speed of the operation. When the speed is 1, the next command is fetched/pitch changed etc. on every interrupt. If the speed was 2, it would happen every second interrupt (runs two times slower). The initial execution speed can be set with the two speed gadgets. During executing, the speed can be changed with command SPD. VOLUME SEQUENCE LIST COMMANDS ============================= 1. Set volume Command: --- Keyboard: --- (key needed to enter the command) This is the default command (no command identifier). It sets the absolute volume of the synthsound. It should be 00 - 40. Note that the relative track volumes are not used in synthsounds (mostly because of performance reasons). Example: 00 30 ;volume = $30 01 10 ;volume = $10 ... 2. End sequence Command: END Keyboard: --- This command terminates the volume sequence list. It's always there and automatically inserted. You can't insert commands past this one. 3. Set volume change down speed Command: CHD Keyboard: D This command sets the speed, in which volume is decreased each timing pulse. The volume starts changing automatically after this command. To stop automatic volume sliding, issue this command with speed 00. Example: 00 CHD 01 05 ;speed = 5 ... 10 CHD 11 00 ;speed = 0 -> stop sliding 4. Set volume change up speed Command: CHU Keyboard: U This command is like CHD, except it sets the volume change up. 5. Wait Command: WAI Keyboard: W This command waits for specified amount of timing pulses (pause). Example: 03 WAI 04 10 ;wait for 16 ($10) pulses to occur 6. Jump Command: JMP Keyboard: J Causes an immediate jump to another position of the volume list. Example: 05 JMP 06 0A ;jump forward to line 0A 7. Jump waveform sequence Command: JWS Keyboard: Shift-J This command causes a jump in the waveform sequence. This can be used for example, to trigger a pitch change at the end of the vol seq list. Note that this DOESN'T cause a jump TO waveform sequence. Example: 04 JWS 05 0F ;Cause jump in waveform sequence list 8. Halt Command: HLT Keyboard: H This has the same effect with command END (halt execution), but it can be inserted in the middle of the sequence list. Example: 03 HLT 04 04 ;some other code (can be accessed with JMP instruction, for ... example) 9. Set speed Command: SPD Keyboard: S Sets the execution speed. Example: 0A SPD 0B 01 ;speed = 1 (fastest) ... (The following commands require OctaMED V2.00 / MED V3.20 or later.) 10. One-shot envelope Command: EN1 Keyboard: E This command allows you to draw the shape of the envelope with the mouse. When the end of the envelope is reached, nothing occurs. 02 40 03 EN1 04 05 Waveform 05 is used as an envelope. Note that the envelope execution starts on next interrupt, so the volume is initialized to $40. The envelope waveform must always be 128 bytes long!! 11. Looping envelope Command: EN2 Keyboard: Shift-E This works like command EN1, except that when the end is reached, execution will start again from the beginning. WAVEFORM/PITCH SEQUENCE LIST COMMANDS ===================================== 1. Set waveform Command: --- Keyboard: --- This command is used to indicate the waveform number (starting from 00). After this instruction, the execution stops until next timing pulse occurs. Don't use waveform numbers that are higher than the actual number of the last waveform. Example: 00 00 ;waveform 00 01 01 ;waveform 01 ... 2. End sequence Command: END Keyboard: --- This command terminates the waveform/pitch sequence list. It's always there and automatically inserted. You can't insert commands past this one. 3. Set pitch change down speed Command: CHD Keyboard: D This command sets the sliding speed for sliding pitch down. The sliding automatically starts after this command and stops, when speed is set to zero. Example: 00 CHD 01 03 ;set speed to 3 ... 4. Set pitch change up speed Command: CHU Keyboard: U Just like previous, but slides pitch up. 5. Wait Command: WAI Keyboard: W This command waits for specified amount of timing pulses (pause). Example: 03 WAI 04 02 ;wait for 2 pulses to occur 6. Jump Command: JMP Keyboard: J Causes an immediate jump to another position of the waveform/pitch list. Example: 05 JMP 06 0A ;jump forward to line 0A 7. Jump volume sequence Command: JVS Keyboard: Shift-J This command causes a jump to happen in the volume sequence. Can be used e.g. for triggering volume changes after some waveform event. Example: 09 JVS 0A 00 ;start volume sequence from the beginning 8. Halt Command: HLT Keyboard: H This has the same effect with command END (halt execution), but it can be inserted in the middle of the sequence list. Example: 03 HLT 04 04 ;some other code (can be accessed with JMP instruction, for ... example) 9. Set speed Command: SPD Keyboard: S Sets the execution speed. Example: 0A SPD 0B 01 ;speed = 1 (fastest) ... 10. Begin arpeggio definition Command: ARP Keyboard: A This command starts the arpeggio sequence. The following values are the arpeggio offsets from the base note. The arpeggio sequence is terminated with ARE-command. The arpeggio starts automatically after the sequence is defined. Example: 03 ARP ;start arpeggio 04 00 ;offset values 05 04 06 07 07 0A 08 ARE ;end arpeggio definition 11. End arpeggio definition Command: ARE Keyboard: E Ends an arpeggio definition. See above. 12. Set vibrato depth Command: VBD Keyboard: V This command is used to set the vibrato depth (00 - 7F). Example: 02 VBD 03 04 ;set depth to 4 13. Set vibrato speed Command: VBS Keyboard: Shift-V This command sets the vibrato speed (00 - 7F). Both speed and depth must be nonzero for vibrato to occur. Example: 02 VBD 03 04 ;depth = 4 04 VBS 05 30 ;speed = 30 14. Reset pitch Command: RES Keyboard: R This command resets the pitch of the note to its initial pitch. (The following command requires OctaMED V2.00 / MED V3.20 or later.) 15. Set vibrato waveform Command: VWF Keyboard: Shift-W Sets the vibrato waveform. The argument is the number of waveform. The waveform should always be 32 bytes long!! Note that it's actually played reversed (use the Rev gadget to reverse it). By default, sine wave is used. Example: 00 VBD 01 06 02 VBS 03 40 04 VWF 05 04 ;use waveform number 04 as vibrato waveform =========================================================================== Synthsound handling commands in the songs: Command E in the songs controls the MIDI pan, if used with MIDI, but with synthsounds, it is used to trigger a jump in the waveform/pitch sequence list. For example, if you wanted to decrease the pitch of the sound after a certain point, your waveform/pitch sequence could look like this: 00 VBS 01 40 02 VBD 03 06 04 00 ;play waveform 00 05 HLT 06 CHD ;pitch changing entry point 07 02 08 END Now you could compose a track like this: C-2 3000 ;this is the previous synthsound --- 0000 --- 0000 --- 0E06 ;cause a jump to position 06 (pitch starts to slide down) --- 0000 With command JVS, you could make the command affect volume sequence too. Hold/Decay: =========== Hold/Decay work well with synthsounds too. The decay value in synthsounds is, however, a jump address in the volume sequence list. When the decay should start, the execution will jump to this entry in the vol seq list. This means that you can handle the decay on any way you want. You can also make it affect the pitch/waveforms using the command JWS. Example volume sequence list: 00 40 ;volume 01 HLT ;end 02 CHD ;decay handling (entry point) -> cause decay 03 03 04 END The decay value for this synthsound should be 2. When you save/load synthsounds, the decay values are saved/loaded with the instrument. Saving/loading synthsounds: Synthsounds are saved using the file requester panel, "save instr". They usually take very little disk space. Synthsounds can be loaded just like normal samples (file requester, sample list, typing sample name). HYBRID SOUNDS: Hybrid sounds are much like synthsounds, except that there are no waveform pieces. Instead, there's a normal sample. All commands of the synthsound handling programming language can be used with hybrid sounds. There's only one thing you should know: Don't use "Set waveform". Because there's only a single waveform, there's no need for that (and it wouldn't work anyway). Final note - CODA ! Don't be afraid if you didn't understand everything described in this file (I hardly understand it myself ;-) All this information is not necessary for using the synthsounds (only for designing them). --------------------------------------------------------------------------- This is a last minute addition, that may well have a lot of redundant information and tech. data. But, it also has some additional technical data, undates and inclusions that could be useful for reference, to the readers of this collective report, review and article. Therefore, I've decided to include it in its entire informational and text chat content, for your review. I had no time to correct the offset text, remove the useless on-line chat comments, or do any sentence, paragraph or other alignments and editing. I hope it will be useful and not to confusing. Again, I have to point it out and please keep in mind that this all deals with the Amiga and MODfiles from them. It's content, computer language reference and the like, should not be confused with that for the IIgs. It was written for technical support and applications with the Amiga computer and their native MODfiles. So, please keep this formost in mind, when you read, reference and review it. - Dr. Tom --------------------------------------------------------------------------- From: Lars Hamre There are _NO_ standard sample rate for the samples used in modules. But most often the samples are done on the rate called C-3 (which is about 16574 Hz if you have a PAL machine). Sometimes drums are sampled at A-3 (around 28 kHz), and some sounds are at ~8 kHz or anything else to save space. The sample rate on each of the channels can be selected by a period value, which tells the hardware how many ~3.5 MHz clocks to count down before playing the next sample. If you have a 16 kHz sample you simply play it at a note that gives you 16 kHz sample rate. If you play it one octave lower, you get a 8 kHz sample rate (and a double period value). Here are the magic formulas: 7093789.2 SampleRate = -------------- (For a PAL machine) Period * 2 7159090.5 SampleRate = -------------- (For a NTSC machine) Period * 2 So, the most normal rate is (C-3, period 214): 7093789.2 ----------- = 16574.27 Hz 214 * 2 (16726.8 Hz if you use the NTSC formula, but i have a PAL machine) The Amiga has four channels with independent sample rates, so there are no such thing as a common rate for all channels, and there are no mixing going on. For a list of period values and what notes they are supposed to correspond to, see the list of period values in the MOD format below. Also note that finetuning are actually done by switching between 16 different period tables (not included here, but get the Amiga Protracker Playroutine). Lars Hamre larsha@lise.unit.no [ A description of the mod format follows: -Lars] Newsgroups: comp.sys.amiga.audio From: steinarm@ifi.uio.no (Steinar Midtskogen) Subject: Old MOD. format + PowerPacking Summary: Description of the MOD format and powerpacking Keywords: MOD, Powerpacker Organization: University of Oslo, Norway Date: Sun, 14 Mar 1993 23:49:00 GMT Since everybody seem to ask about the module format, here it comes. I will post this information every forthnight, at least for a period (pun intended). I have put together most of the documentation about the module format from PT2.3, edited it heavily (all credit to the original authors, but I take responsibility for all errors) and added information about powerpacking and how the Amiga volume work. The reason for not using documentation following PT3.0, which is written by my group, is that there is no docmentation on the MOD format following that. Our reason for not distributing the documentation of the MOD. format with the tracker is that we try to discourage the usage of the MOD. format; a new format is coming up soon. So don't write a revolutionary piece of code based on the information presented herein; it will hopefully be outdated in only another month. [ Outdated? I don't think so... -Lars] (The "I" in this file refer to Vishnu of Cryptoburners, the "we" refer to respectively Amiga Freelancers and Cryptoburners; it should be obvious from the context which of them) Credits for original doc files: Lars "ZAP" Hamre /Amiga Freelancers The documentation to the song/module format. The information about how to calculate BMPs from the Amiga CIA timings. Peter "CRAYON" Hanning /Mushroom Studios/Noxious Updates to the song/module format information. (I thought that it looked pretty similar to the one from PT1.3, but he had put his name under, so...) The table of effect commands. [ Hrm. Both files are mine. I can see no big changes. -Lars] I have updated the information in the song/module format text, and added information on how the finetuning work.