›1m FMsynth v3.7 ›m ›1m User Manual ›m ›1m1 Introduction›m Welcome to FMsynth! This is a program for generating sounds by FM Synthesis. The sounds can be played on your Amiga keyboard and saved in IFF-8SVX or raw format. ›1m2 Copyright›m © Copyright 1993 by Christian Stiens Heustiege 2 D-59348 Lüdinghausen Germany E-Mail: Christian_Stiens@ouzonix.bo.open.de Phone: +49-2591-22857 The distribution of the complete and unchanged paket is allowed to uncommercial mailboxes/FTP-servers and to the following public domain series: - Fred Fish - AMOK - Time - Saar - AM/FM - Amiga Magazin PD You use this program on your own risk. There is no liability or responsibility for any damages caused by the use of this program. All Rights reserved. The MIDI Library and related files are Copyright (C) 1987, 1988, Pregnant Badger Music. All rights reserved. ›1m3 Registration›m FMsynth is Shareware and protected by a key file. Without the key file you can't save your sounds and voices. If you want to register, then please send 30 DM or 20 US$ or the equivalent amount in your local currency to me. Please send only cash (no cheques!). Please add your full address to the registration request. If you want to receive the key via email then tell me your internet email address. ›1m4 Installation›m Copy the arp.library to LIBS: if you don't have AmigaOS 2.04 or greater. Copy the midi.library to LIBS: if you want to play your FM sounds on a midi keyboard which is connected to the amiga. The best place for the rexx programs is the REXX: directory because otherwise they can't be found, if they are not in the current directory. Copy the key file (if you are happy to own one) to the directory in which FMsynth is contained, because the key is searched first in the current dir and second in "PROGDIR:". ›1m5 Manual›m ›1m5.1 The FM Synthesis›m First a little introduction to the FM Sythesis. The FM Synthesis was developed by John Chowning and used in the DX7 (one of the best sold synthesisers ever) and his successors. The principle of the FM Synthesis is that one sinus wave modulates another sinus wave. Written as a formula it looks like: A(t) = Ac * sin(Fc * t + Am * sin(Fm * t)) Ac: The amplitude of the carrier wave Am: The amplitude of the modulator wave Fc: The frequency of the carrier Fm: The frequency of the modulator As you see, the modulator wave modulates the phase of the carrier wave. This leads to the addition of harmonics to the carrier wave. The ratio Fc to Fm determines, whether the sound is harmonic (periodic) or non harmonic (not periodic). If the ratio is not rational (e.g. 1 to 3.1415), then the sound is not harmonic, if it is rational (e.g. 2 to 3), then the sound is harmonic. The frequency of the sound is equal to the greatest divisor of Fc and Fm. The modulated wave has harmonics at Fc + n * Fm, where n ranges through the integers. Negative frequencies must be interpreted as positive frequencies with sign changed. The number of harmonics is determined by Am. There are six operators (sinus generators) which can be combined in different ways (the so called algorithms). An example of an algorithm is given in the following figure (DX7 notation): +---+ | 3 | +---+ | +---+ +---+ +---+ | 2 | | 5 | | 6 | +---+ +---+ +---+ | | / +---+ +---+ | 1 | | 4 | +---+ +---+ |_________| The operators #1 and #4 are the carriers in this example, the other operators work as modulators. This algorithm is consisting of two parts by three operators. In the first part operator #3 modulates operator #2, this modulates operator #1. In the second part operators #5 and #6 are modulating the operator #4. FMsynth's operators can also generate a triangle-, sawtooth- and square wave. ›1m5.2 General operating hints›m Requesters: You can hit the RETURN key instead of clicking in the right gadget and hit the ESC key instead of clicking in the left gadget. Windows: Nearly all windows (the "Any Chord" window and requester windows excepted) are asynch, that means, you don't have to close these windows, to go on with the program. You can hit the ESC key instead of clicking in the close gadget of the windows to get rid of the windows. ›1m5.3 The Start›m FMsynth can be started as usual via CLI or Workbench. ›1m5.4 Arguments›m You can put the following arguments in FMsynth's icon: PALETTE=###,###,###,### determines the screen colors VOICEDIR= determines the default directory for the .voice files. Don't forget to append a slash or a colon. INSTDIR= determines the default directory for the instrument files. Don't forget to append a slash or a colon. LACE=TRUE|FALSE if TRUE then the screen is interlaced (Kick 1.3 only) DISPLAY= The name of the display ID for FMsynth's screen. A list of valid names can you see if you call SYS:Prefs/ScreenMode The icon is parsed also, if you start FMsynth in the CLI. Exceptions: The program is found not direct, but over the search path (Kick 1.3). The program is resident (Kick 2.04+). ›1m5.5 The Screen›m The screen title displays the actual voice number and name. An "A" is displayed, if the AutoCalc mode is activated. The last thing, which is shown in the title bar is the actual chord setting. ›1m5.5.1 Operator›m Here you can edit the parameters of the 6 operators. KSc/R: Fmsynth uses 5 sound buffers (one for each octave). With this key rate scaling parameter you can determine how much the speed of the envelope increases for higher octaves. The default value of 64 leads to doubling of the rate per octave. KSc/L: With the default value 64 of the key level scaling parameter the level of all 5 sound buffers is the same. If you increase (decrease) this value you can achieve, that the output level of the operator is higher (lower) in high octaves than in low octaves. Attention: If one or more KSc values of some operator is not equal to 64, then the time for calculating the sound is doubled, because in this case each of the 5 sound buffers must be calculated individual. Rate/1-4: The rates of the four envelope segments. They determine, how fast the corresponding level is reached. Level/1-4: The levels of the four envelope segments OL: This parameter determines the output level of the operator. If the operator work as carrier, then this parameter influences the loudness. If it works as modulator, then it influences the timbre. Ph: With this gadget you can determine the initial phase of the operator. The value 63 means +180 degrees, the value -64 stands for -180 degrees. Freq: In this string gadget you can enter the frequency of the operators. Detune: The operators can be detuned in the range -15 upto 15. One unit is 1.13 cents (100 cents is one half tone step). Click on the arrow gadgets to increase or decrease the detuning. If you hold the shift key then the detune is changed by 5 on every click. Mode: Determines whether the operator's frequency is fixed or relative. In mode "RATIO" the frequency of the operator is relative to the note played on the keyboard. The value "1.0" leads to the usual tuning (A = 440 Hz). If the mode is "FIXED" the frequency of the operator is constant 1000 Hz, if you enter "1000.0" to the string gadget. But this is not quite true, because not every note has an own buffer but every octave. So the actual frequency can be 41% more or less. Attention: If the mode of one or more operators is "FIXED", then the time for calculating the sound is doubled, because in this case each of the 5 sound buffers must be calculated individual. PEG: See 4.5.3 (Pitch-EG) Wave: Click in the gadget in the top right corner of the field to change the operator's waveform. ›1m5.5.2 LFO›m In this field you can edit the parameters of the low frequency oscillator in realtime. The purpose of the LFO is to enrich the sound with a vibrato (either of the pitch or the amplitude). Spd: The speed of the LFO Del: The delay after a key press until the vibrato begins. AMD: The amount of the amplitude modulation PMD: The amount of the pitch modulation You can choose among 5 different waves of the LFO. ›1m5.5.3 Algorithm›m Here you can edit the algorithm. Click on a modulator and the carrier which should be modulated. If the connection already exists, it is deleted. If not, the connection is added. If the number of the modulator is less or equal to the number of the carrier then the connection is a feedback loop and is drawn in another color. The feedback is used for sawtooth like waves and for generating white noise. The algorithmus of section 4.1 looks here as follow: +---+ +---+ +---+ +---+ +---+ +---+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +---+ +---+ +---+ +---+ +---+ +---+ / / / ____/ / / /____/ / / // +---+ +---+ +---+ +---+ +---+ +---+ | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | +---+ +---+ +---+ +---+ +---+ +---+ | | The little marks below the carrier gadgets indicate, which operators work as carriers. ›1m5.5.4 Sound›m Calc: The sound is calculated. Size: The size of all 5 sound buffers all together. Transp: The frequency of each operator which is in mode "ratio" is multiplied with this transpose value. If you want to create a bass sound then you could put the value 0.25 in the gadget for tuning the sound two octaves lower. Feedback: The amount of the feedback (0-7). If you hold the shift key while clicking on the arrows, then the feedback is incremented or decremented by 5. Mode: Determines, whether the sound is playable polyphone or monophone. Filter: Here you can turn the low pass filter of the Amiga on or off. Volume: The amplitude of the sound. If the slider is right of the middle position then distortion can occur. RlRate: The release rate at releasing a key. This parameter can be changed in realtime. ›1m5.6 The Menus›m ›1m5.6.1 Project›m ›4mOpen Voice›m Lets you load the parameters of a saved sound. ›4mSave Voice›m Lets you save the parameters of the actual sound in a file. ›4mSave 8SVX-5›m The actual sound is saved in IFF-8SVX (5 octave) format. ›4mSave 8SVX-1›m The actual sound is saved in IFF-8SVX (1 octave) format. ›4mSave Raw›m One octave of the sound is saved in raw format. ›4mChoose Octave›m Here you can select the octave, which is used for saving in 8SVX-1 or raw format. ›4mCreate Icons?›m If this menu item is checked then an icon is saved together with the data files. ›4mFMsy Chunk›m Controlles, whether a special FMsy Chunk is saved in the 8svx files. This chunks makes it possible to load the 8svx file with the 'Open Voice' menu item. But some programs (like OctaMED V5) can't handle this additional chunk. ›4mRelease Channels›m Frees the audio channels and the CIAA timer. If you want to go on with the program click on the "Ok" Gadget. ›4mNew›m Resets the program to the initial settings. ›4mAbout›m Displays some information of the program ›4mQuit›m You can leave the program with this menu item. ›1m5.6.2 Voice›m ›4mInit›m Resets the actual voice to the default settings. ›4mCopy›m Here you can copy the actual voice to another voice. ›1m5.6.3 Operator›m ›4mInit›m Resets the actual operator to the default settings. ›4mCopy›m Here you can copy the settings of the actual operator to one or more other operators. ›4mEG Copy›m Here you can copy the envelope settings of the actual operator to one or more other operators. ›4mFrequency›m Here you can double or halve the frequency of the actual operator. With the "Set" item you can clear and activate the "Freq" gadget of the operator field. ›1m5.6.4 Special›m ›4mAlgorithm›m Here are presets of 10 often used algorithms. ›4mChord›m FMsynth can calculate chords directly. This is usefull, because the Amiga has only four audio channels and a chord would eat at least 3 of them. You can choose among 7 different chords: - Major (major) - Minor (minor) - Dimished (dim) - Suspended 4 (sus 4) - Dominant Sept (7th) - Major Sept (maj 7) - Minor Sept (min 7) Please note that the calculation of a chord takes three till four times as long as the calculation of the normal sound. You can also build any other chord. If you choose this menu item, a dialog window appears. Enter the halftone numbers of the chord and the number of partials in the gadgets. For example the major chord has halftones 0, 4, 7 and the number of partials is 3. A simplier way to specify the chord is to play it on the keyboard, the notes are then put in the gadgets automatically. Hit the space key, if you have misplayed the chord and play it again. The base key for the chord is C2 (key 'Q') on the keyboard. You can put fractional values in the partial gadgets, so you can generate detuned sounds. The values are then between -0.2 and 0.2 typically. ›4mCalc Sound›m This item is equivalent to the "Calc" gadget and leads to the calculation of the sound. ›4mAutoCalc›m If this item is selected, then after each parameter change the sound is calculated new automatically. ›4mLoop›m Opens the loop window, in which you can set or clear the loop of your sound. For this purpose click at the start of the loop with the left mouse button and the right mouse button at the end of the loop. To clear the loop hit the "Off" gadget. To reset the loop to the initial setting (the setting when the loop window was opened) press the "Undo" gadget. Only one loop can be set for all five octaves. ›4mFourier›m Opens the "Fourier-Analysis" window, which performs a fourier analysis over the loop of your sound. This is for looking into the harmonics of the sound. ›4mPitch-EG›m This opens the "Pitch-EG" window. Here you can set the pitch envelope of your sound. The level 63 means increasing of the pitch by one octave. Level -32 stands for decreasing the pitch by one octave and level -64 means frequency null. To enable the Pitch-EG for an operator, you must set the PEG gadget to "ON". ›4mGraph. EG›m Opens the "Graphic EG" Window. Here you can edit the envelope of the actual Operator with the mouse. Click on one of the four knobs and move it. The scale is adjusted to the lenght of the actual sound, so that the left edge of the edit field corresponds to the begin of the sound and the right edge of the field corresponds to the end of the sound. If the rate scaling parameter is not on the default value of 64 then this correspondance is not given anymore. ›1m5.6.5 MIDI›m ›4mReceive›m Here you can set the Midi channel for receiving midi commands. ›4mVel sens›m Determines the velocity curve. ›4mTranspose›m With this menu item a transpose of midi notes in the range +/- 2 octaves is possible. ›1m5.7 Keys›m ›1m5.7.1 The Keyboard›m Octave 2 2 3 5 6 7 9 0 ' Q W E R T Z U I O P Ü + Octave 1 S D G H J L Ö # Y X C V B N M , . - The keyboard at the lower part of the screens shows, which keys are pressed actual (only for PAL able Amigas). ›1m5.7.2 Functionkeys›m Hit F1 - F5 to switch between the five voices. For voice #2 upto #5 you must first set up the buffer by activating the "Size" Gadget and specifying the desired length of the sound buffer. With F6 - F10 you determine, which octaves can be reached with the keyboard. The offset is displayed as a little mark below the keyboard picture. ›1m5.7.3 Space key›m At each time you can stop the sound output with the space key. ›1m5.8 ARexx›m FMsynth has an ARexx-Port called "FMSYNTH". It understands the following commands: openvoice Opens voice . Returns 5 on error. savevoice Saves the actual voice under the file name . Returns 5 on error. calcsound The sound is calculated. save8svx5 Saves the actual sound to file in 8SVX 5-Oktav format. RC=5 on error. save8svx1 [<#(1-5)>] Save the specified octave of the actual voice to file as 8SVX 1 octave file. Returns 5 on error. saveraw [<#(1-5)>] Saves the sound in raw format. voice [<#(1-5)>] Sets the specified voice and returns the old voice number. operator [<#(1-6)>] Sets the specified operator und returns the old operator number. openwindow [<#> <#>] Opens the window on the specified position. can be one of: f(ourier), l(oop), p(itcheg), g(raphiceg) noteon {<#(0-60)>} Presses the specified notes. noteoff {<#(0-60)>} Releases the specified notes. pause <#.#> Performs a pause with the specified length in seconds. quit Quits FMsynth. If you start FMsynth the rexx program 'startup.fmsy' is called. The keys Shift-F1 till Shift-F10 call the rexx programs sf1.fmsy till sf10.fmsy. The cursor keys call the rexx programs up.fmsy, down.fmsy, left.fmsy and right.fmsy. The included Rexx programs: left.fmsy, right.fmsy: Switches to the next/previous voice up.fmsy, down.fmsy: Switches to the next/previous operator sf1.fmsy: Plays a random melody sf2.fmsy: Plays a melody successively with all voices in the voice directory sf10.fmsy: Aborts all running Rexx commands startup.fmsy: Opens the Pitch-EG window ›1m5.9 MIDI›m FMsynth supports the following Midi commands: - Note on (with velocity) - Note off - Pitch bend (+/- 2 half tones) - Program change (0..4 for voice #1..#5) ›1m5 Some tips for sound programming›m Good sounds have a dynamic spectrum, that means its harmonics change continuous. There are two ways for achieving this. First with the envelope on the modulators and second with detuning. ›1m6 Compatibility›m If you want to use your sounds in other programs like Sonix or MED (© Teijo Kinnunnen) you should consider that the realtime parameters (release rate and LFO) have only affect if you play the sounds in FMsynth. They have no effect to the 8svx file. If you play a 8SVX 5-octave sound in MED, you will notice, that the sound quality is not as good, as if you play the sound directly in FMsynth. This reason for this is, that FMsynth uses a higher sampling rate for playing the sound on average. ›1m8 Support›m Thanx for support to following persons: - Stephan Fuhrmann - Ewan MacPherson - Jeff Harrington, - Bill Schottstaedt - Jürgen Zimmermann And last but not least Fridtjof Siebert for the great Amiga Oberon Compiler. ›1m9 The end›m If you have programmed good sounds, then please send them to me (in voice format not 8svx format!). The best sounds are included to the next release of FMsynth. ›3mMuch fun!›m