FAUST MUSIC CREATOR ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ DOCUMENTATION CONTENTS: Disclaimer 1. Introduction 2. Running The Program 2.1 Hardware Requirements 2.2 Startup 3. Making Music With FMC 3.1 Global Key Commands 3.2 Screen Layout 3.3 Song/Pattern Editor Screen 3.4 Instrument Editor Screen 3.5 Effects commands 4. Linking the playroutine with own programs 5. Something about the making of this perverted product DISCLAIMER ÄÄÄÄÄÄÄÄÄÄ Use of this package (the program, this documentation, the source codes and the provided example songs and instruments) IS AT YOUR OWN RISK. The author takes no responsibility for any damage, including mental, physical, social, technical, economical or whatever caused directly or indirectly by the use of this package. 1. INTRODUCTION Faust Music Creator is a flexible and easy-to-use music program for ADLIB-compatible soundcards. It lets you create up to 8-channel musical scores while taking full use of all the features and parameters in FM sound synthesis. FMC is a typical "tracker" music program because the music is built with 64-note patterns which are then put into a specific order. However, it is different from most composing programs in the way that it has no pull-down menus, buttons or mouse control. All commands are accessible from keyboard and in the long run that means maximal speed and ease of use. Just take some time, and you'll get it down. 2. RUNNING THE PROGRAM 2.1 HARDWARE REQUIREMENTS FMC will run on 286 or better machines. Because of the use of text mode, any strain on the processor is minimal and speed should be sufficient in any situations. FMC can be operated from a floppy disk, but a hard disk is recommended for speed and the ease of creating large song and instrument libraries. About 120 kilobytes of conventional memory is required. 2.2 STARTUP FMC is started by running the main program FMC.EXE. You will be presented with the Song/Pattern Editor screen, with all the names, values and parameters blank. Now it's up to you to make the shittiest music ever! :-) 3. MAKING MUSIC WITH FMC 3.1 GLOBAL KEY COMMANDS These are functional anywhere, anytime (except the file selector or when typing some name) [F1] - Go to the Song/Pattern Editor Screen [F2] - Go to the Instrument Editor Screen [ESC] - Exit to DOS 3.2 SCREEN LAYOUT The top of the screen contains the blue-white title bar. In its left- hand corner an indicator shows in what screen you are and what you are editing. In the middle of the screen is the main edit area where all the parameter names are in magenta and the parameters themselves are in white. Below, in a green text, is a short summary of the key commands of the screen and editing mode you're currently in. In the bottom is the message row. All important prompts appear there. 3.3 SONG/PATTERN EDITOR SCREEN The screen is divided into the song editor section and the pattern editor section. First some key commands common to both of them: [TAB] is used to switch between the sections. [SPACE] starts/stops the music. Remember that the music starts at the current cursor position. [F10] gets you in a global kill menu where you can select between: Clear song only Clear instruments only Clear both Cancel Now we'll dissect the song editor section. It shows the name of the song and the order list of patterns. Example: SONG NAME:The Trooper (Harris) POSITION: 00 01 02 03 04 05 06 07 08 etc... PATTERN: 00 01 02 03 02 03 04 05 06 The song begins with pattern number 0, then 1, then patterns 2-3 are repeated two times, followed by 4,5,6... The order of patterns is edited by entering numbers in hexadecimal and moving with cursor keys. Page Up, Page Down, Home and End can be used for faster movement. Insert and Delete work like they should. You can set the number of channels in the song with [<] and [>]. [T] key lets you to type in the name of the song. The order list can be up to 256 patterns long. In the case of 256 patterns, they will cycle continuously. However, if the song is shorter, you have the option of either cycling the patterns forever or halting the song at the end. [R] - Insert a Repeat (cycle) command into the order list [H] - Insert a Halt command into the order list There is also an other way to halt the song, by setting the tempo to zero. [L] and [S] are used to load and save the song you are editing. A file selector will pop up, where [TAB] is used to pop from a field to another and cursor keys to scroll the file list up and down. [ESC] or typing a blank file name cancels the operation. REMEMBER ABOUT THE SAVE FUNCTION THAT the number of patterns saved depends on the highest pattern number included in the order list. Next, the pattern editor. The status line in the middle of the screen shows the current pattern number, the instrument you are using, the work octave and whether the edit mode is on or off. With edit mode off, you may use the keys as a piano keyboard to test out melodies. [BACKSPACE] silences the note. With edit mode on, the notes go into the pattern. To switch the edit mode on/off, press [ENTER]. Below you see the current pattern. You might see something like this: CHAN. 1 CHAN.2 <- Not shown onscreen 00 C-401000 A-203000 01 ---00000 ---00000 02 H-301000 ---00000 And so on, depending on the number of channels. 03 A-301000 ---00000 04 E-301000 ---00000 05 ---00000 ---00000 The number on the far left is the pattern line number. Each pattern has 64 lines (00-3F in hexadecimal). Next to it are the note slots. Each slot contains a note (or a rest) and 5 numbers in hexadecimal. They're explained below. EFFECT NOTE INSTRUMENT PARAMETER(S) ³ /\ /\ C - 4 0 1 0 0 0 ³ ³ OCTAVE EFFECT The effects and parameters are described later. To move in the pattern, use cursor keys in all directions, Home, End, Page Up and Page Down. To delete a note slot in the current pattern, press [DEL]. The slots beneath are shifted up. To insert a blank slot, press [INS]. Remember: slot number 3F will be lost! To select the current work pattern, use [+] and [-] To select the work octave, use the keypad numbers. REMEMBER: NUMLOCK MUST BE ON! Use [<] and [>] to select the instrument to work with. [F3] cuts (copies into copybuffer and clears) the channel you're in. [F4] does the same but does not clear. [F5] copies the buffer back onto the channel you're in. [SHIFT] + [F3-F5] do the same for the whole pattern. [F7] transposes the channel you're in one halfstep down. [F8] transposes up instead. Remember that, for easier editing, the pattern selecting and copying work also in the song editor section. 3.4 INSTRUMENT EDITOR SCREEN This screen shows the current instrument number, instrument name and a lot of parameters. Cursor keys are used to move between the parameters, numbers and A-F are used to change the numeric parameters and [Y]/[N] to change the yes/no parameters. [<] and [>] keys scroll thru the instruments [T] lets you to type in the instrument name [X] exchanges the CARRIER/MODULATOR parameters [L] loads the current instrument (warning:no questions about unsaved instruments asked) [S] saves the current instrument Next I'll try to explain the parameters. The best way however to learn how they work is by experimenting. Creating FM instruments is pretty much hit and miss and that's part of the fun! FREQUENCY MODULATION YES means that the modulator part of the sound modulates the carrier, producing very complex sounds. NO means that they both produce sound on their own. FEEDBACK Indicates the amount of the modulator sound fed back into itself. High levels of feedback create white noise. PITCH SHIFT This is not a hardware parameter. Ranges from -128 to 127, it indicates the number of frequency units shifted up or down at every 1/50 seconds. 16 units make one halfstep. Useful to create drum or laser effects. The parameters below are the same for the modulator part and for the carrier part, so they're listed only once. ATTACK How fast the sound volume goes to maximum. 01=slow 0F=fast. 00 means no sound at all! DECAY How fast the sound goes from maximum level to sustain level. 01=slow 0F=fast. 00=no decay at all. Remember that complex and beautiful chorus- or flanger-like sounds come from the decaying (or releasing) modulator. SUSTAIN Indicates the sustain level. 00=softest 0F=loudest. RELEASE How fast the sound goes from sustain level to zero level. 01=slow 0F= fast. 00 means of course no release at all (not recommended) VOLUME Indicates the master level. Remember that the envelope (ATTACK etc.) is relative to this. Ranges from 00-3F. Changing the modulator volume changes the tone of the sound. Changing the carrier volume changes the overall volume level. LEVEL SCALE Indicates the diminishing factor of the sound output as the pitch goes higher. 00=no diminishing 03=greatest diminishing. MULTIPLIER A relative frequency change parameter. Possible values: 0 - one octave below 1 - at the voice's specified frequency 2 - one octave above 3 - an octave and a fifth above 4 - two octaves above 5 - two octaves and a major third above 6 - two octaves and a fifth above 7 - two octaves and a minor seventh above 8 - three octaves above 9 - three octaves and a major second above A - three octaves and a major third above B - " " " " " " " C - three octaves and a fifth above D - " " " " " " E - three octaves and a major seventh above F - " " " " " " " WAVEFORM Specifies the output waveform. 00 is closest to pure sine wave, and 03 is the most distorted. SUSTAIN SOUND YES means that during the note, the release phase will never begin. NO makes the release phase start right after the decay. SCALE ENVELOPE YES makes the sound shorter at higher frequencies, NO doesn't PITCH and VOLUME vibrato should explain themselves. Remember that pitch vibrato can be generated also via the effect commands. 3.5 EFFECTS COMMANDS First a bit about the frequency and volume units in this program. The frequency unit is a custom system where 16 frequency units make one halfstep, regardless of pitch or octave. The volume unit is one half of the ADLIB volume unit. So, smoother volume slides can be achieved. The effect commands should be ProTracker-, ScreamTracker- or whatever- compatible, except for the vibrato which is a bit custom, and the release initiate command. 0 - ARPEGGIO (Effect parameters indicate halftones) EXAMPLE: C-3 00037 C-minor arpeggio G-3 00047 G-major arpeggio 1 - PORTAMENTO UP (Effect parameter indicates speed in units per 1/50 second) 2 - PORTAMENTO DOWN (Same as above but down) 3 - TONEPORTAMENTO (Effect parameter indicates speed, direction is decided automatically and the portamento will stop when target pitch is achieved) EXAMPLE: A-3 00000 First we play A --- 00000 Wait for some time --- 00000 --- 00000 E-3 00301 Begin toneportamento down to E --- 00300 Continue with same speed.. --- 00300 --- 00300 4 - VIBRATO (First effect parameter indicates depth measured in 1/50 seconds, second indicates speed in frequency units) 5 - INITIATE RELEASE (No parameters) Remember, that if after initiating release you set the volume level or do any volumeslides, the attack will begin again. A - VOLUMESLIDE (First parameter indicates speed up, second speed down) B - POSITION JUMP (Effect parameter indicates position in the pattern order list) C - SET VOLUME (Parameter indicates volume level ranging from 00 to 3F) D - PATTERN BREAK (No parameters) E - DELAY AND RETRIG COMMANDS: If the first parameter is 9, the note is retriggered at tick indicated by the second parameter (tick=1/50 second) If the first parameter is D, the note is played only at the tick specified by the second parameter. IF THE TICK NUMBER IS GREATER THAN THE TEMPO THE NOTE IS NOT PLAYED AT ALL. F - SET TEMPO (Parameter indicates tempo in ticks, default is 6) 4. LINKING THE PLAYROUTINE WITH OWN PROGRAMS own programs A player source code in real mode assembler and an example program using the player are provided. By examining them you should get the idea how the playroutine is used. A MAKEFILE for TASM and TLINK is also provided. There are four important routines in the player: LOADMUSIC - loads the song file, DX = name offset INITMUSIC - begins playing PLAYMUSIC - the playroutine to be called in an interrupt WARNING! Destroys most registers (but not segment registers) so save them before calling. STOPMUSIC - stops playing - If you're not programming in assembler yourself, get some general info about linking machine code with the language you're using. I'm no expert. - The Player.asm and Example.asm are written in MASM mode. If you use IDEAL mode you have to make some minor changes. - The source codes are written in SMALL memory model. Slight changes will have to be made if you use a different model. - If you are a really weird person who makes programs in protected mode then it's fair play to assume that you are skillful enough to convert the player to protected mode. - A general hint about programming: when faced with a tough problem, listen to some death metal via earphones. It will help. 5. SOMETHING ABOUT THE MAKING OF THIS PERVERTED PRODUCT As I'm writing this, it's Wednesday, 26th of April -95. This project has lasted for a week or a half or something, I can't remember exactly. FMC was written in 100% assembler. Most of the routines were coded in anger, in frustration or in a mental disorder of some kind. The idea was to do everything as fast as possible, not caring about tidy source code, comments, or anything else. Because of this, I've not included the source code(s). By the way, this is my first complete program I've done on PC. I must say the experience was on the whole very positive, despite all the fuckups on the way. There should not be any bugs. However, if you try to load or save from the floppy disk drives, and there's a faulty disk or no disk, there will be funny Abort, Retry, Cancel-messages all over screen. Contacting me can be a bit difficult, because I don't own a modem, but you can reach try to me via Dominus in Starport BBS. Just for fun I'll include my real name, "snail-mail" address and telephone number here, but I don't really expect anything. FAUST = Lasse ™”rni Autoilijantie 6 AS 7 91100 Ii Finland Phone number: (in Finland) 981-8174337