STOS MAESTRO INSTRUCTIONS
STOS MAESTRO INSTRUCTIONS ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Complete DOCS typed for Sewer Software by Paul. Brought to you by Sewer Software. Note : These DOCS are huge (over 100K) so make sure your printer is feeling pretty good and you've got a bit of spare time before attempting to print the entire docs. But then again, if you've got that much spare time, why don't you write us some docs and send them to the address in the scrolltext. CONTENTS -------- Introduction................................................... 1 Connecting the STOS maestro cartridge to an ST............... 1 Making a backup.............................................. 2 What is a sampler............................................ 3 Chapter 1: The sound sampler editor............................ 5 Loading and playing a sample................................. 5 The main screen.............................................. 6 Spectrum analysers and pointers......................... 6 Sample display area..................................... 7 Play and record area.................................... 7 The menu bar........................................... 10 Cut and paste....................................... 10 Disc options........................................ 11 FX menu............................................. 13 Special options..................................... 14 Creating your own welcome sample............................ 15 Chapter 2: Disco and Phaser programmes........................ 16 STOS Maestro Disco unit..................................... 16 STOS Phaser programme....................................... 17 Chapter 3: STOS Basic Interface............................... 17 Installing the new STOS Maestro extension file.............. 18 Maestro accessory........................................... 18 Accessory tutorial.......................................... 19 Drum machine................................................ 20 Chapter 4: STOS Maestro commands.............................. 21 Playback commands........................................... 21 Sampler control commands.................................... 29 Chapter 5: Creating your own sampler in STOS Basic............ 30 Initialisation.............................................. 30 Setting the sample speed.................................... 31 Recording a sample.......................................... 31 Playing a sample............................................ 32 through the loudspeaker................................ 32 Chapter 6: Technical appendix................................. 33 Adding sampled sounds to an existing STOS Basic programme... 35 Assembly language interface................................. 36 STOS Maestro Plus cartridge specifications.................. 38 INTRODUCTION ------------ Congratulations for buying STOS Maestro, an exciting new utility which, together with the STOS Compiler, continues Mandarin's commitment to support STOS Basic. STOS Maestro allows you to incorporate "real" sounds of professional quality - speech, music and special effects - into your STOS Basic programmes with the addition of only a few lines of code. Not only will it enhance the style and quality of your games and programmes but is also a fun package to use. The package is available in two formats: STOS Maestro and STOS Maestro Plus. The only difference is that the latter package includes the professionally-designed sampler cartridge. With the STOS Maestro Plus sampler cartridge you can record your sounds as easily as you would play a record or cassette and the whole world of sound is open to you. To get you started, the STOS Maestro package contains over 50 sampled sounds, along with the two discs - one containing the programmes, the other containing the samples. You will also find a registration card and details about the STOS Maestro Plus sampler cartridge and how to order it -if you don't already have one. Connecting the STOS maestro plus sampler cartridge to an ST ----------------------------------------------------------- If your STOS Maestro set up includes the sampler cartridge you must follow the steps below. They detail the proper use of the cartridge. 1 Before inserting or removing the cartridge turn the ST off. Otherwise the cartridge or even the computer could develop a fault. 2 Insert the cartridge into the ST's cartridge port (located on the left side of the system), taking care to ensure that the STOS Maestro sticker is facing up and facing towards you. 3 Now insert the STOS Maestro programmes disc into drive A and turn on the ST. External lead requirements -------------------------- The cartridge links the ST to the outside world of sound. You must now connect an external sound source to the cartridge. We have supplied a female phono port to which you must connect an external lead. For best results take the output from the headphones port of your external source (hi-fi, tape recorder, walkman, musical keyboard). This output can be controlled via the volume control. If you directly transfer the sound from, say, a CD by phono to phono then you'll probably find the sound output is too high and won't be controllable. If you don't have such a lead then any electronic shop will be able to supply you with one - if you're unsure, take the cartridge with you and explain your requirements to the shopkeeper. On the enclosed samples disc are 51 sampled sounds. Here's a quick list for your reference. ------------------------------------------------------------------------- | Synthesiser sounds Voices | | ------------------ ------ | | 5th string violin Bonus points | | Clockwork EEEEERRRRR... | | Easy synth Level | | Fullrank 1, 2, 3, 4, 5 | | Moonsynth Game over | | Orchestra H-e-l-p! | | Piano brass Get ready | | Pitch bend | | Spacy sound Sound effects | | Synth Bass ------------- | | Weird sound Boing | | Yeah sound Bounce | | Computer bleep | | Musical Instruments Electric door | | ------------------- Explosion | | Acoustic guitar Helicopter rotor blades | | Electric guitar Laugh | | Gong Laser gun | | Horn Machine gun | | Orchestral stab Metal bar sound | | Panpipe Pistol shot | | Piano Siren | | Saxophone Smashing | | Strings Spring effect | | Tubular bells Swoosh | | Zangy | ------------------------------------------------------------------------- Making a backup --------------- Stos Maestro is not copy-protected which means you can make backups or load it onto a hard drive if you have one. But please don't give copies to other people. STOS Maestro took many months to produce and it is only by continuing sales that we will able develop new extension discs and accessory programmes. The two STOS Maestro discs have been specially formatted so as to fit the extra music demos on. This means that side two of each disc cannot be copied using the standard Gem Desktop backup procedure. Don't worry about this because copying the discs as single format will backup the other files - it's only the DEMO.TOS files that can't be re-duplicated. If you have a special copying utility such as PROCOPY then you'll be able to back the discs up fully. The following procedure shows how you should backup the discs as single sided. 1 Slide the write protect tab of the original disc so that you can see through the hole. This will guard your disc against possible mistakes during copying. 2 Place a blank disc into drive A and format it as single sided 3 Now put the STOS Maestro programme disc into drive A and drag the drive A icon on to the drive B icon. 4 Follow the prompts displayed in the Gem dialogue boxes. 5 Repeat steps 1 to 4 for the STOS Maestro samples disc. You will now be left with two backup discs, but the DEMO.TOS files won't work. As you read through the manual and experiment with the samples, you may well create some new sounds which you really like. Keep a spare formatted disc to hand for storing your samples but don't you worry if you forget - the STOS Maestro editor has a built in disc formatter. What is a sampler? ------------------ You probably know that sampled sounds are extremely realistic - they are, in fact "real" sounds - and most ST games make a feature of the life-like music and sound effects they contain. But how does the sound get inside the computer in the first place? Here's the theory behind sampling - but don't worry, there's not much of it and it won't hurt a bit. If you know how sampling works you'll get much more out of the programme. If you really don't want to know what's going on you can memorise the following simple rule and skip ahead to Chapter 1: The higher the sampling rate the better the sound quality but the more memory it will take. Simply, sampling is the process of converting analogue sound into digital information, storing it in the computer and then converting it back to analogue sound again so we can hear it. The routines required to do this are known, naturally enough, as analogue-to-digital and digital-to-analogue converters or A-to-D and D-to-A for short. These terms you will come across whenever samplers are mentioned. STOS Maestro does all this conversion work for you automatically so you don't have to worry about it at all. But it will help in understand a little about the mechanics of the conversion process. If you look at sound waves on an oscilloscope you'll see that they consist of lots of smooth curves and continuously varying lines. Computers, as you probably know, aren't very good with curves. At their lowest level they can only store the digits 0 and 1 and when they draw a curve on the monitor you'll notice that it's not a continuous unbroken line but a series of steps, generally pixel size. So how can we represent a continuously varying value (sound waves) as numbers? THe solution is to take samples of the sound wave at regular intervals and store the reading as numbers. Let's put this little bit of theory into practice and see what happens when we sample a sine wave, the purest sound in the universe, it's a little like a plain flat whistle or flute sound and does not contain any "other noises" (the technical term for these is harmonics) which make a sound bright and raspy like brass, thin and reedy like an oboe or hollow like a clarinet (sine in Latin means "without"). If you feed a sine wave into an oscilloscope the display will appear something like this: -------------------------------------- | | | | | | | | | paste figure 1 here | | | | | | | | | -------------------------------------- It tells us that the entire sine wave lasted only four milliseconds (four thousandths of a second). Or to put it another way, 250 of these sine waves will occur every second. The actual pitch produced by this will be an out-of- tune B below middle C, but we'll use this value because it makes things simpler if we stick to round numbers. How many samples do we need to take to convert to digital form? Let's try taking a sample once every thousandth of second. We'd get something like this: -------------------------------------- | | | | | | | | | paste figure 2 here | | | | | | | | | -------------------------------------- It's a nice try but it's not a very good representation of a sine wave, is it? Let's increase the sample rate to four thousandths of second: -------------------------------------- | | | | | | | | | paste figure 3 here | | | | | | | | | -------------------------------------- That's a bit more like it, although it's not quite perfect. To avoid having to talk in terribly small numbers like so-may thousandths of a second, we use the term kiloHerz which is abbreviated to KHz. So we can say our first digital conversion was sampled at 1KHz and the second at 4KHz. The sampling rate in STOS Maestro can be varied from 5KHz to 32KHz. You can see that we were getting pretty close to a sine wave with a sample rate of 4KHz. At 32KHz our digital representation of the wave will be pretty close to the real thing. Great! So you could sample everything at 32KHz. Well you could but I've got some good news and bad news for you. As we've seen, the more samples taken in a given time, the more accurate the digital model will be and consequently the better the sound quality will be on playback, that's the good news. However the more samples you take in a given time, the more data you accumulate, the more memory you will require and the more jerkily your STOS sprites will move because so much processor time is being taken up. That's the bad news. You will find that some samples will sound fine at low sample rates but others will lose their brightness and "edge". Here's the bottom line: Sampling is a trade off between fidelity and memory used. But here's some good news. In order to convert digital data into sound, samplers use a conversion table and the quality of the sample depends upon the precision and accuracy of this table. Maestro incorporates a super quiet, high precision conversion table and you'll find that many samples san be recorded and played back at quite low sampling rates and still sound good. And here's even more good news - STOS Maestro employs a technique called oversampling which enables samples to be taken at low sample rates with greater than average accuracy. It also features a unique pack facility which lets you squeeze more samples into less memory. Oversampling and pack are fully explained in chapter 1. Okay, that's enough theory, now let's get sampling -------------------------------------------------------------------------- | 1: The Sound Sampler Editor | -------------------------------------------------------------------------- Quick Start Guide By now you'll want to see - and hear - what STOS Maestro can do so we'll run through a few basics to get you up and running. WARNING: If you are going to create samples of your own with STOS Maestro Plus sampler cartridge, make sure your Atari ST is switched off before plugging the cartridge into the cartridge port Insert your backup programme disc into the disc drive and turn on your computer. Double-click on the Drive A icon and a window will open. Double click on STOSM.PRG When the loading screen appears, press the 1 key on the ST's keyboard to load the sampler programme. Alternatively the sampler can be loaded by double-clicking on the Phaser programmes described later. Upon loading the display will change to a screen full of icons and a welcome sample will be played. Loading and playing a Sample ---------------------------- Remove the STOS Maestro programme disc and place the back-up sample disc in your drive. To load a sample you must first select the disc menu (we'll explain all about the various menus in a moment) so click on the disc icon on the second line from the bottom: DISC MENU: The Disc menu will roll down on the bottom line. Click on the leftmost icon and a Gem-type file selector box will appear. You will notice that the samples have been divided into four types and stored in four folders: Music, Sound, Synth and Voice. Open a folder by clicking on the folder name. Then load a sample by double- clicking on the sample name or by clicking on it to highlight it and then clicking on the OK box. A message will appear in the middle of the screen telling you which sample file the programme is loading then you will see a small blue and white visual representation of the sound to the left of the central display area. To hear the sample, left click on the Play icon: PLAY: To stop playback press the spacebar. Whenever the programme is sampling or playing back you can always halt the operation by pressing the spacebar. You'll notice that when you do this an orange bar appears in the display area marking the point at which you stopped playback. This helps pinpoint small sections of a sound within a larger sample and is useful during editing. Now that you know how to load and play samples, you can try out some of the other sounds on the disc. Let's now look at all the exciting features STOS Maestro has to offer. The main screen --------------- STOS Maestro only has one main screen so it's very easy to use. At first glance some of the icons may look strange but they will be explained in detail. You will soon master STOS Maestro and using it will quickly become second nature. The STOS Maestro screen is divided into four areas. -------------------------------------- | | | | | | | | | | | paste figure 4 here | | | | | | | | | | | -------------------------------------- Options are selected by moving the arrow around the screen with the mouse and left clicking on an icon. The right button has some special functions which we'll explain when we come to them. 1 Spectrum analysers, position and size displays Spectrum analysers: These are the two large boxes in the top left and right hand corners of the screen. They give a visual representation of the signal which is entering the Audio-In socket of the STOS Maestro Plus cartridge. They will work whenever you aren't doing anything which requires the programmes full attention such as sampling and playing back. Use the indicators as a guide to the volume level of the signal. They are calibrated in decibels (dB) which is how sound levels are measured. The more decibels, the louder the signal. When you're recording a sample, get as much signal into the programme as you can but don't turn the volume up so high that the bars hit the top of the windows and are truncated as this will distort the sample. Here's a useful tip: When you're recording, try to avoid trailing the lead which connects the sound source to the cartridge over your computer or alongside your monitor as it may pick up background noise. Position and size indicators: Underneath the spectrum analysers are the position indicators labeled POS1 and POS2. These show which area of memory you are currently working on and reflect the position of the two white dotted pointers in the sample display area below. In between the position indicators is the size indicator which tells you how much memory (in bytes) lies between the two pointers. This is very useful: Not only does it save you doing complicated sums but it can tell you exactly how large a sample is so you know how much memory it will take up in your STOS programmes. The total amount of memory will depend on the size of your ST's ram. On a 1040 ST you will have a little less than 700k to play with. We'll look at this more in detail now. 2 Sample display area This gives you a visual representation of the sample(s) in memory. Upon loading the programme, this area will show all the free memory - and it will be completely empty. The two white dotted lines at either end of the display area are the pointers. The left mouse button controls the left pointer and the right mouse button controls the right pointer. Using the mouse, position the arrow anywhere in the display area and press the left mouse button. The pointer will move to the arrow position. Move the arrow to the right and press the right button and the right pointer will do likewise. Note that the position and size indicators change as you move the pointers. Also note that the left pointer cannot be further right than the right pointer, and vice versa. In addition you can click and drag the pointers around the display area by keeping the left or right button pressed and moving the mouse. The area between the pointers is the current work area and all recording, playing and editing functions take place between these pointers. If you want to hear just a part of a sample, isolate it with the pointers. Just below the sample display area is the memory bar indicator. This indicates how much of the available memory is actually in view in the display area. It also shows where it lies in relation to the whole of the memory. This will become clear when we look at the magnify and de-magnify facilities. At the moment the bar runs the full width of the display area indicating that the whole of the available memory is on view. 3 The Play and Record area This consists of the two rows of icons below the sample display area. Let's look at them one by one. |<- Moves the left pointer to the extreme left of the sample display area. <- Moves the left pointer to the left of the display by one pixel. If it is already at the extreme left of the display area you won't be able to move it any further. Although the pointer moves one pixel at a time, the actual number of bytes it steps will vary according to the amount of memory represented by the display area. On a 1040 ST, if the whole of available memory is shown in the display area a one-pixel movement will step on by about 2550 bytes. -> Moves the left pointer to the right by one pixel. Using these step functions you can home in accurately on a particular part of a sample. The right pointer can be controlled with similar icons located at the far right of this line of icons. Magnify: This "blows-up" the current work area (that part of memory between the two pointers) to fill the sample display area. Let's try an experiment. Load the BONUSPNT.SAM file in the VOICE folder. Move the right pointer a little to the right of the end of the sample (until the size indicator reads between 15000 and 16000) and click on the Play icon to check that the whole sample is between the pointers. Now click on Magnify. That's more informative, isn't it. Now move the right pointer so that it's just to the left of the last little "blip" in the display area. Click on play. You should now have lost the "s" off "points". It should be easy to see where "Bonus" ends and "Points" begins. Move the right pointer further left until you only hear "Bonus" when you click on Play. Now try something a bit more tricky. See if you can move the right pointer so that the "Bonus" become "Bone". Fun isn't it? You can magnify an area, define another area and magnify that and so on down to a maximum magnification level of about 320 bytes. At this level, the encapsulated sample will be so short it will be little more than a click. You cannot magnify more than 15 times. However if you are working on a specific area of a sample, you will probably find you reach the maximum 320 bytes level after only four or five magnifications. Watch the memory bar indicator as you magnify. It shows exactly where the sample sits in relation to the total memory. De-Magnify: Reverses the magnification process and steps backwards through the various stages of magnification which have been made. Watch the memory bar indicator. Thru: Clicking here turns the mouse pointer from an arrow into a busy bee. Any sound source fed into the stos Maestro Plus sampler cartridge will now sound through your monitor as it plays. The quality of the sounds is determined by the record sample rate (second row, extreme right) - see later). This allows you to check the quality of a sound before recording it. Programme: Used to programme the function keys with samples. Click on the Wipe icon to clear memory and then load the GAMEOVER.SAM sample. Magnify it and use the right pointer to isolate "Game" - its not where you'll probably look for it first. Left click on Programme and `the display area will prompt you to press a function key. Press F1. Right click on Programme, press F1 and you will hear "Game". Unlike normal playback mode you can press the function key before the sample has finished playing to create the famous "N- N-N-N-N-Nineteen" effect - or "G-G-G-Game" in this case. Press the spacebar to escape from playback mode. Now isolator "Over" and store it in F2. If you accidentally select Programme and don't wish to set a function key then you can quit by pressing any other key. Programme doesn't store the actual samples, `rather it keeps a note of the positions of the left and right pointers. We can demonstrate this easily: Click on the Full icon (the very next on on our list) and load GETREADY.SAM Right click on Programme and press F1 and F2. Full: A useful control which you have already used. It restores the pointers to the start and end of memory. Wipe: This wipes (empties) the whole of memory, not just the section between the pointers (use the Cut function which you'll find in the Edit Menu). its non reversible and you get a warning prompt before it proceeds. It resets the pointers to the start and end of available memory. Play (and Play Menu): Left clicking here plays the sample between the two pointers. Right clicking will roll down the Play menu on the bottom line. Load GETREADY.SAM (you may have to click on the disc icon to get the Disc Menu back). Magnify the sample and move the right pointer pretty close the end of the sample. Now for some fun: Right click on Play. Backwards Loop: Play the sample in reverse and loops its. Press spacebar to stop. Forwards Loop: Plays the sample forwards and loops it. Forwards/Backwards Loop: Plays the sample forwards then backwards also in a loop. Backwards: Plays the sample backwards once. Forwards: This is the default Play button and plays the sample forwards. Notice that as you select each of the icons they appear in the second line in place of the Play icon. This allows you to use any of these types of playback during editing without having to call up the Play menu each time. Playback Rate: If you recall the sampling theory from the introduction, you'll remember that the more samples we take in a given time, the better the quality. Its probably occurred to you that you can sample at one rate and play back at another. If you haven't tried this yet lets try it now. The principle involved is rather like speeding up or slowing down an audio recording using a record deck (playing 45s and 33rpm) or a reel-to-reel recorder. You probably know that if you slow down a recording the pitch becomes lower and speeding it up produces Pinky and Perky voices. Its the same with sampling. If you increase the playback speed of a sample -the rate at which the digital information is passed through the D-to A converter - the pitch becomes higher, and vice versa. This is easy to do on a computer. This icon is used to set the playback speed which can be fully varied from 5KHz to 32 KHz. Click on the left and right arrows to adjust the rate and check the result by playing the sample. If you double the playback speed, the pitch of the sample will double. In musical terms it increases by an octave. If you right click on this icon it will change the playback rate to that of the record rate. Playback Plug: This connects the playback routine to the Trigger Level circuitry. Trigger Level: This sets the Trigger Level in decibels (we mentioned dBs briefly in relation to the spectrum analysers). When plugged into the Playback or Record section of the programme it holds up the function until it receives an input signal equal to or high than the dB level. When plugged into a section and activated, the screen will change colour while waiting for a signal of the correct level. You can escape from this, as usual, by pressing the spacebar, Check the dB level of incoming signals on the spectrum analysers. When recording, the Trigger Level can be useful if you want to record a sound with silence in front of it. Record Plug: This connects the Record routine to the Trigger Level circuitry. Record: Click here to begin recording will terminate when the current work area is full Press the spacebar to terminate earlier. Note: Unless the Trigger is "plugged in". STOS Maestro will begin sampling as soon as Record is pressed even if there is no sound at the input. Oversampling: In order to help you make better samples. STOS Maestro uses a process known as Over-sampling. Its completely automatic and you don't e en have to switch it in and out. When STOS Maestro is sampling at 32khz it's running pretty close to flat out. At lower rates, however, it has a little processing power to spare and at sampling rates of 19 khz and less it automatically goes into Oversampling mode. Instead of sampling at the set rate it takes as many samples as it can during the sampling time and the works out an average figure. So if you set the sample rate of 10khz and Maestro oversampled at 50 khz it would take five samples instead of one average them out. This will provide a more accurate representation of the sound during that period of time than just one sample. Record Rate: This determines the rate in KHz at which the recording is samples. It works in exactly the same way as the playback rate icon. If you have the STOS Maestro Plus sampler sampler cartridge, try recording the same sample at different rates and see how much memory each one uses, then compare the quality. 4 The Menu Bar The third line of icons is used to call up various menus onto the bottom line. You've already used the Play menu and part of the Disc menu. Cut & Paste Menu: Rolls the Cut & Paste menu onto the bottom line. It contains a number of tools for manipulating the samples. Load a sample and try out the various editing procedures. Play cut buffer: Click here to play the contents of the cut butter. If you haven't Cut anything yet it will have no effect. Right clicking on this button allows you to edit any sample currently in the cut buffer. All operations in the current work area will only affect the cut buffer data. When you need to return to the full memory sample, simply right click on this icon again. Cut: Cuts the area between the two pointers and stores it in the cut buffer. You can't cut more than 50k of sample (check the size in the size indicator window) and if you try, a dialogue window will appear advising you of the fact. If you haven't done so already, load a sample. Use the right pointer to isolate it, then magnify it. Now click on Cut and sample will vanish from the display area. Clicking on Play will have no effect but if you click on Plays cut buffer you'll hear the sample. Copy: This is similar to Cut but it copies the area into the cut buffer leaving the original intact. Again there is a 50k limit on the size of the area you can copy. Splice: This cuts out the area between the two pointers and stores it in the cut buffer. Then it closes up the gap - useful for swapping samples around memory. Paste: This copies the contents of the cut buffer into memory starting at the position of the left pointer. This overwrites any data which may already be there but the buffer remains intact. If the area between the two pointers is small than the contents of the cut buffer, the contents of the buffer will not be copied. Insert: This is similar to paste but instead of overwriting memory it makes a space for the buffer contents by moving any data to the right of the insertion point (the position of the left pointer) further to the right. It will always insert the full contents of the buffer-any data at the end of memory will be lost the distance between the left and right pointers dictates how much of the buffer will be inserted. Mix: This operation too, begins at the position of the left pointer. It mixes the contents of the cut buffer with the data which is already there. This can produce some stunning effects. For example, copy a complete sample (try one of the voices) into the cut buffer. Move the left pointer a little to the right and hit Mix. Move it further to the right and Mix again. Make sure the right pointer is sufficiently far right so it does not truncate the Mix. Depending upon the offset, this will produce reverb, delay and variations on the N-N-N-Nineteen effect - or a combination of all three. Delete: This simply erases the area between the two pointers. Chop: Erases the sample outside the two pointers and moves the sample (between the pointers) to the start of free memory. Flip: This reverses the sample between the two pointers. Playing it will now have the same effect as clicking on the Play backwards icon in the Play Menu. Disc Menu: Rolls down the Disc menu on the bottom line which is where all file handling takes place. The icons below are available after you click on the icon. Load Sample: Produces a Gem file selector box which allows you to load a file of sample data at the position of the left pointer, allowing you to store several different samples in memory at the same time. If the memory area between the left and right pointers is small than the sample then only this amount will be loaded, so make sure you set them up or use Wipe beforehand. On first access, the routine will look for files with the extension SAM. We recommend you add this extension to all your sample files - but its not compulsory. To search for other extensions, click on the path name so that the txt cursor appears after SAM. Backspace three times to delete SAM and type * don't press Return because a bug in Gem will send you back to the main screen.. Instead, click on the top of the file selector box where it says *.SAM. The directory will now show all files and folders regardless of their extension. A quick tip is to click on the path name press Escape and then click on the file selector box top - this default to drive A and uses *.* search specification. It's interesting to note that the sample files created by most samplers for the Atari ST produce the same kind of data. You will be able to load most samples made with other samplers in Maestro - and vice versa. Even more interesting is the possibility of grabbing samples from commercial games. Files of sample data may have the same extension SAM, SPL, SNG, SND or something else. But beware: Trying to access some protected discs may cause the STOS Maestro programme lock up. You may have discovered that you can load any file into STOS Maestro and it will treat is as sample data. If it's not a sample it will sound terrible - probably like a screech. Save sample: This does not prompt for a filename but saves the area between the pointers with the same name as the last filename used. It will be the name of the last sample loaded or saved, otherwise it will use the default SAMPLE.SAM. This is useful as it allows you to work on a sample and save it quickly without having to type in a filename. If the file already exist on the disc, a dialogue box will appear requesting permission to update the file. A unique STOS Maestro feature means that the playback rate is saved to disc along with the sample data. You've probably noticed the playback rate change when loading various samples. No longer will you have to determine the sample speed by experimentation. However when loading samples from games or created on other samplers you'll have to find the correct playback rate by trial and error. Save sample as: Click here to save the sample between the two pointers. This option allows you to enter a new filename just as you would with any Gem file selector. Insert sample: This works in a similar way to the insert function in the Cut & Paste menu. It reads a file of sample data from disc and inserts it at the left pointer position and moves the sample in memory to the right to make room for it. If you want to combine samples use mix in the Cut & Paste menu. Drive: Prompts for the current drive. When prompted press a letter from A to H. The default depends on the drive from which you booted STOS Maestro. Disc info: Gives information about the current driveL Identifier, total disc space and total free space. Delete File: When the file selector appears, click on the file you wish to delete and then click on OK or just double click on the file. After selecting a file there is a confirmation prompt so that you can have second thoughts about this action. Rename: Use this to rename a file. It can be very useful if you've forgotten to give a file an extension or if you've a list of samples such as WOW1, WOW2, WOW3,...WOW16. Click here and the file selector will appear. Select the file you wish to rename by double clicking on it or by clicking on it once to highlight it and then clicking on OK. A new file selector box will appear with the text cursor on the selection heading. Enter a new filename and press return or click on OK and the file will be renamed. The routine will not allow you to rename a file with a name that already exists. Format: Allow you to format a disc as single or double sided without leaving STOS Maestro. This produces a warning prompt as formatting a disc will erase all the data on it. Get past this and you are asked to select Drive A or B and then the number of sides you want to format. New Folder: Folders are very useful for sorting your samples into types. You will have noticed that the samples on the data disc are stored in four folders. Click here and enter the name of the new folder - eight letters maximum. To escape from this option, press the 'escape' key - a null entry will also terminate the procedure. FX: Rolls down the effects menu onto the bottom line. This reveals the four icons below Echo: An echo is produced by repeating the original signal after a short delay. Although the delay is short you will be able to hear the two (or more) echoes quite distinctly. A characteristic of natural echo is that subsequent echoes decrease in volume. If you click on Echo with the left button, STOS Maestro will automatically add echo to the sample between the pointers. This is irreversible so a dialogue box pops up to warn you. You can repeatedly add more and more echo to a sample for increasingly pronounced effects. As echo effectively extends the length of a sample you may have to move the right pointer further right to accommodate all the repeats. Clicking on echo with the right button adds echo to any sound being fed in from the STOS Maestro sampler cartridge in real time. Reverb: Reverberation, to give it its full title, is produced by thousands of extremely short echoes following hot on the heels of each other. They are so short, in fact, that you cannot tell when one ends and another begins - they blur together and seem to become an extension of the original sound. Reverb produces a ringing, cavernous effect. Try it with voice samples and use it on dripping sounds. If your game is set underground you will need reverb for atmosphere. Do a left click to add reverb to the sample between the pointers and right click to add reverb in real time to a sound being played through the STOS Maestro Plus sampler cartridge. Hall: The type and quality of reverb will vary according to the environment. Compare the reverb qualities of a concert hall with your bathroom, for example. Hall reverb is more pronounced than Maestro's standard reverb - a little slower, perhaps. Left click to apply it to the sample between the pointers, right click to apply it to a sound coming in through the sampler cartridge. Room: This is the third type of reverb effect which STOS Maestro has to offer and it's a little shorter than the others. As usual, left click to add echo between the pointers, right click for the sampler cartridge. Delay FX -------- You can have a lot of fun and create lots of fascinating sounds with reverb and echo. Here are a few suggestions: For a well-pronounced effect, give a sample 3,4, or more doses of echo or reverb Add both echo and reverb to a sample Flip a sample, apply an effect and then flip it back. Move the left pointer slightly before applying subsequent effects. Use mix to create combinations of echo and reverb. Split a sample (insert blank memory) and add an effect only to the middle of it. Don't forget to Magnify the sample in order to home in on selected areas. Amplify: Amplifies the sample between the pointers to make it louder. This can be very useful if you can't record your favourite sound at a high enough volume. You can also apply it to a sample if it has undergone a lot of editing. You will probably have noticed by now that lots of manipulation can reduce the effective volume of the sample. But use Amplify sparingly as it will increase the background noise as well. If you continuously amplify a sample it will soon distort. Pack: This is another unique feature to help you record even better samples. It packs the data between the pointers, effectively halving the size of the sample and saving lots of memory. It also means that your STOS Basic games won't slow down as much when samples are playing. In order to hear a packed sample at its original pitch you only need to play it at half its sampled rate. For example, you could record a sound at 32KHz, Pack it twice and play it back at 8KHz. The quality will be better than if you recorded at 8KHz because the pack routine takes an average reading of the data (like Oversampling). Fade In: Creates a Fade In on the sample between the pointers. The wider apart the pointers, the slower the fade. You'll notice that this drastically reduces the size of the sample in the display area. Fade Out: Creates a Fade Out on the sample between the pointers. The comments relating to Fade In apply here, too. Soft: This is the opposite of amplify and reduces the volume of the sample between the pointers, too much softening and you will probably notice an increase in noise. While you may be able to amplify a softened sample back to its original volume without too much signal deterioration, softening an amplified sample will bring with some of the noise created by Amplify. Filt: Passes the sample between the pointers through a low pass filter. This passes the low frequencies and filters out the high ones. Noise tends to reside in the high frequencies so use this to help reduce the noise level on very noisy samples. It also "softens" a sound. Specials: This rolls down another menu containing more display options. About box: Gives you information about STOS Maestro - the version number and the credits. Filled Waveform: This option and the next two determine how samples are displayed in the sample display area. This is the default option and shows the waveform of the sample with the positive (upper) and negative (lower) cycles filled in white and blue. If you have a musical instrument which can produce sine waves (see the introduction), plug it into the cartridge, sample a sine wave and magnify it. This option will clearly show the sine wave shape in the display area. Synthesisers often use a square wave to produce a clarinet sound. If you can analyse either of these you will see the squarish waveforms (a clarinet will produce waves which are not quite square due to additional harmonics). Brass and string sounds are often constructed from sawtooth waves (sometimes called ramp waves) and make for interesting analysis, too. Envelope: This displays the volume envelope of the sample - in other words it shows how loud it is, rather like the spectrum analysers. You will see that the positive and negative cycles are identical (as if they had been reflected along the central line) as you can't really have a negative volume. Waveform Outline: This is similar to the Filled Waveform option but it shows the waveform of the sample as an outline, just like you'd see it on an oscilloscope. It's often easier to see the exact shape of a waveform when displayed this way. Oscilloscope: The STOS oscilloscope lets you see the shape of the sounds which are entering the sampler cartridge. Most sounds in everyday life, particularly music and the human voice, are very complex indeed and their waveforms are very complex, too. Try it for yourself. If you can produce sine waves you'll be able to see them quite clearly. Low notes produce "longer" waves while higher notes bunch the waves closer together. You will even be able to spot sine wave characteristics in the spectrum analysers. Exit to the main screen by pressing the spacebar. Exit: Click here to exit back to the Gem Desktop. If you have edited the sample in memory, it will give you the option of saving before quitting. Creating your own welcome sample -------------------------------- As you enter STOS Maestro you are welcomed by a voice sample. You can customise your own welcome sample using the following easy procedure: 1 Create a sample using Record at around 10KHz 2 Save the sample from the disc menu under the filename WELCOME.SAM, making sure it's in the same folder from which you run MAESTRO.PRG Every time you now load STOS Maestro it will pick up your sample and play it. If this becomes annoying then just remove the WELCOME.SAM file from the folder. Now you know everything there is to know about STOS Maestro - Have fun! -------------------------------------------------------------------------- | 2: Disco, Phaser and DEMOS | -------------------------------------------------------------------------- STOS Maestro disco unit The STOS Maestro Disco unit is a real- time digital delay programme. You can load it directly from disc by double -clicking on DISCO.PRG or from the STOS loading screen by selecting the 2 key on your Atari ST. You will of course need the STOS sampler cartridge to use this programme. Make sure your ST is switched off before plugging the cartridge into the ST's cartridge port. Plug a sound source into the cartridge. To hear exactly what Disco does, it will help if you have control over the duration of the sound - a microphone or musical keyboard is ideal. If you intend to use music, then compose a piece which is fairly simple. Once you hear what's going on you can try it out on the 1812 Overture! Disco is a digital echo machine but unlike the echo function in STOS Maestro it only plays back a single echo at a time. However the delay time is fully under your control and can be in the range 0 -9.99 seconds. Disco plays the original sound as soon as it enters the cartridge and then it plays it again after the delay period. It's a continuous process so the delayed sound will be heard at the same time as the original sound - trailing behind a little. This can produce some fascinating overlapping effects. Controlling Disco ----------------- Disco is controlled with the function keys which are mainly used to alter the delay: ------------------------------------------------------------------------- | Function key | Effect | |-------------------------------------------------------------------------| | F1 | Increased by 10 milliseconds (100th of a second) | | F2 | Decreased by 10 milliseconds | | F3 | Increased by 100 milliseconds (10th of a second) | | F4 | Decreased by 100 milliseconds | | F5 | Increased by 1 second | | F6 | Decreased by 1 second | | F7 - F9 | Pauses the display when held down | | F10 | Press twice to reset and default back to Desktop | ------------------------------------------------------------------------- You can change the delay time as music is playing through the unit. Very short delays will produce a chorus effect which "thickens" the sound or longer delay times sound very effective if you can match the delay setting to the beat of the music. Alternatively, offsetting the delay time-a little faster or slower than the beat-can produce interesting effects, too, as the music and the repeat move out of sync with each other. Try it with any music of a rhythmic nature. It works extremely well with electronic music and many of Jean Michel Jarre's tunes have suffered at the hands of (or been enhanced by?) the Disco programme. The central area of the screen produces a graphic display (spectrum analyzer) of the sound entering the cartridge port. Plug in some music, turn the lights down, pump up the volume, watch and relax. The STOS Phaser Program The STOS Phaser is a small utility which we have included on the program disc as an extra. Although it's a simple program it can produce some fascinating effects. Load STOS Phaser directly by double-clicking on the PHASER.TOS file or by loading it via STOSM.PRG. Warning in order to use the phaser you require the STOS Maestro sampler cartridge. Make sure your ST is switched off before plugging the hardware into your ST's cartridge port. Phasing is a very popular effect especially in electronic music, producing a sort of sweeping effect. Play some music and listen for yourself. If you want to know what a phaser actually does to a sound and how it produces it's effects you need to know a little about waveforms. A detailed explanation is beyond the scope of this manual and it's not strictly necessary-you can use the programme without knowing the theory behind it. However, if you want a visual analogy, think of a zebra walking behind a black garden fence- sometimes you see different pits appearing and disappearing in a cyclic fashion. A phaser does a similar kind of thing to the harmonics of a sound. Harmonics are the particles of a sound which make it bright, hollow brassy and so on. As it sweep through the harmonics, the tone of the sound Changes. You will hear the effects of the phaser beat with sounds which contain lots of harmonics such as brass and strings. Flutes, on the other hand, don't contain many harmonies so there is less for the phaser to sweep through. Controlling The Phaser The phaser is very easy to control - like the disco it only uses the function keys. f1 Increase the phaser key by one f2 Decrease the phaser key by one The phaser speed determines how quickly the can be very tranquil and relaxing. At a faster speeds it can be quite hectic. f3 Increase the phaser depth by one f4 Decrease the phaser depth by one Phaser depth is the degree or the amount of sweep. A low or shallow setting can produce a very subtle effect. At greater depths it really rakes through those harmonies. f5 Select phaser sweep- SWP f6 Select phaser forward sweep- FDW f7 Select phaser backward sweep- BWD These keys determine the direction of the sweep:f5 (up and down), f6 (down only ) and f7 (up only). f8 Turn phaser off f9 Turn phaser on f10 Reset computer and default to the Gem Desktop (must be pressed twice to work) Try out the Phaser by playing some of your favourite pieces of music through it- using a fairly low depth and slow speed for a subtle effect, then increase both gradually to taste. The DEMO. TOS Files If one of your Atari floppy disc drives is double sided then you will be able to run these demos. Simply double click on a DEMO.TOS icon to play a tune. The two STOS Maestro discs have a special dual format- single drive owners can still use the discs but won't be able to access the demos. The programme run from side one then load up data from side two of each disc. Turn up the volume for an example of what can be achieved with STOS Maestro. 3:STOS MAESTRO BASIC INTERFACE Installing The STOS Basic Extension File Before you can access the sampler from Basic , you first need to install the new commands onto your current STOS language disc. Load up STOS Basic, insert the STOS Maestro programmes disc and enter the following command: LOAD "\BASIC \INSTALL.BAS" Once this has loaded, you should place a copy of your STOS language disc into drive A and type: run The new Maestro extension can now be installed onto all your copies of STOS Basic by pressing the E key. Select a STOS folder to update using the resulting file selector. Once inside a STOS folder press return- the new extension file will now be saved into the STOS folder. Since the installation holds all the extension commands in a STOS memory bank, no disc swapping is required. If you own a copy of the STOS compiler, you should now place your back-up of the compiler disc into drive A and press C. The appropriate compiler extension can now be installed into the COMPILER folders in the same manner as above. You can add sampled sounds to your Basic programmes and compile them in the normal way. The Maestro Accessory A special memory bank system is used by the STOS Basic extension to hold samples. THis makes loading in samples and playing them child's play. To make life as easy as possible we've devised a powerful accessory capable of generating sample banks from pre-recorded sample files. This combines up to 32 separate samples in a single memory bank, which can then be incorporated directly into your STOS Basic programs. You can enter it from the Maestro disk with a line like : accload "\basic\maestro" Here is a breakdown of the various menu options. STOS MENU About Bank Creator : This displays a copyright message. Click on the left mouse button to return to the main menu screen. Quit : Exits back to your current program. Warning! Don't call this option without saving your sample bank first! Quit & Grab : Grabs the current samples installed into the ST's memory, and places them into bank 5 of your current program. This option is only available if Maestro has been loaded as an accessory. DISK MENU : The disk menu allows you to load and save samples onto the disk. Load SAMPLE.??? : Loads a sample into bank number 5. These samples are those which have been directly imported from the STOS Maestro Plus cartridge (or compatible). The Maestro accessory can be use with the output of most sound samplers currently available for the Atari ST. This allows you to enter samples from many commercial games. Look for files with extensions like .SAM, .SMP or .SND. Feel free to experiment with this option as much as you like. The worst thing that can happen in practice is that the sample will not load. Load SAMPLE.MBK : This enters a memory bank previously created with the Maestro accessory. Load SAMPLE FOLDER : Loads an entire folder full of samples into memory. This option is especially useful when using the disk, as it allows you to install all of a folder's contents into a single memory bank in one smooth operation. Save SAMPLE.MBK : Saves all the samples currently installed into memory. This data can be subsequently loaded for use by the SAMPLAY and SAMMUSIC commands. SAMPLE MENU Delete Sample : Deletes one of the 32 possible samples from the ST's memory. The sample to be erased is indicated using the number from 1 to 32. Rename : Changes the name of one of the samples currently installed into the memory. Play Sample : Plays one of the samples which has been loaded into the accessory. Before the sample is played, you will be requested for the speed. This should be input as a number from 5 to 22. MAESTRO TUTORIAL We'll now show you how the various features of the Maestro accessory can be actually used. Start off by loading the accessory from the Maestro disk with : dir$="\basic" accnew:accload "maestro" First enter the accessory from the Help menu by typing <HELP><F1>. Then place the samples disk into drive A and select the LOAD SAMPLE.??? option from the disk menu. This presents you with a standard STOS file selector. Now load a sample by clicking on the SOUND folder, and choosing the file EXPLSION.SAM. You can play this sample from the Sample menu using a speed setting of around 10. This process can now be repeated for the samples LAZERGUN and PISTOL. Insert a blank disk into drive A and save these samples with the SAVE.MBK option from the disk menu. Use the filename EFFECTS.MBK for this purpose. Now exit to the STOS Basic editor with Quit and type : load "effects.mbk":rem Load samples into bank 5 These samples can be played from STOS Basic using the lines : click off:sound init:rem initialise sound chip samplay 1:rem Play Explosion samplay 2:rem Laser samplay 3:rem Gunshot We'll now show you how you can load an entire folder full of samples in exactly the same way. Call up Maestro using <HELP><F1>, and select the Load Folder option from the Disk Menu. When the file selector appears, access the VOICES folder in the normal way. Now move the mouse pointer over the filename box and enter the text : SAM The contents of the voices folder will now be automatically loaded into the ST's memory. You can then save the data under the filename of VOICES.MBK by placing a blank disk into drive A and calling the SAVE.MBK option. Finally choose the Quit option to re-enter STOS Basic then type in the following program. load "voices.mbk" 10 click off:sound init:samspeed auto 20 for i=1 to 11 30 samplay i 40 wait key 50 next i This pages through each of the 11 voices stores in memory bank number 5. THE DRUM MACHINE In order to illustrate the possible applications of this package, we have included a simple Drum Machine on the Maestro disk. This can be loaded using the line : load "\basic\drums.bas" When you run the program, you are presented with a picture of a drummer and his dog. The action of the various instruments can be controlled through the keyboard numbers from one to six. As you can see, some of these instruments are fairly unusual! Another feature is the R option which allows you to record long sequences of drum beats into the ST's memory. This performance can be interrupted at any time using the space-bar. Your composition can now be replayed by pressing P. Notice how the program has cleverly preserved the exact timing of your key presses. The Drum Machine was written entirely in STOS Basic. You can therefore list the program to the screen or the printer in the normal way. Interestingly enough, the actual program is remarkably simple. The samples for the drums are held in bank number 5, and the recording itself is stored in bank 6. Each individual sound corresponds to a single entry in bank 6, with the gaps in your music being represented by a Chr$(0) Here are a few ideas for possible extensions : 1. Replace the drum samples in bank 5 with some of your own. Remember that these samples should first be converted into the correct format using the Maestro accessory. 2. Introduce the ability to change the pitch of a note during play. This could be generated by assigning a row of keys to particular notes. You could then simply replace the SAMPLAY instructions with the appropriate SAMMUSIC commands. 3. Extend the number of available instruments. It's possible to add up to 32 different instruments to the drum machine. 4. Add the ability to load and save sequences on the disk. This would involve saving bank 6 using the BSAVE command from STOS Basic. 5. Allow the user to speed up or slow down drum patterns he has recorded. -------------------------------------------------------------------------- | 4 : STOS MAESTRO COMMANDS | -------------------------------------------------------------------------- STOS Maestro instructions The STOS Maestro extension includes a number of powerful instructions which allow you to incorporate samples sounds directly into your own STOS Basic programs. A demonstration of how these commands are used can be found in the programs PLAYER.BAS and DRUMS.BAS on the STOS Maestro program disk. The Playback Commands These commands are used to play back a previously generated sound sample within the STOS Basic system. Any programs which use these commands can run independently of the STOS Maestro Plus cartridge. SOUND INIT (Initialise the ST's sound chip) The SOUND INIT command kills any existing sounds and prepares the sound chip for use by the sampler instructions. It is normally called at the start of a program like so. 10 click off:rem switch off keyboard clicks 20 sound init:rem initialise sound chip The keyboard click will interfere with the sampler system. It is therefore necessary to turn of the keyboard click when using the sampler. SAMPLAY (play a sample from the current memory bank) SAMPLAY plays one of the 32 possible samples stored in the current memory bank (normally bank 5). N is the number of the sample, ranging from 1 to 32. Example: load "effects.mbk" click off:sound init:samspeed auto samplay 1:rem plays an explosion samplay 2:rem laser beam samplay 3:rem gun This example uses the EFFECTS.MBK file created in the tutorial on the STOS Maestro accessory. These samples are played back using the interrupts and are completely independent of the rest of the STOS system. This means that you can happily add sound effects to an arcade game such as Zoltar, without slowing down any of the action. Note that only a single sample can be played at any one time. So if you start a new sample before the existing one has completed, the old sample will immediately be replaced. It's possible to exploit this feature to produce a number of intriguing effects. Take the following example : load "\voices.mbk" 10 click off:sound init:samspeed auto 20 for i=1 to 5 30 samplay i:wait 5 40 next i This generates a noticeable stutter in the sampled voice. VOICES.MBK is an example file created in the section on the Maestro accessory. It contains the entire contents of the VOICE folder on the STOS disk. One minor limitation of the SAMPLAY instruction is that it is unable to work alongside any of the STOS music functions. If your program uses music, this should be suspended with MUSIC FREEZE before a sample is played, then restarted after the sample has been completed. SAMSTOP (Stop the current sample) The SAMSTOP command terminates all current sampling operations. Example: reserve as data 6,12000 bload"A:\sound\explsion.sam":rem load a sample from the samples folder 10 click off:sound init:samspeed auto 20 samraw start(6),start(6)+length(^):rem plays a sample 30 wait key:samstop SAMSPEED (Set the sampling rate) SAMSPEED n SAmspeed enters the rate which will be used for any subsequent sampler commands. N can range between 5 and 22KHz, with 10 KHz as the default. Example: load "voices.mbk":rem created with MAESTRO.ACB 10 click off:sound init 20 for i=5 to 22 30 samspeed i:samplay 1:wait 20 40 next i Incidentally, while the STOS Maestro Plus cartridge is capable of working at speeds of up to 32 KHZ, you are currently restricted to a maximum of 22 KHz in your STOS Basic programs. In order to play 32 KHz samples from STOS Basic you will need to use MAESTRO.PRG and call the Pack option from the FX Menu. The compressed sample can then be played at a speed of 16Khz from STOS BAsic. It's not 32KHz but it's the only alternative - STOS is too busy handling sprites and all the other interrupts to play back samples at a rate faster than 22 KHz. SAMSPEED AUTO (Enter automatic sampling mode) SAMSPEED AUTO automatically selects the appropriate sample speed for the current sample. The automatic sampling mode expects the speed of the sample to be encoded into the current memory bank during the recording process. This information is included with all samples produced using the STOS Maestro sampler programme. However if you try to use this option in conjunction with samples created from another source, such as the SAMRECORD function, a syntax error will be generated. Also note that automatic is effectively canceled the next time you change the sampling rate with SAMSPEED. Example: load"voices.mbk":rem Load some sound effects 10 click off:sound init 20 print"Default speed":samplay 1 30 print"Hit a key to continue":wait key 40 samspeed auto:rem Set appropriate speed automatically 50 print"Recorded speed":samplay 1 60 wait key SAMSPEED MANUAL (Exit automatic sampling mode) SAMSPEED MANUAL exits from automatic playback mode. It immediately returns the sample speed back to the rate which was set by the most recent SAMSPEED n command in the programme. Example: load"voices.mbk":rem Loads some sound effects 10 click off:sound init 20 samspeed 20:rem Set very fast speed 30 print"20 KHz":samplay 1 40 print"Hit a key to continue":wait key 50 samspeed auto:rem Set proper speed 60 print"Recorded speed":samplay 1 70 wait key:samspeed manual:rem Set samspeed back to 20KHz 80 print"20KHz again":samplay 1:wait key SAMMUSIC (Play sample as a note) SAMMUSIC n,'note' The SAMMUSIC instruction allows you to alter the tone of a sample when it is played. It's specifically intended for samples which represent some sort of musical instrument. The effect is to widen the scale of the sound to encompass the full range of musical notes. N can be any one of the 32 possible samples stored in the current memory bank. 'note' must be a string containing one of the following notes: C,C#,D,D#,E,F,F#,G,G#,A,A#,B The current pitch of the sample is assumed to be middle C. Example: load"voices.mbk":rem Load some effects created previously 10 click off:sound init 20 for i=1 to 12 30 read n$:print"Key";N$:sammusic 3,n$ 40 wait key:rem Wait for the voice to be finished 50 next i 60 data "C","C#","D","D#","E","F","F#","G","G#","A","A#","B" A better example of SAMMUSIC can be found in the file PLAYER.BAS on the STOS maestro programme disc. This lets you load a sample into memory, and then 'play' it from the keyboard. PLAYER assumes that the sampled found on the disc is in raw form. It's therefore possible to load samples straight off the samples disc. However, don't try to input .MBK files created with the STOS Maestro accessory as you will generate an error message from the programme. SAMLOOP ON (Repeat a sampled sound) After this command has been performed, any sample which is subsequently played using the SAMPLAY, SAMMUSIC and SAMRAW functions will be continually repeated from beginning to end. reserve as data 6,12000 bload"A:\sound\explosion.sam",6:rem Load a sample from the samples disc 10 click off:sound init:samspeed auto 20 samloop on 30 samraw start(6),start(6)+length(6) 40 print"Press a key to end" 50 wait key:samstop:samloop off:click on Like all the sampling commands, SAMLOOP is accomplished using an interrupt routine. So once you have started the loop your programme can get on with more important work, and forget about the sampler completely. SAMLOOP OFF (Exit from a sample loop) The SAMLOOP OFF command instructs the sample routine to play any future samples exactly once. This instruction has no effect on the sample which is currently being played. If you wish to halt an existing sample you will need to use the SAMSTOP directive instead. Example: reserve as data 6,12000 load"A:\sound\explosion.sam",6:rem Load a sample from the samples disc 10 click off:sound init:samspeed 10 20 samloop on:rem Repeat the next sample 30 samraw start(6),start(6)+length(6):rem Play sample 40 print"Press a key to end" 50 wait key:samstop:samloop off:rem Turn off looping 60 samraw start(6),start(6)+length(6):rem Play a single shot SAMDIR FORWARD (Play a sample from start to finish) Normally all samples are played back in the direction they were originally recorded. However you can change this using the SAMDIR BACKWARD command. SAMDIR BACKWARD (Play a sample backwards) This reverses the action of all future playback commands. Any subsequent samples will now be played backwards until canceled by using SAMDIR FORWARD. Example: reserve as data 6,10000 bload"A:\voice\gameover.sam",6:rem Load a sample from the samples disc 10 click off:sound init 20 samdir backward 40 samraw start(6),start(6)+length(6) 50 wait key:samstop The above programme plays the phrase "game over" back to front. You can also call the SAMLOOP command with a reversed sample. Add the following lines to the above example: 30 samloop on 55 samloop off Although SAMDIR may seem rather pointless at first, it's actually surprisingly useful. You can, for instance, create a convincing impression of an "alien" language, by simply reversing normal speech, and then altering the playback speed. This technique was used to great effect in the radio version of The Hitch-hiker's Guide to the Galaxy. SAMSWEEP ON (Repeatedly play a sample forwards and backwards) The SAMSWEEP command is ideal for the generation of 'swishing' noises like those produced by an aeroplane. The effect is to repeatedly cycle a sample forwards and backwards. Note that, like SAMLOOP, the sweeping action only takes effect from the next sample which is played. Example: reserve as data 6,784 bload"A:\sound\swosh.sam",6:rem Load a sample from the samples disc 10 click off:sound init 20 samsweep on:rem Start sweeping 30 samraw start(6),start(6)+784 50 wait key:samstop SAMSWEEP OFF (Stop sweeping effect for the next sample) This removes the sweeping effect from any sample which is subsequently played with the SAMPLAY, SAMMUSIC, SAMRAW instructions. Like SAMLOOP OFF it has no effect on the sample which is currently being performed. SAMRAW (Plays samples straight from memory) SAMRAW start,end Plays a raw sample stored from addresses start to end. Raw samples can be placed anywhere in memory. So it's perfectly possible to load a sample into a string, and then subsequently manipulate it with normal string functions. Example: 10 SOUND$=string$(chr$(0),12000) 20 bload"\VOICE\GAMEOVER.SAM",varptr(SOUND$) 30 samraw varptr(SOUND$),varptr(SOUND$)+len(SOUND$) 40 wait key 50 rem Chop the word "over" from "game over" 60 OVER$=right$(SOUND$,8000) 70 samraw varptr(OVER$),varptr(OVER$)+len(OVER$) Raw samples can also be looped, reversed and swept using the appropriate sampler commands. Example: 10 reserve as work 8,100000:rem Reserve 100k to hold samples 15 click off:sound init:samloop off:samsweep off 20 F$=file select$("*.sam","Load sample to play") 30 if F$=""then end 40 open in#1,F$:L=lof(#1):close#1:rem Get length of sample 50 bload F$,8:rem Load sample 60 input"Playback speed";s 70 if S<5 or S>22 then print"Invalid Speed":goto 50 80 samspeed S 90 samraw,start(8),start(8)+L 100 print"Hit a key to continue":wait key:goto 20 SAMBANK (Select current bank for SAMPLAY and SAMMUSIC commands) SAMBANK n N is a number from 1 to 15 specifying a STOS memory bank to be used by the sampler. As a default, the SAMPLAY and SAMMUSIC operations expect a list of previously created samples to be available from memory bank number 5. Unfortunately this can cause serious problems for anyone wishing to add sampled sound to an existing programme. Supposing you wanted to include sound effects in a programme such as Zoltar. In this case, you can't place the samples in bank 5, as this is already allocated to one of the screens. You therefore need to change the current sample bank with SAMBANK. See the section called Adding samples to your games for more details of this procedure. Another application is to allow you to incorporate more than the maximum of 32 samples in a STOS Basic programme. Example: load"effects.mbk",5 load"voices.mbk",6 10 click off:sound init:samspeed auto 20 sambank 6:rem Use bank number 6 30 for i=1 to 5 40 samplay i:print"Hit a key to continue":wait key:rem Press a key 50 next i 60 sambank 5:rem Set bank back to 5 70 goto 30:rem Playback 5 sound effects SAMCOPY (Copy a sample from one place to another) SAMCOPY start,end,dest This is just a special version of the standard STOS copy command which allows you to start copying from an odd location - that is, from any location whether it is on a word boundary or not. SCREENCOPY only works on word boundaries for reasons of speed. Start is the beginning of the address which is to be moved. It can take any value you wish, and it does not have to be even. End is the address of the end of the sample which is to be copied. Dest is the destination of the new sample. Example : 10 reserve as work 10,30000:rem reserve 30K 20 input "place the sample disk in drive A";a$ 30 samspeed 12 40 dir$="A:\VOICE\" 50 bload "gameover.sam",10:rem load a sample 55 rem make a second copy of the sample into bank 10 60 samcopy start(10),start(10)+10000,start(10)+10001 65 rem play the entire sample 70 samraw start(10),start(10)+length(10) SAMPLACE (Return the current position in the sample) p=SAMPLACE The SAMPLACE function retrieves the present position in the sample which is currently being played. This number is relative to the start of the sample. The possible values taken by SAMPLACE range from 0 to the total sample size (in bytes). Imagine you had a sample which was 20K long. If you were to get the position at the halfway point, a value of 10000 would be returned. 10 rem simple tape counter 20 click off:sound init:curs off:hide 30 input "Sample number";N 40 input "Sample rate";s 50 samspeed s:samplay n 60 XC=xcurs:YC=ycurs:P=samplace/1000:print"Tape counter:";P;" "; 65 locate XC,YC: if inkey$="" then 60 70 goto 30 The SAMPLACE function is often used to determine when a sample has finished playing. This information is essential if you wish to combine melodies produced from the MUSIC accessory with sampled sounds. Example : load "music.mbk";rem load from the STOS Basic accessory disk load "effects.mbk":rem created previously with MAESTRO accessory 10 click off:music 1:tempo 30 20 if rnd(1000)<>3 then 20:rem produce random sound effects 30 music freeze:sound init:samplay 1 40 if samplace=11842 the samstop:music on:goto 20:rem sample 10K long 50 goto 40 THE SAMPLER CONTROL COMMANDS These functions are designed solely for use with the STOS Maestro Plus cartridge (or equivalent). They give you complete control over the various features provided by the sampler and allow you to create customized sampling programs in STOS BAsic. This opens the door to a bewildering range of possible applications, form speech synthesizers to simple speech recognition systems! SAMRECORD (Records a sample from the sound cartridge) SAMRECORD start,end SAMRECORD starts the sampler running, and records a sample using the current speed setting. the new sample is entered directly into the memory locations between start and end. While the sample is being recorded, the sampled sound is continuously played through your TV or monitor. Start is the address of the start of the sample End is the address of the end of the sample. When this point is reached, the sampling process is automatically terminated. Samples created using this function can be save to the disk and accessed directly from either the Maestro program or the SAMRAW command. Example : 10 rem recording a sample 20 click off:sound init 30 reserve as work 6,1024*50; rem reserve 50K for sample 40 input "SAmple Speed";s 50 if S<5 or S>22 then print "Invalid speed";goto 40 60 samspeed S 70 print "Prepare your recorder" 80 samthru:input "Hit return to start sampling";R$ 85 print "REcording sample" 90 samrecord start(6),start(6)+1024*50 100 if samplace<49999 then 100:rem Wait until recording finished 110 print "Playing back sample" 120 samraw start(6),start(6)+length(6):rem play sample 130 if samplace<1024*50 then 130:rem wait until playback finished 140 input "Play again Y/N";A$:If A$="y" or A$="Y" then 120 150 goto 40 As you might expect, the sampling rate can be set up using the SAMSPEED n instruction, and the sampling can be aborted at any time with SAMSTOP. It's important to note that this instruction does store the recording speed as part of the sample. So if you try to play back a sample using the SAMSPEED AUTO instruction, an error will be generated. SAMTHRU (Play the input from the sampler through the monitor's speaker) The SAMTHRU command simply pipes the current sound output through your TV speaker. This allows you to listen to the input without creating an actual sample. Example: Place a tape in your recorder and press PLAY. Now type: click off:sound init:samthru This THRU mode can be interrupted at any time using the SAMSTOP command. SAMPLE (Read the sample value directly from the cartridge port) s=SAMPLE S holds a value from -127 to +127 which represents the volume of the sound in a digital form. The STOS Maestro Plus cartridge reads this value thousands of times per second and uses it to create a digital representation of the sampled sound. Example: 10 click off:sound init:l=0:mode 1:cls:physic:cls back 20 ink 1:hide:samthru 30 S=sample/2:draw l,100 to 100-S:incl 40 if l>=640 then l=0:cls:physic:goto 30 else 30 Initialisation -------------- This sets up the screen and reserves space for your samples in one of the STOS Basic memory banks. 10 rem Sampler 20 mode 0:click off:sound init:rem Initialise sound chip 25 rem Set up screen 30 cls physic:cls back:windopen 21,5,38,19,0 50 rem reserve maximum available memory 60 MEM=free-50000:if mem>0 then reserve as work 6,MEM else print"Not enough memory":end Most of the above code is fairly obvious but pay special attention to line 60. This reserves all the currently available memory for the sample, leaving 50k for the programme itself. Entering the user's commands ---------------------------- The input routine forms the heart of your sampling programme and interprets the commands as they are entered by the user. You can make this routine as simple or as complex as you wish. Commands can be entered using the keyboard, STOS menus or the mouse. Here is a simple example of input routine. 65 rem Keyboard input routine 70 input"Input command";C$:C$=upper$(C$) 80 if C$="K"then gosub 490:goto 70:rem Set speed 90 if C$="P"then 170:rem Play sample 100 if C$="R"then 250:rem Record sample 110 if C$="T"then 320:rem Thru sample 120 if C$="L"then 450:rem Load sample 130 if C$="S"then 370:rem Save sample 140 if C$="Q"then samstop:default:end 150 print"Command not recognised":goto 70 We'll now go through each of these commands in turn and show you how they can be implemented in STOS Basic. Setting the sample speed ------------------------ 490 rem Set speed 500 input"Sample speed";S 510 if S<5 or S>22 then samstop:boom:goto 500 520 samspeed S 530 return The SET SPEED routine uses samspeed to set a sampling rate between 5 and 22KHz. Note the check in line 510. Recording a sample ------------------ 240 rem Record sample 250 if S=0 then gosub 490 260 gosub 550:rem position 270 samrecord start(6)+BEGIN,start(6)+FINISH 280 gosub 620:samstop:rem Display counter 290 input"Repeat sample ?";A$:if upper$(A$)="Y"then 270 300 input"Reset interval ?";A$:if upper$(A$)=Y"then 250 310 goto 70 This routine uses the SAMRECORD function to enter a sample into memory. The gosub at line 250 is just to call to the set speed routine I showed you earlier. This forces the user to choose a speed before recording the sample. The size and position of the recording is set using a special Set Interval routine like so: 540 rem Get starting point 550 input"Starting point";ST:BEGIN=ST*1000 560 if BEGIN<0 or BEGIN>MEM then print "Number must be between 0 and";MEM/1000:goto 550 570 input"Ending point";SP:FINISH=SP*1000 580 if FINISH<=BEGIN then print"End point must be greater than start":goto 570 590 if FINISH>MEM then print"Number must be between 0 and"MEM/1000:goto 570 600 return Each unit corresponds to a thousand bytes of the sample. So a start point of 5 and an end point of 50 will record from locations START(6)+5000 to START(6)+50000. Another useful routine is a Tape Counter which continuously displays the current sampling position. 610 rem Print current position 620 curs off:hide 630 XC=xcurs:YC=ycurs:P=samplace/1000+ST:print"Tape counter:";P;" "; 635 if P<SP then locate XC,YC:goto 630 640 curs on:show 650 return The equation P=samplace/1000+ST, converts the position in the current sample to the position relative to the entire memory bank. Playing a sample ---------------- 160 rem Play sample 170 if S=0 then gosub 490 180 gosub 550:rem Get position 190 samraw start(6)+BEGIN,start(6)+FINISH 200 gosub 620:samstop:rem Display counter 210 print:input"Play again?";A$:if A$="Y"or A$="y"then 190 220 input"Reset interval?";A$:if A$="Y"or A$="y"then 170 230 goto 70 As with the record function, I've added a check for whether the sample speed has been set previously. This compensates for the lack of the sample speed in the recorded sound. Playing a sample through the loudspeaker ---------------------------------------- This can be performed using the following code: 320 rem Thru 330 input"Press play";A$ 340 samthru:print"Press the spacebar to stop" 350 if inkey$<>" "then 350 360 samstop:goto 70 Finally, we'll add the routines which allow you to save and load samples to the disc. 370 rem Save sample to disc 380 F$=file select$("*.*","Save a sample") 390 if F$=""then 70 400 gosub 540 410 if dfree<FINISH-BEGIN then print"Not enough disc space":print"Try again":goto 390 420 print"Saving ";F$ 430 bsave F$,start(6)+BEGIN to start(6)+FINISH:goto 70 Note the call to Set Interval routine at 540, which enables you to save any part of the sample independently. Loading a sample ---------------- 440 rem Load a sample 450 F$=file select$("*.*","Load a sample") 460 if F$=""then 70 470 print"Loading ";F$ 480 bload F$,start(6):goto 70 Although the programme is undoubtedly crude, it's more than adequate for adding the finishing touches to samples produced from MAESTRO.PRG You can therefore fine tune your samples without having to leave the STOS Basic environment. Feel free to modify it as much as you like for use with your own programmes. 6:Tech ind Adding sampled sounds to an existing programme ---------------------------------------------- If you've been using STOS Basic seriously for any appreciable length of time, you'll probably have dozens of programmes which would sound great with a little sampled sound. This is especially true for those wishing to enter the STOS Gameswriter of the Year competition. We'll now demonstrate how you can incorporate samples into a large STOS Basic programme. In order to keep our examples as realistic as possible we'll use the Zoltar game from the STOS Games disc. Switch on your ST and load Zoltar into memory with a line like: load"\zoltar\zoltar" If you list this programme you will be confronted with several pages of densely packed instructions. The first step is to check which banks are currently being used by the programme. You can do this by using the LISTBANK command: listbank Reserved memory banks: 1 sprites S:$0E9900 E:$0ED300 L:$003A00 3 music S:$0ED300 E:$0ED700 L:$000400 5 data S:$0ED700 E:$0EF200 L:$001B00 6 data S:$0EF200 E:$0EFF00 L:$000D00 The precise numbers aren't really important and will vary depending on your system configuration. The only crucial fact is that bank number 5 is already used - this clashes with the default memory bank used by the samplay instruction. you will therefore need to change the sample bank somewhere early in the programme using SAMBANK. In the case of Zoltar the first unused bank is 7. You can set this at the start of Zoltar like so: 200 reserve as screen 10:cls 10:sambank 7 You can now incorporate the standard pieces of initialisation code which will be required by your programme. 42 click off:sound init:samspeed auto:rem Initialise sound chip The next phase is to make a list of the various sound effects which are currently used in your game. If the programme is one of your own, this process will be fairly trivial. But in the case of Zoltar you will need to repeatedly scan the program with the SEARCH instruction. The table below shows the lines which require changing. Breakdown of the sound effects used in Zoltar Line Sound commands Purpose 10465 envel 1,1000 : noise 3,2 Player fires a missile 10485 envel 4,750 : noise 3,15 Ship fires a missile 10500 envel 1,4000 : noise 3,31 Attacker destroyed 10515 envel 1,20000 : noise 3,31 Player destroyed 10810 envel 1,1000 : noise 3,2 Player fires a missile 10840 envel 4,750 : noise 3,15 Magedon fires a missile 10845 envel 1,20000 : noise 3,31 Player destroyed 10900 voice off : volume 16 : Magedon destroyed envel 1,35000 : noise 31 The precise nature of these effects was discovered by simply calling them directly from the editor. Once you have isolated the sound effects in your programme you can then choose some appropriate samples from the samples disc. These raw samples must now be combined into a single memory bank using the Maestro accessory. You are now in a position to incorporate these samples into your STOS Basic programme. load"effects.mbk",7:rem Load effects used by Zoltar Now replace each of the NOISE instructions with the relevant SAMPLAY command. When these have been introduced try running Zoltar - you will quickly discover that the sampled sounds interfere with the music. As a general rule it's safest to avoid the combination of music with sampled sound altogether. Any accesses to the MUSIC instruction should therefore be removed. This can be simplified by checking through the programme with the SEARCH commands. 1014 music 1 2005 music off:M=1:T$="Please select option":gosub 11000 5000 WAVE=1:LIVES=3:SCRE=0:music 1:gosub 10400:music off Alternatively, you can halt the music with MUSIC FREEZE before the sample is played, and then restart it using the MUSIC ON command. So the SAMPLAY instructions could be replaced by: music freeze:samplay 1:wait 50:music on Unfortunately this simple-minded approach will only work for games which use interrupt driven sprites used by the majority of STOS Basic programmes. Zoltar however, manipulates the sprites solely with the SPRITE command and the game will be halted for about a second after every explosion. Also note that above technique requires you to resume the music after a sample has been completed. Otherwise the music will fail to resume after MUSIC ON statement. Here are a few possible extensions to the Zoltar programme: 1 Add sampled voices for "GETREADY" or "BONUSPOINTS":See lines 1155 and 10405 2 Give each possible sound a different sample. Finally I'll summarise the various steps in the modification procedure. Adding sound to a STOS Basic game --------------------------------- 1 Check for the existence of bank 5. If it is already in use, set the sample bank to the next free bank using SAMBANK. 2 Add the initialisation code to the start of the programme. This will typically consist of the following instructions. click off:sound init:samspeed auto 3 List the various sound effects used and create a bank of replacements using the Maestro accessory. 4 Add the new effects to the appropriate points in your programme. 5 If your programme is using music you are presented with two possible options. Either remove the music completely, or halt the music using MUSIC FREEZE before a sample is played and resume with MUSIC ON after it has finished. Assembly language interface --------------------------- If you have a little experience in assembly language, you will be delighted to discover that any samples created using the STOS Maestro Plus cartridge can be replayed using just a few lines of assembler. In order to access these features, you will need to incorporate the echoed found in the MAESTRO.OBJ file into your programme. This can be loaded at the end of your programme using the INCBIN directive within your source file. sampler incbin"maestro.obj" If your assembler does not include this facility, you will be forced to load the object file directly from the disc in your assembly language programme. Full details of the required BIOS calls can be found in any decent ST reference manual. Since the sampler uses an interrupt routine, it cannot be guaranteed to work with any existing interrupts which access the sound chip. The calling procedure is simplicity itself. First define a number of important system variables at the start of your programme like so: Equates for accessing the routines and variables SAMINIT EQU $000 ; Offset the initialisation routine SAMPLAY EQU $020 ; Offset to the playback routine SAMSTOP EQU $370 ; Offset to the samstop routine AUTO EQU $3A2 ; Offset to a variable holding the AUTO status TYPE EQU $3A8 ; Offset to a variable holding the samplermode ; TYPE(A6)=1 for forward play ; TYPE(A6)=2 for backwards play ; TYPE(A6)=3 for forwards loop ; TYPE(A6)=4 for backwards loop ; TYPE(A6)=5 for sweep SPEED EQU$3AA ; Offset to variable controlling the speed. Permissible values ; range from 5 to 32 KiloHertz. Note this option only works if ; AUTO(A6) is set to ZERO Now load the address of the sampler routine into a convenient address register. lea SAMPLER,a6 You must then initialise the sound chip using the SAMINIT function. jsr SAMINIT(a6) ; Call routine to initialise sound chip Finally enter supervisor mode with a call to SUPER and play your sample with: lea SAMPLE_START_ADDR,a0 ; Start address of sample move.l #SAMPLE_LENGTH,a1 ; Length of sample in bytes lea SAMPLER,a6 ; Address of MAESTRO.OBJ code move.w #1,TYPE(a6) ; Forward play move.w #0,AUTO(a6) ; Set manual mode move.w #10,SPEED(a6) ; Set sample speed to 10KHz jsr SAMPLAY(a6) ; Call playback function You can stop this sample at any time using the instructions: lea SAMPLER,a6 ; Start address of .OBJ file jsr SAMSTOP(a6) Here are a couple of Macro definitions which simplify this procedure: ; PLAYSAM Play a sample ; Usage: playsam SAMPLER,START,END,SPEED ; SAMPLER=Start address of MAESTRO.OBJ file ; START=Start address of sample ; END=End address of sample ; SPEED=Speed of sample (in kilohertz) SAMPLAY:MACRO LEA\1,a6 ; Get address of OBJ file in a6 jsr SAMINIT(a6) ; Init sound chip move.l #\2,a0 ; Start of sample in a0.L move.l #\3,a1 ; End of sample in a1.L move.w #\4,SPEED(a6) ; Speed of play clr.w AUTO(a6) ; Not auto speed select move.w #1,TYPE(a6) ; Play forwards (TYPE=1) jsr SAMPLAY(a6) ; Call routine ENDM ; End macro ; SAMSTOP Stop a sample ; Usage:samstop SAMPLER ; SAMPLER=Start address of MAESTRO.OBJ file SAMHALT:MACRO lea \1,a6 jsr SAMSTOP(a6)2 ENDM If you use these macros, don't forget to enter supervisor mode first! other languages which incorporate some form of machine code call command will be able to take advantage of the MAESTRO.OBJ file - simply set up the relevant variables and call the code. STOS Maestro Plus cartridge specifications: ------------------------------------------- Signal to noise ratio 30.48 Dbs Maximum frequency 98.5 KHz (not guaranteed) Frequency Selection Software controlled Resolution 8 Bits Linearity +/- 0.5 LSB Maximum input signal 2.5V RMS (peak to peak) Anti-aliasing filter Yes Internal successive approximation logic circuitry. Chip conversion activated by ROM-SEL 3 on cartridge port. ****************************************************************** Well, here we are at the end of yet another mammoth (100K+) doc brought to you by Sewer Software. Thanks again to Paul who typed these docs for us, word for word from the original manual.
Back to STOS BASIC