@database Sample-X.guide @master Sample-X:doc/Sample-X.guide @$VER: 1.6 @author "Sheun Olatunbosun" @(c) "© 1997 Sheun Olatunbosun" @remark Created with Heddley v1.1 (c) Edd Dumbill 1994 @node "Main" "Welcome page for Sample-X" @{b}Sample-X@{ub} Demo Version 2.1 A MIDI device sample player for the Amiga © Copyright 1996 - 1998 Sheun Olatunbosun CONTENTS @{" Introduction        " link "Reason" 0} @{" Features            " link "Features" 0} @{" Changes             " link "Changes" 0} @{" Incompatability     " link "Inc" 0} @{" System Requirements " link "SystemReq" 0} @{" Getting Started     " link "GetStart" 0} @{" Screen Layout       " link "ScreenL" 0} @{" MIDI Implementation " link "MidiI" 0} @{" Sample conversion   " link "Un2xff" 0} @{" Glossary            " link "Glossary" 0} @{" Demos               " link "Demos" 0} @{" Trouble Shooting    " link "TroubleS" 0} @{" Acknowledgements    " link "Thanks" 0} @{" Bug report          " link "BugR" 0} @{" Registration        " link "Register" 0} @{" Copyright           " link "Copyright" 0} @{" Distribution        " link "Distr" 0} @{" Disclaimer          " link "Disclaim" 0} @{" IMPORTANT           " link "FPUWoes" 0} -------- @endnode @node "Disclaim" "Disclaimer" NO WARRANTY ----------- The author cannot be held responsible for any loss of data or damage occurring directly or indirectly from use of this program. The user understands this declaration before using this program on his or her computer system. @endnode @node "Reason" "The motive behind Sample-X" I've created @{b}Sample-X@{ub} because of the lack of good Amiga programs out there which handle Amiga samples integrated with MIDI sequencing. I've tried several tracker programs which offer excellent sample manipulation but my music composing is based around MIDI and primarily using the package Music-X. This program provides comprehensive MIDI facilities but lacks powerful sample playback - you can't even play back a sample at different volumes (velocities) in version 1.1 of the software. Therefore, I've coded a sample player which communicates with Music-X through an internal (inside the computer) MIDI stream. The Amiga audio is still very powerful and very clean; and the fact that the machine is a multi-tasking wonder means that I was able to produce this program which is just one task, Sample-X, talking to another, Music-X. I had no intention of writing another lengthy MIDI sequencer and besides Music-X is already more than up to the job. @{b}Sample-X@{ub} is primarily a sample player with extensive MIDI handling and it is not meant to be a sample editor. There are already some good sample editors which do their job brilliantly. Also, since the Amiga is such a wonderful multi-tasking computer there really isn't any need to create a "jack-of-all trades" program when you can have co-operative tasks which perform single functions very well. Happy sampling and sequencing. 8-8-97 @endnode @node "SystemReq" "System requirements" @{b}Sample-X@{ub} requires Workbench 2.04+ and Music-X v1.1/v2.0 if you wish to replace the sample player in Music-X. To turn your Amiga into a stand alone MIDI sample player, some external MIDI device such as an hardware sequencer (eg another computer) or master keyboard is required. Naturally, a MIDI interface is essential for operating Sample-X without @{b}Music-X@{ub}. Possesion of the @{b}midi.library@{ub} is useful if you want Sample-X to take midi data from the output port of another program which uses the same library. The @{b}AHI device@{ub} by Martin Blom if you want to get any sound at all from your Amiga! Make sure you obtain at least version 4.5 of the @{i}paula.audio@{ui} driver if you want to use the Amiga's internal sound. I don't have a third-party soundcard so I've been unable to test Sample-X with say Delfina, Toccata, Pelude, etc for which AHI drivers exist. (OPTIONAL) The @{b}amigaguide.library@{ub} tools if you wish to use the on-line help. This is standard in Workbench OS3.0+. (OPTIONAL) The @{b}wbstart.library@{ub} if you wish to Sample-X to launch Music-X automtically. All mentioned software is available from Aminet. While the program should run on all Amigas, I don't know how comfortably Sample-X will run on a 7MHz A500. It does put a fair bit of demand on the CPU and a 68000 might not be able to keep up. But try it and see. Sample-X has only been tested on an A1200 and an accelerated A1200 (68030 CPU and 16MB FAST RAM), and so I invite others to try the program on other Amiga's and report to me their experiences (good or bad). In the case of program failure or bugs, please @{"report" link "BugR" 0} the problem to me, stating the procedure which leads to the error. Furthermore, please see the @{"problem page" link "FPUWoes" 0} if Sample-X crashes on loading. @endnode @node "FPUWoes" "Big Problem" Many users trying Sample-X have reported that their machine crashes on loading the program. After much investigation (and effort from others in the Amiga community), I have concluded that the system crashing could be owing to a bug in the system maths libraries (mathieesingtrans.library or something similar). If you are experiencing problems, then you are advised to pickup the patch from the Amiga Technologies WEB site which should correct the problem. Sample-X has not been specifially coded for FPU equipped Amigas. It should also work on FPU-less Amigas, and I've verified this on my unaccelerated, no hard drive, A1200. @endnode @node "Features" "Features" @{b}Sample-X@{ub} is a sample player for the Amiga computer. It was created for the sole purpose of replacing the sample player in the Music-X system, but it can also serve as a MIDI driven sample player. For this purpose an external sequencer or MIDI keyboard is required to send MIDI commands to the Amiga computer. Features - AHI based - 16 MIDI channels - 32 polyphony - Mono, stereo samples (long/looped) - Wave samples - No CHIP RAM limit on samples - Direct from hard disk play - Reverse sample play, delay FX - Raw sample configuring - Sample replace feature - Loads IFF/WAV/AIFF formats - Sample priority scheme - Multiple samples per MIDI channel - Save MIDI channel setups - Save Session setups - Volume envelope - Wave envelope - Extensive MIDI control to give - Real-time panning/Sample cross-fading - Real-time pitch-bend - Wave manipulation (filter emulation) - Quick disk sample trigger - DJ loop mode - Works with AHI aware soundcards (Internal Paula audio, Delfina, Toccata, Prelude, etc) - Talks to serial port, other @{i}midi.library@{ui} aware music apps and Music-X This is a demo version of Sample-X. It is possible to save samples and user preferences. However, there is no saving of channel set-ups nor session set-ups. See @{"Registration" link "Register" 0} on how to obtain the full version. In the @{"About Sample-X" link "About" 0} section are some important points/characteristics to consider about this player. @endnode @node "Changes" "Improvements in 2.1" The xphantom driver has been radically improved so that the response of Sample-X to triggering from Music-X is now much better. @endnode @node "Inc" "Incompatibility" @{fg shine}IMPORTANT@{fg text} This program has undergone a massive improvement and as such, sample, channel set-ups and seession setups from early versions of Sample-X will not load. The extra features in version 2.0/2.1 more than compensate for this lack of backwards compatibility. Future versions will be compatible with version 2.0/2.1. @endnode @node "About" "About Sample-X" Below are some of fundamentals of @{b}Sample-X@{ub}. @{b}The interface@{ub} Sample-X looks likes any multi-timbral, polyphonic MIDI device with some standard features for control over note velocity, channel panning etc and some unique features such as wave type samples, sample priority and direct-from-disk play. With the introduction of AHI it is now possible to play up to 32 sounds simultaneously. @{b}32 polyphony@{ub} Each stereo sample in Sample-X uses two channel. Therefore it's possible to play a maximum of 32 mono samples or 32 stereo samples. @{b}The Exiff format@{ub} Sample-X uses its own sample format because the Standard IFF specification is too limited. See the @{"sample types" link "Stypes" 0} section. @{b}Technical@{ub} Sample-X communicates with its (Extend-X) drivers - xphantom, rMidi-X and Midi-X - through a standard protocol. Other programs (eg Music-X) communicate with Sample-X through their respective drivers. This format allows the "outside" programs to send midi data and not wait for a reply, which is akin to how real midi devices operate (unless System Exclusive messages are involved). This allows other programs (eg sequencers) to output their data at the correct time even though Sample-X may lag behind. Those programs should not wait for Sample-X to catch up. @endnode @node "Stypes" "Sample types" Sample-X can handle two sample types with the following variants. L - looped W - wave type M - mono S - stereo @{b}RAM@{ub} - L, W, M, S This sample type is identical to that handled by other Amiga audio programs. Samples of this type are loaded into Chip or Fast RAM. They can be of any length so long as there is available memory space. @{b}Disk@{ub} - M, S Small (64K) buffers are allocated for disk samples. The data are spooled regularly from the hard drive. There is always an initial delay when disk samples are triggered because of the seek required to get to the correct start point. Therefore disk samples will have to be started a bit earlier than their RAM counterparts. Alternatively, you can use the special @{"MIDI trigger option" link "MidiI" 0}. Disk samples can be mono or stereo, but they cannot be wave type nor looped. Since disk samples are loaded asynchronously, they do not affect the playback of RAM samples, that is there is no perceivable delay for the triggering RAM samples while data is being read for a disk sample. Therefore @{i}in memory@{ui} samples and disk samples should coexist without problems during playback. Typically, disk samples are given a high priority so that they are not unexpectedly interrupted. @{b}Wave (sample)@{ub} A wave sample is composed of two or more waveforms which may or may not bear some resemblence to each other. Only one of the waveforms is played at any one time. It is useful for creating (on a restricted level) wave sequences as found on Korg synthesizers to produce rhythmic effects of different instruments, and it is also useful for performing filter emulation (the essential something missing from the internal Amiga sound circuitry). @endnode @node "GetStart" "Getting Started" Use the @{b}Install_Sample-X@{ub} program to set-up Sample-X correctly on your system. This really is the best way since there are different configurations which depend on whether you intend to use Sample-X with Music-X or as a standalone program which is driven by an external MIDI device. It is not necessary to know this but Sample-X takes some @{"arguments" link "SamXTool" 0}. Click on button @{b}A@{ub} or @{b}B@{ub} depending on how you are going to use Sample-X. @{b}A@{ub}. @{" Sample-X with Music-X " link "SamXmusX" 0} @{b}B@{ub}. @{" Sample-X with an external MIDI keyboard or sequencer " link "SamXmidX" 0} @endnode @node "SamXTool" "Sample-X Tooltypes" Sample-X takes the following tooltype VGA - Use the 31Khz VGA multiproductivity screenmode 640 x 480 The CLI argument is identical -v vga mode For the internal Amiga soundchip (Paula), the maximum rate of samples is actually governed by the screen mode used. The standard 15KHz (boot-up) screemode will allow rates up to 28Khz. The VGA mode will allow rates up to 56Khz,ie beyond CD/DAT playback rates. @{i}NOTE: This option is now redundant and is likely to disappear from future versions of Sample-X.@{ui} @endnode @node "WBStart" "WBStart: the workbench program laucher" There are some programs like Music-X which can only be started from the Workbench. Unfortunately, the "Quick start" scripts have to be executed in the CLI environment. @{b}WBStart@{ub} solves the problem by allowing CLI commands to launch those Workbench only programs. @endnode @node "AutMusX" "Launch Music-X automatically" You can examine the simple "Quick_Music-X" script to see how Sample-X and Music-X are automatically started. It is necessary to have WBStart installed on your system. @{i}dospath.library@{ui} and @{i}wbstart.library@{ui} should exist in the LIBS: drawer and the @{i}wbstarter@{ui} command should be present in the C: directory. The whole procedure is pure laziness on my part because I'm fed up with double-clicking Sample-X and then Music-X. Now I just ONE click an icon in a launchpad utility program :-). @endnode @node "SamXmusX" "Sample-X and Music-X" @{b}Starting up@{ub} The assumption at this point is that you have run the @{b}Install_Sample-X@{ub} program so that @{fg shine}>The xphantom driver exists in the DEVS:midi drawer. If there is no DEVS:midi drawer then Music-X is unlikely to be installed on your Amiga. >One of the tooltypes for Music-X now reads something similar to "MIDIPORTS=internal,1A|xphantom,2A" or @{"looks like" link "Sample-X:doc/pix/tooltype.iff/main" 0}. >An assignment of SampleX: now points to the drawer where you've unarchived the Sample-X stuff.@{fg text} a) Double-click on the icon entitled Sample-X. A small window will pop up saying that Sample-X is waiting for driver (Extend-X). b) Double-click on the icon entitled Music-X, wherever you keep it. Sample-X should now start. If however, you do not start Music-X within ten seconds after starting Sample-X then a window will pop-up stating @{i}"No respons from Extend-X"@{ui}. If you receive this message then repeat steps a and b. Sample-X can be run from the CLI if desired (euh!) but Music-X cannot. Just remember to execute Sample-X first. You can get Sample-X to @{"automatically launch Music-X" link "AutMusX" 0} if you have @{"WBStart" link "WBStart" 0} installed on your Amiga. @{b}Redirecting keyboard input data@{ub} Okay with the Sample-X screen finally open everything is almost ready. If you have a master keyboard then you can allow it to communicate directly with Sample-X by doing the following. Go to the @{"Filters Page" link "Sample-X:doc/pix/bankMx.iff/main" 0} in Music-X and from the menu select @{b}Filter Out@{ub} under @{b}File@{ub}. A requester will pop-up listing the available banks (typically @{b}internal@{ub} and @{b}xphantom@{ub}). Choose xphantom and select OK. From the same menu strip switch off (uncheck) the item @{b}Echo Same Bank@{ub}. You have now requested that data arriving at the midi IN port of your interface should not be sent to the midi OUT port but instead redirected to the midi OUT of xphantom (ie sent to Sample-X). Please remember that samples should no longer be loaded into Music-X since Sample-X is now fulfulling the role. Okay check out the @{"demos" link "Demos" 0} highlighting some of the features of Sample-X and the screen layout section on how to use this program. @{fg shine}NOTE:@{fg text} It is not necessary to change the Tooltypes again when you want to use Music-X without using Sample-X. The xphantom driver knows when Sample-X is loaded into memory and it will pass on midi data accordingly. All this happens transparently to Music-X. If you abruptly stop a sequence, Sample-X may not receive a NOTE OFF message for a corresponding NOTE ON message which occurred before the stop. Hit the @{i}Escape@{ui} key on the Amiga to flush any stuck notes. This problem can typically happen with long disk samples. Since Sample-X is now handling the audio side of the Amiga, you should turn off any sequences (in Music-X) which play on the internal (INT) banks. Otherwise you may get strange noises. @endnode @node "SamXmidX" "Sample-X and external MIDI device" It is assumed at this point that the Install_Sample-X program has been suceessfully run. Double-click on the icon entitled "Quick_Midi-X" Sample-X should now start. Please wait thirty seconds for Sample-X to initialise. If all goes correctly, the Sample-X screen will shortly open. On the Workbench appears a small window for Midi-X. This notifies the user that Midi-X is up and running. Whenever midi data arrives at the serial port, a black square will flash inside the window to show that Midi-X is receiving the midi message. Now check out the @{"demos" link "Demos" 0} highlighting features of Sample-X and the @{"screen layout" link "ScreenL" 0} section on how to use this program. There are actually two versions of Midi-X, one entitled @{b}Midi-X@{ub} and the other entitled @{b}rMidi-X@{ub} (or 'raw Midi-X'). rMidi-X communicates with the serial port directly and therefore does not need the @{b}midi.library@{ub}. If you're using rMidi-X then double-click on "Quick-rMidi-X". @{fg shine}NOTE:@{fg text} Midi-X is a bit more comprehensive than rMidi-X because it uses the midi.library and it does possess a tooltype MIDIPORT. This allows you change the input (via the midi.library) for Sample-X so that the midi data could come from the output port of another task using the midi.library. tooltype MIDIPORT=MidiIn -------> the serial port Check out the example program @{"DrumPad" link "DrumPad" 0}. @endnode @node "DrumPad" "DrumPad" @{b}DrumPad@{ub} demonstrates the usefulness of the midi.library (thanks Bill). It has a tooltype MIDIPORT which allows you to specify the name of its output data port which is made public and can be seen by other programs. TOOLTYPE ---> MIDIPORT=drumPad or CLI flag -o drumPad Start up DrumPad (in the drivers drawer) and you will see a window with four numbered pads on the Workbench screen. Pressing the buttons sends a NOTE ON/NOTE OFF message to its output port - each pad sends a middle C note at maximum velocity to a separate midi channel (ie pad 1 to channel 1, pad 2 to channel 2, etc). Okay with DrumPad up and running you need to get Midi-X ready (if Midi-X is already running at this point then quit it). Change the MIDIPORT tooltype of Midi-X so that instead of reading data from the serial port (default setting) it reads data from DrumPad, ie TOOLTYPE ---> MIDIPORT=drumPad Now the procedure for running Midi-X is the same as @{"before" link "SamXmidX" 0}. Start Sample-X followed by Midi-X. @{i}(If all the above is too much to digest then instead of performing the action above, just double-click on the icon entitled @{b}@{ui}Quick_DrumPad@{i}@{ub}. This is a script which will automatically run the three programs DrumPad, Sample-X and Midi-X.)@{ui} If all goes well, the Sample-X screen will appear after a short while. From the @{i}File@{ui} section of the menu strip choose @{i}Load Setup@{ui} to bring in the "Loopism.st" session. Now if you click on the pads in the DrumPad window (Workbench screen) you'll hear sample loops go on and off (...it shouldn't take you too long to get all four loops to groove together @{fg shine}:-)@{fg text}). Clicking on the close gadget of DrumPad will it exit. Clicking on the close gadget gof the Midi-X window terminate Midi-X and cause Sample-X, if not in Suspend mode, to shutdown automatically. DrumPad demonstrates that any program which is "midi.library" aware can talk to Sample-X. And of course the DrumPad is not tied to Sample-X. It can broadcast its output to any other program. (Technical: Midi-X, through the use of the midi.library, looks for a public output port - MSource structure - with the specified name. The foreign program, eg DrumPad, should create this public port) @{fg shine}REMEMBER@{fg text} Comment out the tooltype MIDIPORT in Midi-X when you want it to receive midi data from the serial port, otherwise Midi-X will fail the next time you launch it without having launced DrumPad. TOOLTYPE --> (MIDIPORT=drumPad) Alternatively, if you only occasionally use DrumPad then it may be better to run Midi-X from the CLI with Midi-X -i drumPad or just use the "Quick_DrumPad" icon. @endnode @node "ScreenL" "The appearance of Sample-X" @{b}Menu@{ub} @{"File     " link "MFile" 0} @{"Options  " link "MOpts" 0} @{"Channel  " link "MChan" 0} @{"Sample   " link "MSam" 0} @{"Help     " link "MHelp" 0} @{b}Windows@{ub} @{"Channel Configure " link "WChancon" 0} @{"Channel Info      " link "WChaninfo" 0} @{"Select            " link "WChansel" 0} @{"Sample Info       " link "WSaminfo" 0} @{"Sample view       " link "WSamview" 0} @{"Suspend           " link "WSuspend" 0} All windows except Select can be 'iconified' to titlebar strips which help to avoid screen clutter. @endnode @node "MFile" "File menustrip" @{b}New@{ub} Initialise the whole set-up of Sample-X. The effect is to remove all samples from memory and all channel assignments of samples. A requester will pop-up asking for confirmation of an operation which causes complete loss of data. Parameters such as volume and pan on the midi channels are then restored to their default values. @{b}Load Setup@{ub} Load in a session which describes the set-up of sample assignments on all sixteen midi channels. Loading in a new session clears the present session in memory. @{b}Save Setup@{ub} Save the current session. All samples currently loaded, and their assignments (or layouts) on the sixteen midi channels, are recorded in a file for reloading at a later date. Parameters for midi channel information (panning, volume) are also saved. If the current session involves disk samples, then Sample-X will warn the user to move the disk samples to the same directory where the set-up has been saved. This is so that it can find them easily when the set-up is loaded at a future date. Owing to possibly the huge size of disk samples, it's impractical to save the disk-played samples along with the set-up. @{b}Audiomode@{ub} Changes the AHI driver which Sample-X uses to play the samples. Please note that the effect takes place the next time Sample-X is launched. @{b}Screenmode@{ub} Changes the resolution and display type of the screen used by Sample-X. Please note that the effect takes place the next time Sample-X is launched. @{b}Palette@{ub} Permits the user to change the screen colours. If the changed colours are recorded with @{"save settings" link "MOpts" 0} then Sample-X will henceforth start with those chosen colours. @{b}Suspend@{ub} Cause Sample-X to enter suspend mode, which is compatible with Music-X. The procedure is as follows. After selecting the suspend menu option, a window will pop-up with a bouncing ball in its interior (you can at this stage abort this operation if you do not really want to continue). Now you can execute the suspend option in Music-X ...and allow some other program to use the serial port or do whatever you want. All operations in Sample-X will also be suspended. When you select the resume button from the Music-X screen, the pop-up window on the Sample-X screen will disappear and Sample-X with function as normal. @{fg shine}CAUTION@{fg text}: this function can have drastic consequences (ie loss of data in Sample-X) if mishandled. Check out the @{"trouble shooting" link "TroubleS" 0} section for some unexpected action. Here's an example of the power of the suspend function. Start Sample-X followed by Music-X and then choose the suspend function from the Sample-X screen. Now quit the program Music-X which leaves the Sample-X screen inactive. If you now start Midi-X, Sample-X will become active again. Therefore this procedure has simply changed the task which transmits the midi data to Sample-X without the latter having to unload. Ah, the joys of multi-tasking (yeah, I'm a biased Amiga user). @{b}About@{ub} Gives information about the current version and author of Sample-X. Details of the registered user may also be displayed. @{b}Quit@{ub} A pop-up requester will ask for confirmation of the action and then the Sample-X screen will close. A window will then appear on the Workbench screen stating that Sample-X is @{i}waiting for friendly task to quit@{ui}. If you now close the Midi-X window or choose the quit option from Music-X, Sample-X will completely quit and the notification window (Terminate) will disappear. Of course it is possible to leave Sample-X without using its quit option - simply click on the close gadget of Midi-X or choose the quit option from Music-X and Sample-X will exit immediately. @endnode @node "MOpts" "Miscellaneous" @{b}Filter @{ub} Turns the Amiga audio filter on and off. @{b}Save settings@{ub} Save settings about the current set-up in Sample-X and use them next time the program is launched. This includes the hardware filter, choice of screen mode, audio mode and the position of open/closed windows on the Sample-X screen. @{b}Load Key@{ub} In the event that user forgot to his place registration key file in the Sample-X directory, he can place the key in the correct place and then choose this menu option. Sample-X will then attempt to load the key and thus allow channel and session set-ups to be saved. @endnode @node "MChan" "Channel menustrip" @{b}Load Channel @{ub} This option loads in a pre-configured midi channel with or without samples onto the currently selected midi channel in the @{"Select window" link "WChansel" 0}. If the sub-menu option @{i}"with samples"@{ui} is chosen, then the channel set-up and the samples it uses are loaded. If the samples used are already in memory, that is they appear on the list in the @{"Sample Window" link "WSaminfo" 0}, then they will not be loaded again. The sub-menu option @{i}"no samples"@{ui} is then useful in this case. If however the samples specified in a channel set-up are not pre-loaded, then loading the set-up will be unsuccessful or partially successful. An error message will pop-up for each sample specified in a channel set-up which is not already loaded. @{b}Save Channel @{ub} This option performs the opposite action to Load Channel. Once a midi channel has been configured with samples, it is possible to save it with or without the samples to file. The @{i}"no samples"@{ui} option permits the recording of different assignments (ie different channel setups) of the same sample which could appear on ALL sixteen midi channels without unnecessarily saving the same sample sixteen times. @{b}Flush Channel @{ub} All the assignment of samples on the midi channel(s) can be removed by selecting @{i}"current"@{ui} for the current midi channel or @{i}"all"@{ui} for all for all sixteen midi channels. Note this option is different to @{"New" link "MFile" 0} because it cleans the midi channels but preserves any samples already in memory. @{b}Replace@{ub} This menu options allows you to substitute one sample for another. This is useful if you already have a sample configured on a midi channel and you want to test whether another sample would sound better in its place. First you must have the Sample Info window open and you must select a sample to replace. Upon selecting the 'replace' menu option, another sample list window will appear. Choose the replacement sample. Select 'replace' to confirm action or 'cancel' to abort. @endnode @node "MSam" "Sample menustrip" @{b}Load Sample@{ub} Used to load samples which should be of Exiff format. Sample-X is capable of loading mono or stereo IFF samples and WAV/AIFF samples (8/16bits) which are then automatically converted to the Exiff format. Looped samples must loop to the end for them to be recognised correctly. If Sample-X does not understand the format of the sample, it will provide an option to load it as a RAW sample which can then be subsequently configured. Sample-X will attempt to change the suffix (@{i}.svx@{ui} or @{i}.iff@{ui}) of the sample name to @{i}.xff@{ui} to reflect the change. Information about the loaded sample (which becomes the currently selected one) is displayed in the @{"Sample Window" link "WSaminfo" 0}. Currently the maximum number of samples in memory at any one time is 64. @{b}Save Sample@{ub} Used to save samples after some of its parameters have been modified. All samples are saved in Exiff format. Saving @{i}disk@{ui} samples only saves parameters such as priority, the envelope, etc. It does not save the sample data. Furthermore, changing the filename for disk samples in the file requester has no effect (the saved filename must be the same as the loaded filename). The user may notice a brief silence in audio play when saving a modified disk sample. The reason is that is not possible to play (read) a sample file which is simultaneously being written. @{b}Flush Sample@{ub} With this option the @{i}"current"@{ui} sample or @{i}"all"@{ui} the samples currently loaded can be flushed. This operation is different from the @{"New" link "MFile" 0} menu option since it preserves the settings such as volume and panning for the sixteen midi channels. @{b}Disk Toggle@{ub} It is possible to change a sample's playback source using this menu option. Thus a sample which plays from RAM will subsequently play from disk and vice versa. NOTE: this menu option does not work with wave nor looped samples. When converting a disk sample to RAM sample, Sample-X will attempt to load the whole sample and the report success or failure. When converting a RAM sample to a disk sample, Sample-X will prompt you for a filename. On succcess, the converted sampled will appear in the Sample info window. It is not necessary, but it is suggested that you keep disk samples in one directory. @{b}Configure@{ub} The submenu options listed below are used for configuring only RAW samples. They are not conversion routines for normal samples, that is those which are not marked (raw) in the @{"Sample Info window" link "WSaminfo" 0}. The objective is to configure a RAW sample of unknown format so that it is heard correctly in SampleX. @{i}8 <-> 16 bits@{ui} It is possible that the RAW sample is composed of 8bit or 16bit sample data. This option toggles between the two possibilities to give an idea of how Sample-X should treat the sample. @{i}Mono <-> stereo@{ui} The sample data may consist of mono data or interleaved stereo data. @{i}Unsigned <-> Signed@{ui} Sample-X (or more precisely AHI) requires samples to be in signed format which means that 8bit sample values span from -128 to 127 and 16bit sample values span from -32768 to 32767. Unsigned samples (8bit, 0 - 255 ans 16bit, 0 - 65535) will not play correctly unless they are converted. @{i}Byte swap@{ui} Primarily here for changing between Amiga-based Mortorola 16bit format (MSB/LSB) and Intel 16bit format (LSB/MSB). This option will probably be needed if Sample-X loads RAW a sample which can from an Intel-based (nearly all :) computers. @endnode @node "MHelp" "On-line help facility" @{b}Main@{ub} Bring up the on-line documentation which explains the various features of Sample-X. @endnode @node "WChancon" "Channel configure window" After the Sample Info window the @{b}Channel configure@{ub} window is problably the second most consulted view. The area has a rendering of two keyboards which correspond to the 128 possible notes (0-127) in the MIDI implementation. The top keyboard spans midi notes 72 - 127 (c6 to g10) and the bottom keyboard spans notes 0 - 60 (c0 - b5) - please note that there are some keys to the far right of the top keyboard (midi note > 127) which are not selectable. Clicking on one note followed by a click on another note will cause an update to the @{b}MidiKeys@{ub} and @{b}Range@{ub} boxes. Furthermore a brown strip covering your selected range will appear above one or both of the keyboards - if your selected range spans only one note then a white solid box will appear over the selected note. Clicking just below a note (that is just below either keyboard strip) causes a white hollow box to appear. This corresponds to the pivot note and appears in the @{b}Pivot@{ub} box. @{b}Playkey@{ub} square This is used to turn on/off a tracking square which moves along the keyboard in the Chancon window according to the midi data received by Sample-X. Midi data must be arriving on the currently selected channel in the Select window for the effect to appear. When the user clicks and holds the left mouse button inside the raised square to the right of the window (causing it to be filled with brown), a solid brown tracking square will move along the keyboard according to the midi data present. The value of the tracked note is also displayed in the @{b}Playkey@{ub} box. The option here is provided primarily for keyboard users to aid the laying down of samples. @{b}Assign@{ub} button (tick icon) This 'assign' button lays down the currently selected sample across the specified note range (the brown strip appearing above the keyboards(s)) for the currently selected midi channel. It is important that this button is clicked otherwise changes made to the note range will not come into effect. @{b}R@{ub} button (cross icon) This 'removes' the note range specification for a sample on a channel. If a note range for a sample has been specified incorrectly, then define the correct note range again and click on the @{b}A@{ub} button since it is not necessary to use the @{b}R@{ub} button. The channel configure has the following effect. If a midi note equivalent to the pivot note arrives, then a sample will playback at the rate specified in the @{"Sample Info window" link "WSaminfo" 0}. The arrival of a midi note lower than the pivot note causes the sample to be played back at a slower rate (ie lower pitch) and vice versa. It is possible to assign other samples to the same midi channel by selecting them, specifying their note ranges and assigning them. At any time you can verify the note range specification for a particular sample on a channel by choosing that sample in the @{"Channel Info" link "WChaninfo" 0} window. Note that it is not possible to have note ranges for different samples which partially overlay each other (ie each range is mutually exclusive). Furthermore, it is not possible to have two separate note ranges for one sample on the same midi channel. Check out the @{"trouble shoooting" link "TroubleS" 0} section if you still have trouble getting a sound out of Sample-X. @endnode @node "WChaninfo" "Channel window" The @{b}Channel Info@{ub} window gives details about the currently selected midi channel from the @{"Select" link "WChansel" 0} window. @{b}Volume@{ub} This field, which can also be updated from midi, affects the playback volume of all samples on that channel. A value of 127 gives maximum volume playback whilst 0 effectively silences the sample(s). This function gives real-time volume control during any stage of the playing sample. @{b}Pan@{ub} The effect of the panning value entered here depends on the AHI audio mode selected. In a mode with panning, you'll noticed that stereo and mono samples can be moved from left to right within the stereo field. However in non-panning AHI audio modes, all samples appear in the centre. The pan feature can also be employed for sample-morphs or cross-fadings. See @{"demos" link "Demos" 0}. The midi channel pan value can be updated through MIDI through controller number 10. @{b}P bend@{ub} The real-time pitch bend feature allows the pitch of samples to be altered continuously. This P bend value states the maximum pitch alteration when the pitch-bend wheel on a master keyboard is moved to its extreme position. A valid p-bend value is from 0 semitones (no pitch change) to 12 semitones (one octave). @{b}P Offset@{ub} This display shows the current pitch-bend setting for a midi channel and it reads from -64 to +63. The greater the value (negative or positive) thet greater the deviation of a sample's playback rate from its nominal value. In most cases this value will be 0 which is especially true of midi keyboards which have spring loaded pitch-bend wheels that always return to their centre (0 pitch-bend) position. However, it is possible to send arbitrary pitch-bend values from say Music-X to Sample-X, so if samples sound out of tune, this p offset reading is handy. @{b}W Offset@{ub} This displays shows the current @{"wave" link "Stypes" 0} offset which can range from -8 to +7. If wave type samples are not playing correctly then consult this reading. See @{"Sample View window" link "WSamview" 0} for how wave type samples are handled. @{b}NOff@{ub} switch This button determines whether a particular midi channel will respond to NOTE OFF message. If it not checked then Sample-X will ignore NOTE OFF midi messages. This is invaluable for playing loop samples or long disk samples where it would be necessary to hold a key down on a keyboard for a long time. Assuming that you have @{"a configured sample" link "WChancon" 0}, you simply press a key to start it, then press the same key to stop it. @{b}M@{ub} switch This button turns on and off the mute facility of a channel. When it is ticked any samples from that channel which are currently playing are stopped and the Sample-X no longer responds to any new midi notes for that channel. The channel can be made active again by clicking on the switch again to clear the tick. @{b}P@{ub} switch This button specifies whether the channel is monophonic (unticked) or polyphonic (ticked). With a monophonic setting it is not possible for two samples assigned to the same midi channel to play at the same time. The polyphonic mode allows the samples to play simultaneously. @{b}Rev@{ub} switch @{b}FX@{ub} switch @{b}Update@{ub} button (question mark icon) This button updates the Channel Info window. Parameters such as the volume, panning and pitch-bend can be altered through midi and so the window values are not always strictly in sync with the true midi channel parameters. Of course, the updates could have been done automatically according to the midi data arriving, but the objective is to limit the number of graphic updates as with the @{"Play Key" link "WChancon" 0} option. @{b}Samples used@{ub} This list view indicates the samples (alphabetically ordered) which have currently been assigned to midi note ranges on the currently selected channel. Clicking on a sample causes important updates in the @{"Sample Info" link "WSaminfo" 0} and @{"Channel configure" link "WChancon" 0} windows. If there are no samples in the list view, then there will be no sound heard for midi notes arriving on that particular channel. Therefore it is important to @{"configure a midi channel" link "WChancon" 0} before trying to use it. @endnode @node "WSaminfo" "Sample window" The @{b}Sample Info@{ub} window holds detailed information about samples currently loaded into Sample-X. The large display to the left alphabetically lists all the samples which are currently loaded. Clicking on any sample makes it become the currently selected item. In the middle of the Sample Info window is a description of the selected sample. Its name appears in an editable box followed down below by its TYPE - (mono or stereo) where (L) indicates that it's looped. The type box may also display a (W) which indicates that the sample is of @{"wave" link "Stypes" 0} type. RES - 8bit or 16bit resolution SOURCE - RAM (Chip/Fast) or Disk for disk sample LENGTH - xxxxx bytes. This figure is for one channel only, so the length of a stereo sample is twice the displayed value. To the right of the window are some editable fields. These are @{b}Sample priority@{ub} Entering a value between 0 and 99 determines the importance of a sample when playing on one of the 32 Amiga audio channels. The higher the number the less likely the sample will be stopped during playback if new midi notes (and therefore samples) arrive for playing. The feature is very handy for playing uninterrupted disk samples. @{b}Rate@{ub} This field refers to the playback frequency of the sample at the pivot note. The higher the frequency the higher the pitch of the sample and vice versa. samples per second which is calculated on from the PAL/NTSC clock. This box is automatically updated when the period field is altered. The maximum frequency is 56KHz although whether the sample can play at this rate depends on the AHI audio mode in use. @{b}Waves@{ub} This non-editable field specifies the number of waveforms which compose a wave type sample. @{b}Audition@{ub} button (speaker icon) This is the audition button and it allows you to hear the sample before configuring it on a midi channel. It is important that the mute facility (in the @{"Channel info window" link "WChaninfo" 0}) of channel 1 is not checked in order to hear the sample. Furthermore, if you wish to play the sample in reverse or with the delay effect, then the corresponding flags for midi channel 1 must be checked. The sample plays back at its default rate. @{b}Stop@{ub} button (crossed speaker icon) Stops the auditioned samples. In fact, it actually signals the sample to play its NOTE OFF section which may or may not result in the sample going straight to silence. For a better understanding, see the envelope section in the @{"Sample" link "WSamview" 0} @{"View window" link "WSamview" 0}. @{b}Loop@{ub} button This turns off or turns on the loop facility of samples (useful for drum loop samples). This looping facility is limited since it is not possible to set the start and end positions of loop. NOTE: this option does not work with wave type nor disk type samples. AHI Driver This panel indicates which AHI audio mode is currently in use. The 'DEFAULT' mode is a simple 8bit mono mode. Therefore panning effects are unnoticeable. @endnode @node "WSamview" "Sample View window" The @{b}Sample View@{ub} window displays a plot of the sample which is currently selected in the @{"Sample Info" link "WSaminfo" 0} window. Mono and pseudo stereo samples use the top (or left channel) plotting area while stereo samples occupy the top and middle plotting areas (left and right channels). Disk samples which are not plotted are indicated by a diagonal line through the top plotting area. NOTE: there are no sample editing features available. The bottom plotting area displays either a volume envelope or, if applicable, wave envelope for a sample. The volume envelope consists of five adjustable boxes which are linked. Moving each one vertically gives a reading between 0 and 127 in the @{b}Vol@{ub} box. When a sample is triggered its volume will change according to the envelope graph. How quickly Sample-X will move through the envelope (from left to right) depends on the value specified in the @{b}Rate@{ub} box - low values give a quicker update. The special brown envelope box is known as the sustain box and it indicates the point where Sample-X should stop moving along the envelope after receiving a midi NOTE ON message to trigger the sample. The envelope section to the right of the sustain box represents how the sample volume changes when Sample-X receives the midi NOTE OFF message. Use the sustain buttons (icons with miniature envelope graphs and left/right arrows) to change the sustain box. @{b}Wave EG@{ub} switch This switch changes the envelope display to show the wave envelope if the sample is of wave type. If any of the envelope boxes are moved then the @{b}Wave@{ub} box displays the selected waveform out of all those composing the wave type sample. When a wave sample is triggered, it will go through its waveforms according to the wave envelope graph. The actual waveform played depends on the value in the envelope graph AND the wave offset value specified in the midi channel. For example a wave sample may consist of ten waveforms, and its (ramping) envelope has been configured to play waveforms 5 to 8. If the sample is playing from a midichannel whose wave offset is -2 then Sample-X will actually play waveforms 3 to 6. Also note that the @{b}Rate@{ub} box changes to reflect the update rate of the wave envelope. The wave change buttons (icons containing mini sample plots with up/down arrows) can be used to go through the different waveforms if the currently selected sample is of wave type. If the @{b}doWave@{ub} gadget is not checked then the currently selected waveform, whose number appears in the @{b}W#@{ub} box, is heard on pressing the audition button in the @{"Sample Info window" link "WSaminfo" 0}. Otherwise, if the doWave gadget is checked then Sample-X will play the wave envelope which may or may not result in the play of the different waveforms. @endnode @node "WSuspend" "Suspend window" The @{b}Suspend@{ub} window pops up following the selection of the Suspend option from the @{"File" link "MFile" 0} menu strip. All audio is stopped and Sample-X becomes inactive. A bouncing ball in a window notifies the user that Sample-X is still running but not doing much. The @{b}abort@{ub} button causes the pop-up window to disappear and Sample-X will resume normal operation. The suspend option could prove beneficial to those users who are also running Music-X. @endnode @node "WChansel" "Select window" The @{b}Select@{ub} window provides a slider which controls the overall (or master) volume of all samples played by Sample-X. At the top of the slider (200%) is maximum volume, which can be used to boost very quiet samples. However, if there are many samples playing then distortion (from digital overload) may occur. A safe bet is therefore to keep the master volume below 100%. The bottom of the slider (0%) is miminum volume which in effect gives silence even though samples may be playing. The column of 16 buttons allows the user to choose which of the 16 midi channels to view. Clicking on one of the channels will update information in other windows which display information relevant to that channel. See the @{"Channel configure" link "WChancon" 0} window for example. @{b}Cutall@{ub} button (crossed speaker icon) This causes all samples which are currently playing on any of the midi channels to cease playing. It does not stop any samples which are subsequently triggered. The button is primarily used to stop the audio if there are any hung midi notes. If the user wishes to stop all audio on a midi channel then check the mute button in the @{"Channel Info." link "WChaninfo" 0} window. @{b}Delay FX@{ub} Please note than when using the delay fx panel, 8 out of the 32 channels allocated by AHI are reserved for the fx. That is you have up to 8 polyphony for effected (WET) samples and up to 24 polyphony for dry samples. It is not possible to set the amount of effect for each midichannel... there is only one global setting which is changed in the Channel select window. Please also note that using the delay effect takes up a lot of processing time and you will therefore occasionally noticed a slowdown in Sample-X's performance (well I do on my 68030), especially if you're running Music-X as well. Turn this effect of when not in use. @{b}Time@{ub} This provides the time in milliseconds between successive delays. Set to a short value (10) for a vocoder/flamming effect and a longer value (500) for a more echoey effect. @{b}Wet@{ub} This provides the balance between the Wet and Dry signal of an effected sample. A setting of 0% means play just the dry signal, which is how the sample sounds without any effect. A setting of 100% means play just the only the Wet signal, which is how the sample sounds after its been through the delay processor. A desirable setting is anywhere between these two extremes. @{b}Feedback@{ub} This slider determines the percentage of processed signal which fed back into the processor. A value of 0% means that no signal if fedback and therefore the resulting sound will typically the dry sample signal followed by ONE wet sample signal at the set delay time. A higher feedback value will result in more and more wet sample signals being heard at the delay interval time. @endnode @node "TroubleS" "Trouble Shooting" The trouble shooting sections below highlights some of the common obstacles which may occur when using Sample-X. If however, you have a problem which cannot be resolved, possibly through a bug in the program, please feel free to @{"contact me" link "BugR" 0}. @{"Sample-X causes system crash" link "FPUWoes" 0}. @{b}Sample-X does not start@{ub} It may have already started and it's waiting to hear from Midi-X or Music-X. If Music-X or Midi-X is not started within ten seconds of launching Sample-X then Sample-X will pop-up a window saying @{i}"No response from ExtendX"@{ui}. Simply start Sample-X again followed by Midi-X or Music-X. Make sure that you have the AHI system installed. Sample-X relies on it to produce any sound. @{b}Midi-X cannot start@{ub} If you fail to start Sample-X before Midi-X, then the latter will complain. The start procedure is Sample-X followed by Midi-X. In the case of starting Music-X without Sample-X, Music-X will not complain but it will not send any data to the internal midi stream used by Sample-X. Check the tooltype MIDIPORT for Midi-X. For the progragm to receive data from the serial port, MIDIPORT should be set to 'MidiIn' or the tooltype should not be specified at all. @{b}xphantom/Midi-X/rMidi-X/bpMidi-X@{ub} All these drivers have a secondary name of @{fg shine}Extend-X@{fg text}. Only one version of Extend-X can communicate with Sample-X at any one time. If for example, you run Sample-X with Midi-X and then start bpMidi-X, the latter will complain stating that it is already running. @{b}Suspend function NIGHTMARE!@{ub} If you select the suspend function in Music-X without first selecting the Suspend option in Sample-X, then the latter will exit leaving you with just the Music-X screen. It will then not be possible to send any more midi data to Sample-X. You must get the procedure correct. Suspend from Sample-X before suspending from Music-X. It is advisable to try out this option without any important data loaded into Sample-X so that if the unexpected exit does occur it will not be too drastic. @{b}Music-X cannot...@{ub} find xphantom driver - the xphantom driver is not present in the DEVS:midi drawer. initialise xphantom driver - FATAL, either the driver is corrupted or Sample-X is not responding correctly. see xphantom driver - the tooltypes for the Music-X icon have not been edited. In all the above cases consult @{"Sample-X and Music-X" link "SamXmusX" 0}. @{b}No sound@{ub} Samples need to be configured on midi channels before they can be played by an external keyboard or Music-X. However they can be auditioned from the @{"Sample Info window" link "WSaminfo" 0}. Although the midi channel has been configured correctly, midi input is actually appearing from a different channel - a typical mistake I make when assigning samples on channel 1 and having my keyboard set to output midi data on channel 2. In Music-X, the external bank to which midi data is sent for a sequence does not correspond to the bank (typically Ext2) for Sample-X. To find the correct bank, look at the sync-in bank from the @{i}Sync@{ui} heading in the Music-X menu. The number in the left-hand column represents a driver's bank number. Look for xphantom. @{b}Error@{ub} "Specified assignment not done " - If you try to specify a note range for a sample which is already occupied by another sample or other samples then Sample-X will complain. Select the samples in the @{"Channel Info" link "WChaninfo" 0} window to see which sample or samples are occupying the requested note range. @{b}Delayed or hanging notes @{ub} Sometimes if you're passing on a lot of midi data very quickly to Sample-X then you may hear the odd note start too late or go on for longer than it should. It basically means that your computer can't keep up with the amount of data being shifted. Sample-X communicates with Midi-X through an internal midi stream which runs at 4000 bytes per second (or 32000 bits per second - 32000 baud) which approximates the standard MIDI serial rate. So basically your computer is trying to service this stream, the serial port AND other running tasks. Your best bet is to either i) reduce the amount of midi data transferred or ii) not use (preferably close down) other programs such text editors or drawing tools, etc while running music sequences. And for Music-X users, turning off the Scroll facility on the Bar Editor Page definitely helps. Point ii) also holds true when you modify things on the Sample-X screen which lead to a lot of graphical update, but you don't want to close down that screen do you :-) ? @endnode @node "Glossary" "Glossary" Some important terms appearing in documentation. @{b}Audio channel@{ub} Refers to one of the 32 sound channels used by Sample-X (via AHI). @{b}Driver@{ub} A piece of software through which Music-X communicates with items of hardware. The @{i}internal@{ui} driver allows Music-X to send and receive midi messages on the internal Amiga serial port while the @{i}xphantom@{ui} driver allows Music-X to send only midi messages to a phantom device, Sample-X, which is really just a piece of software. For Sample-X there are four drivers (xphantom, rMidi-X, midi-X and bpMidi-X) which can communicate with it. @{b}MIDI@{ub} Musical Instrument Digital Interface. A protocol used between hardware units for the transfer of notes and other messages relating to musical information. In total sacrilege, I've used midi instead MIDI in some places of the documentation. Shame! @{b}midi channel@{ub} This is one of the sixteen lines on which notes can be transmitted. Each line has a note span of 128 notes or different pitches and each line has its own parameters such as volume, panning and pitch-bend. @{b}Monophonic (MIDI)@{ub} Only one note from a midi channel can sound at one time. This action is similar to a trumpet or flute playing. @{b}Mono or monophonic (audio)@{ub} Refers to the reproduction of sound through one transducer channel (eg a loudspeaker). This is typical on small wireless units. @{b}Panning@{ub} The moving of a sample in a stereo field so that the sound appears to emanate from a particular location such as the far-left, far-right or just right of the centre. @{b}Polyphonic (MIDI)@{ub} A mode in which two or more notes from the same midi channel can be played simultaneously. This behaviour is similar to a guitar or piano. Sample-X can play up to 32 samples simultaneously. @{b}Session/Setup@{ub} This is the whole set-up of data within Sample-X at any point in time. It contains the information relating to the all the loaded samples, their configuration on the midi channels as well as the channel specific stuff like volume and panning. It is possible to save a snapshot of this data to file for use at a later date. Therefore there is no need to load samples and configure channels each time Sample-X is loaded. @{b}Stereo (audio)@{ub} Refers to the reproduction of sound through two transducer channels. This set-up is demonstatred in hi-fi systems. The noticeable difference from a monophonic sound is the added realism resulting from the ability to locate certain sounds in 2D/3D space. This also reflects how the human being perceive sound with his two ears. In Sample-X a maximum of two stereo samples can be played simultaneously. @{b}Wave (sample)@{ub} A wave sample is composed of two or more waveforms which may or may not bear some resemblence to each other. Only one of the waveforms is played at any one time. It is useful for creating (on a restricted level) wave sequences as found on Korg synthesizers to produce rhythmic effects of different instruments, and it is also useful for performing filter emulation (something which is at the heart of synthesizer music which is sadly missing from the Amiga sound circuitry). Check out the @{"demos" link "Demos" 0} on how to employ wave sequences. @endnode @node "Un2xff" "Sample conversion to Exiff format" @{b}Un2xff@{ub} (unknown format to Exiff format) is a conversion program for changing raw samples to the native format used by Sample-X. It would have been so much easier to use the IFF file format but its specification is too limiting, thus the Exiff format. At the moment there is only this CLI converter so check out the documentation @{b}Un2xff.doc@{ub}. Alternatively, use the menu option to load IFF, AIFF and WAV samples into Sample-X which are then automatically converted. Stereo samples are handled. @{b}Touchxff@{ub} allows you to view the contents of set-up, channel or sample files created by Sample-X (just in case you've forgotten which samples you used in a particular session). Furthermore touchxff can be used to convert - In memory samples to disk samples and vice versa @{i}HINT:@{ui} If you have enough RAM, the quickest way to create a disk sample from a known format such as IFF, WAV or AIFF is to load the sample into Sample-X and then save it (in Exiff format). Use touchxff -i sample.xff -d which will convert it into a disk sample. You can then load this sample back into Sample-X. @endnode @node "MidiI" "Sample-X MIDI implementation" Sample-X responds to the following midi information. @{b}Note Off@{ub} Sample-X moves to the Note Off section of a sample's volume envelope and (possibly) wave envelope (see the @{"Sample View window" link "WSamview" 0}). This may or may not result in the sample being cut-off abruptly. @{b}Note Velocity@{ub} The higher the velocity the louder the samples are played. @{b}Channel pitch-bend@{ub} The pitch-bend value extends from 0 to 127 which corresponds to the extreme up/down (left/right) positions of the pitch-bend wheel on the midi keyboard. The amount of pitch-bend applied to a sample is dependent on the pitch-bend value for the midi channel (see @{"Channel Info window" link "WChaninfo" 0}). --- MIDI CONTROLLERS --- @{b}Channel volume@{ub} (controller number 7) Sample-X looks for volume information on controller number 7. All playing samples which belong to the specified midi channel are affected by this command. @{b}Channel panning@{ub} (10) This is standard for all MIDI devices implementing this feature. The pan value causes a sample to locate to the far-left (0), the far-right (127) or somewhere in between, eg the middle (63), in the stereo field. @{b}Waves@{ub} (16) Sending controller number 16 a @{b}wave@{ub} number (0-127) will determine the offset of @{"wave" link "Stypes" 0} samples on that midi channel. The given value (0 to 127) leads to an offset of (@{fg shine}-8@{fg text} to @{fg shine}+7@{fg text}) with 0 corresponding to @{fg shine}-8@{fg text}, 64 to @{fg shine}0@{fg text} offset and 127 to @{fg shine}+7@{fg text} offset - the quick calculation is (@{b}wave@{ub} / 16) - 8. See @{"Sample View window" link "WSamview" 0} to see how this offset affects how wave type samples are played. NOTE: this has the effect of updating all samples of wave type on a midi channel. @{b}Disk wait @{ub}(19)@{b} / Disk trigger @{ub}(20) When a NOTE ON message arrives for a disk sample, the sample is usually triggered straight away. Owing to the initial delay caused by reading the first bit of data, it may be difficult to get disk samples to trigger on time. The solution here is to use the disk wait controller. Sending controller 19 with non-zero value turns on the WAIT FOR TRIGGER option otherwise it triggers disk samples immediately. Sending controller 20 will trigger any disk samples waiting to play for the specified midi channel. @{i}Procedure@{ui} controller 19 , 5 - Turn on WAIT FOR TRIGGER option NOTE ON - Read Disk Sample data controller 20 , xxx - Trigger sample NOTE OFF . . controller 19 , 0 - Turn off WAIT FOR TRIGGER option NOTE ON - Read and trigger disk sample xxx - don't care @endnode @node "Demos" "Demos" Here are the juicy demos!!! @{"Music-X users" link "MusXdem" 0} @{"Midi-X users " link "MidXdem" 0} @{" DrumPad     " link "DrumPad" 0} @endnode @node "MusXdem" "Demos for Music-X" @{fg shine}NOT AVAILABLE IN VETA VERSION 1.5@{fg text} Please not that the demos assume that bank @{b}Ext2@{ub} in Music-X is configured for Sample-X, if it is not then you will have to change the bank out of the sequences in the demos for them to work correctly. This message is probably aimed at a few people since most users will be using Music-X with the internal serial port only. @{b}Demo@{ub} You need to load up the Performance "sxdemo.perf" (in @{i}setup@{ui} subdirectory) into Music-X and the setup "SXDemo.st" into Sample-X (use the @{i}Load Setup@{ui} option from the menu). On the Sample-X screen, midi channels 1 - 4 have been configured. On the Music-X screen, hit the BEGIN button. Press the Escape key on your Amiga (..to flush any midi notes). Hit the PLAY button and listen. Some of the triggering may be slightly off because samples are competing for the four channels. See how the demo sounds different when played in Polyphonic (2) mode (selected from the menu). NTSC screenmode users may experience further anomalies because the sample rates will be a bit different from under PAL screenmodes. Try playing around with the samples on the Sample-X screen and/or even the sequences in Music-X. The demo encompasses many features of Sample-X In Music-X ---------- SEQUENCE FEATURE buzz Wave type sample (switched filter action) buzz pan Panning information buzz pbend Pitch-bend disk speech Sample play from hard disk, delayed trigger start volume Volume set for the used midi channels 1-4 fading volume Notice that all sequences output their data to Bank Ext2. In Sample-X ----------- SAMPLE FEATURE spdemo.xff Disk (stereo) sample, high priority loop.xff Pseudo stereo sample guitar*.xff Mono sample blip.xff Mono (3 part wave) sample The @{"wave envelope" link "WSamview" 0} on sample 'blip.xff' is left static, that is it appears as a straight line and just plays waveform #1. Controller (16) data from the sequence 'buzz' causes the played waveform to change. controller 16, 65 ----> wave offset 0 ----> play waveform #1 (=1+0) controller 16, 60 ----> wave offset -1 ----> play waveform 0 (=1+-1) The demo itself shows what can be done with the Amiga alone. But it is recommended that your computer augments your other midi sound sources such as, for example a drum machine or a tone module. This is the best way to use Sample-X - not as a tracker program nor a MOD player. Users can also check out the Midi-X demos but instead of launching Midi-X just continue to pass midi data to Sample-X via Music-X. Remember to @{"redirect keyboard input data" link "SamXmusX" 0} to Sample-X. @endnode @node "MidXdem" "Demos thru' Midi-X" @{fg shine}NOT AVAILABLE IN BETA VERSION 1.5@{fg text} I've aimed the demos at keyboard users but they can still be tried by user who don't have a keyboard but do possess some sort of MIDI device which can talk to the Amiga MIDI interface. It is advisable that you have the @{"Channel configure" link "WChancon" 0} window open on the Sample-X screen so that you can use the @{b}Playkey@{ub} button to pin-point where the notes on your master keyboard correspond to notes on the screen keyboard. It's important that your keyboard is transmitting midi data on channel 1. On the Sample-X screen, make sure that the @{i}Playmode@{ui} (in menu) is set to Polyphonic (4) and that the current channel is set to 1 in the Select window. @{b}Demo1@{ub} This demo is a multi-sample assignment to one midi channel. Use the @{i}"Load Channel with samples"@{ui} option (in menu) to load in @{i}"piano.ch"@{ui}. Channel 1 setup now consists of six samples which span just two octaves to give a reasonable sounding piano. The playable range is from midi note C5 (60) to B6 (83). Sample-X responds to note velocity, so if you press a key softly or very hardly and assuming that your keyboard is velocity sensitive, you'll hear the samples playing quietly or loudly respectively. If you now play in the note range C4 to B4 you'll get an organ sound. Use your left hand to play one @{i}organ@{ui} note and your right hand to play up to 3 @{i}piano@{ui} notes. You'll notice that the organ sound (if the relevant key is held down) is never interrupted by the piano sounds. The reason for this is that the organ sample has a higher play priority than the piano samples (see the @{"Sample" link "WSaminfo" 0} @{"Info window" link "WSaminfo" 0}). If you hold down four organ notes and then try to play piano notes, you won't hear the piano sound. Whereas if you hold down four piano notes and then play the organ notes, the organ notes will sound because of their priority. Setting a high sample priority is typically used for disk samples where it is desired that they should not be interrupted. @{b}Demo2@{ub} For this demo you should have the Playmode set to polyphonic (2). Load in the channel @{i}breakbeat.ch@{ui}. If you hold down a key within the key range C5(60) to B5(71) you'll hear a drum loop. If your keyboard has this facility (I use a Roland PC200), set it to send panning information on one of its real-time controllers. The effect is a movement of the drum loop from the left side to the right side according to how you move the controller. For the second part of demo you should (but it's not essential) combine the left and right Amiga audio channels into one so that you lose the stereo width of the sound. If you now play within the note range C4(48) to B4(59) and move your panning controller, you'll hear a morphing or cross-fading from one sound to the other - all done with panning! Click on the party.xff sample in the Sample Info window to select it. In the Sample View window is a plot of its volume envelope. Adjust the position of the boxes to see what effect they have on the sample when a note is pressed and released. Also play around with the pitch-bend wheel on your master keyboard to hear the effect it has. @endnode @node "Thanks" "Acknowledgements" A sincere thank you goes from me to the following people whose tools have helped to spur productivity in the Amiga development community. @{fg shine}Martin Blom@{fg text} For the exceptional AHI system, something which should have appeared ages ago to make audio coding on the Amiga simpler. @{fg shine}Edd Dumbill@{fg text} The author of the AmigaGuide editor which has made it easier for me to enter this documentation. @{fg shine}Michael Sinz@{fg text} For the excellent (do not code at home without it!) Enforcer tool @{fg shine}Matt Dillon@{fg text} For the DICE compiler. @{fg shine}Jan van den Baard@{fg text} Whose GadToolsBox program was at the heart of the Sample-X GUI creation. @{fg shine}Bill Barton@{fg text} For the midi.library. Saved me the headache of interpreting MIDI messages on the serial line. @{fg shine}David Joiner@{fg text} For Music-X which even back then had the open architecture for expansion and thus still sees wide use today. (and last but not least) @{fg shine}Peter Mills@{fg text} Who has been instrumental in suggesting new features and pointing out problems when using Sample-X. @{fg shine}Steve Davis@{fg text} A close friend who helped to test the program and given loads of encouragement and positive feedback. @endnode @node "BugR" "Bug Report" While all of the features of Sample-X have been tested extensively, it is impossible for me to catch every bug. Therefore, please help me by reporting the bugs stating the exact procedure of how you caused them to appear. This will help me immensely in determining how the bug occurred. My objective is to make Sample-X as stable as possible irrespective of its features. I myself use the program in my music set-up so reliability is important. I can be contacted through email: sheun@soi.city.ac.uk tel: +44 181-534-4232 (ENGLAND) @{b}Known bugs@{ub} None. @endnode @node "Copyright" "Copyright" @{b}Sample-X@{ub} and @{b}Midi-X@{ub} (and its variants @{b}rMidi-X@{ub}, @{b}xphantom@{ub}) are the copyright of Sheun Olatunbosun. Other parties hold copyrights to the following software. AHI system - Martin Blom midi.library - Pregnant Badger music. GadToolsBox - Jan van den Baard DICE - Obvious Implementations @endnode @node "Register" "Registration" Sample-X is a powerful addition to your Amiga sound set-up regardless of whether you use it with Music-X or not. By experimenting with the demo version, you'll be able to determine whether the full version is suitable for you. To obtain the full version, send me a cheque, banker's draft or international money order so that the payment, AFTER transfer fee deductions, stands at 25 pounds (British sterling) or $40 US. On receiving payment, I will then send you a personalised key either as a file through email or a floppy disk in standard post. Please state preference and mention full name and (email) address. Name: Sheun Olatunbosun Address: 11 Leywick Street, Stratford, London E15 3DD, ENGLAND Email: sheun@soi.city.ac.uk Account details --------------- Bank: Lloyds Bank, Branch: Stratford, London, ENGLAND Account no.: 00874823 Sorting code: 30 92 90 NOTE: The personalised key allows a user to access the full functionality of present and future versions of Sample-X. @endnode @node "Distr" "Distribution" This software is shareware and it may be freely distributed so long as the archive continues to hold the files in @{b}listing.doc@{ub}. Charging for the software should not be significantly more than the cost incurred from distributing the media. The author grants the right for @{b}Sample-X@{ub} to appear on a magazine cover (floppy) disk or any compact disc collection with the premise being that he is notified of such action. This ruling applies to the unregistered version of the software. In the case of the registered version, under no circumstance should the user distribute his personalised key. @endnode