ࡱ;  vWJKLV  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuwxyz{|}~Root Entry FᶪZCompObjbWordDocumentObjectPool Z#ZZ#Z  !#%()*+,-./013456789:;<= FDocument Microsoft Word 6.0 MSWordDocWord.Document.6; L_5C6sࡱ;   FImage Microsoft Word 6.0 MSWordDocWord.Picture.69qࡱࡱ;  Oh+'0 ܥe= eI(E··4<hj(:Nz$h^hgT\Ysf@:··~··0p····W rev 1. 21, Dec 1996  SAM9407 PROGRAMMERS REFERENCE Overview This document details all the programming information for SAM9407 Windows applications or drivers development. It is shared in 4 chapters WINDOWS API FIRMWARE API FIRMWARE Structures MIDI Implementation  The SAM9407 and Its associated firmware provides the following devices: MIDI DEVICE: Wave table synthesis: 34 to 64 voices of polyphony 16/8 bits samples , any sampling rate, linear interpolation, forward/reverse loop 12/24 dB resonant filter reverb & chorus send ROM and/or RAM download sound bank (up to 8 simultaneous sound bank) MPU401 compliant Complete MIDI implementation described in SAM9407 MIDI IMPLEMENTATION chapter STREAMING AUDIO BUFFER DEVICE: 8 play + 1 record simultaneous tracks format: mono/stereo, 8/16 bits, any sampling rate Play tracks: 12 dB filter, real time sampling rate controller Mode: 2 outputs with reverb & chorus send / 4 outputs STATIC AUDIO BUFFER DEVICE: 34 to 62 tracks format: mono (stereo requires 2 tracks), 8/16 bits, any sampling rate Mode: 2 outputs with reverb & chorus send / 4 outputs looped wave: 16/8 bits samples , any sampling rate, linear interpolation, forward/reverse loop 24 dB resonant filter, real time sampling rate controller 256 K sample maximum size 1 shot wave: 16/8 bits samples , any sampling rate, linear interpolation, forward loop 12 dB resonant filter, real time sampling rate controller no sample size limitation AUDIO IN DEVICE: The audio In device provides stereo input sampled at 39.25 KHz. The audio in signal can be send to the reverb or to the embedded audio in echo. This Audio In can be used to connect a microphone (karaoke application) or an external audio source like a CD audio (94PC32 add on card) or a CODEC (multi-media combo board). In the last example this input gives the ability to add effects (reverb, equalizer & surround) to the CODEC inputs (Line In, Microphone, Audio CD).. REVERB & CHORUS DEVICE Provides 8 reverb + 8 chorus stereo programs compatible with GS standard. EQUALIZER DEVICE: Stereo four band parametric equalizer Default setting 450Hz , 900Hz, 4kHz, 9kHz with +/-12dB band level. SURROUND DEVICE Surround processing enable to expand stereo image of a stereo signal or to create a pseudo stereo image from a monophonic source. Surround signal can be routed either to the main left/right output or to the Auxiliary left/right output. PITCH SHIFTER DEVICE This device may not be implemented in some versions of firmware. The pitch shifter allows to change the pitch of selected sources (Audio in, Midi, Streaming Audio Buffer, Static Audio Buffer) without affecting the tempo. Signal Processing Synoptic  INCORPORER Word.Picture.6  Chapter 1 WINDOWS API DREAM94.DRV driver provides 16bits WINDOWS 3.1 API DREAM95.DRV driver provides 16bits & 32bits WINDOWS 95 API Actually 32bits API are 16bits API converted VIA a thunk. DREAM95.VXD driver provides 32bits WINDOWS 95 API  Windows Multimedia Low-Level Audio Services Dream drivers provides entry points functions to support the Windows audio services: wodMessages widMessages modMessages midMessages auxMessages (not currently supported) Those functions support enable application to use the Windows multimedia services: Auxiliary Audio Device auxiliary audio device services are not supported in the current version Midi Input Device midiInGetNumDevs supported (1 device) midiInGetDevCaps supported midiInOpen supported midiInClose supported midiInPrepareHeader supported midiInUnPrepareHeader supported midiInAddBuffer supported midiInReset supported midiInStart supported midiInStop supported midiInGetErrorText supported Midi Output Device midiOutGetNumDevs supported (1 2 devices) midiOutGetDevCaps supported midiOutOpen supported midiOutClose supported midiOutPrepareHeader supported midiOutUnPrepareHeader supported midiOutShortMsg supported midiOutLongMsg supported midiOutGetVolume supported midiOutSetVolume supported midiOutGetErrorText supported Wave Input Device waveInGetNumDevs supported (1 device) waveInGetDevCaps supported waveInOpen supported waveInClose supported waveInPrepareHeader supported waveInUnPrepareHeader supported waveInGetErrorText supported waveInAddBuffer supported waveInReset supported waveInStart supported waveInStop supported Wave Output Device waveOutGetNumDevs supported (8 devices) waveOutGetDevCaps supported waveOutOpen supported waveOutClose supported waveOutPrepareHeader supported waveOutUnPrepareHeader supported waveOutGetErrorText supported waveOutWrite supported waveOutReset supported waveOutStart supported waveOutRestart supported waveOutGetVolume supported waveOutSetVolume supported waveOutGetPitch see below waveOutSetPitch see below waveOutGetPlaybackRate not supported waveOutSetPlaybackRate not supported The Pitch API are supported but instead of doing Pitch transpose as required by Windows Mmedia specification, It actually change the sampling frequency. Pitch transpose modify playback spectrum keep playback duration Playback Rate variation keep playback spectrum modify playback duration Sampling Freq variation modify playback spectrum modify playback duration The Pitch & PlaybackRate API required specific processing that actually is supported by SAM9407 with the Pitch shifter Device (see FIRMWARE API chapter). These API can be correctly implemented if necessary. SAM9407 WINDOWS API LIST All the API can be used by 16bits & 32bits applications. mpuMessage Send MPU command mpuMessageAc Send MPU command with acknowledge genControlRead Read parameter value from Control Table. surroundSetVolume Set 3D effect level equalizerSetBand Set equalizer band parameters memAlloc * Allocate a memory block on the Dream card memFree * Free a memory block on the Dream card memRead Read a memory block from the Dream card memWrite Write a memory block into the Dream card memGetMapAddress Get Address of the Dream card Memory Mapping Table memSetMapAddress Set Address of the Dream card Memory Mapping Table memLoadFirmware * Download a firmware into the Dream card memory waveSetBufferSize Set the size of the wave buffers for further wave open waveSetMainVolume Set Main volumes waveSetAuxVolume Set AUX volume waveSetFilter Set filter parameters waveSetPitch Set sample rate modOpen Open the static audio device modGetVoiceNumber Get the number of available voices modOpenVoice Open a static wave voice modChangeParam Change a parameter (volume, pitch, filter) for a static wave voice modDefineVoiceMemory Set the sample parameters (start, loop, end) for a static wave voice modGetPos Get the current reading position. modSetNewPos Set a new reading position modCommand Send command (Start, Pause, Stop) to play and stop a voice modClose Close the static audio device The Following API are 32bits VxD API (not available in current 1.40 version) bankLoad * Load Sound bank from .94b file to SAM9407 memory bankUnload ** Unload Sound bank from .SAM9407 memory bankGetCaps ** Change the priority of a sound bank bankSetPriority ** Fill a structure with SAM9407 memory bank information * Available for WIN95 API only ** Not Available in current 1.4 version mpuMessage Syntax WORD mpuMessage(wCommand, lpParam, wCount) Send MPU command via the driver Parameters WORD wCommand Dream expanded MPU401 command number LPWORD lpParam Pointer to a byte table holding the command parameter WORD wCount Parameter byte count Return Value Returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments This API enable windows programmer to send MPU401 command which are not supported by Microsoft or Dream API. Parameter table is byte type, word parameter are stored LSB first. See FIRMWARE API chapter for details on MPU401 command. mpuMessageAc Syntax WORD mpuMessageAc(wCommand, lpParam, wCount,Ack) Send MPU command with acknowledge via the driver Parameters WORD wCommand Dream expanded MPU401 command number LPWORD lpParam Pointer to a byte table holding the command parameter WORD wCount Parameter byte count BYTE Ack Acknowledge that should be waited by the driver Return Value Returns 0 if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments This API enable windows programmer to send MPU401 command which are not supported by Microsoft or Dream API. Parameter table is byte type, word parameter are stored LSB first. See FIRMWARE API chapter for details on MPU401 command. genControlRead Syntax WORD genControlRead(lpValue,bCommand) Read parameter value from Control Table Parameters LPBYTE lpValue Pointer on a location filled by the returned control value one BYTE if bCommand<7f 128 BYTE if bCommand=0xff BYTE bCommand 0-7f: control nb for which the value is returned 0xff, Value is assumed to be a 128 BYTE table and is filled with 128 control values. Value[n] is the value for the control nb n. Return Value Returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments Control table is described in FIRMWARE Structure Chapter surroundSetVolume Syntax WORD surroundSetVolume(wVolume) Set surround effect intensity. Parameters WORD wVolume Surround volume: 0 no surround, 0x7f maximum surround effect Return Value Returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments Surround effect provides additional parameters: delay, input format, output format. Those parameters could be set using mpuMessage function. equalizerSetBand Syntax WORD equalizerSetBand(wBand,wChannel,wVolume) Set equalizer Band Volume Parameters WORD wBand Band selected: EQ_BASS, EQ_MID1, EQ_MID2, EQ_TREBLE WORD wChannel Channels select: EQ_STEREO, EQ_LEFT, EQ_RIGHT WORD wVolume New Volume dB scale, 0 -12dB ,0x40 0dB, 0x7f +12dB Return Value Returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments Equalizer is a serial effect. It process mixed audio signal, this includes Midi, Wave, Mod and Audio In. Bass band is lowpass type, Medium bands are band pass type, High band is high pass type Band filter frequency are 450Hz, 900Hz, 4khz, 9KHz. Equalizer is parametric type, band frequency could be adjust using mpuMessage function. memAlloc Syntax WORD memAlloc(dwSize, wType) Allocate a memory block on the Dream card Parameters DWORD dwSize size of the block to allocate (see comment) WORD wType type of the block to allocate (see comment) Return Value return zero if the function was successful. Otherwise, it returns an error number, possible returns are: DREAMERR_INVADD block not in 64K page DREAMERR_OUTOFMEM block out of SAM9407 memory DREAMERR_UNREF any other error Comments The Type of the memory block is actually written in the MMT (see Firmware Structure chapter). dwSize should be less than 256K for xx11H type dwSize has not size limit for xx30H type dwSize should be less than 64K for any other type Available for Windows 95 applications only memFree Syntax WORD memFree(dwAddress) Free a memory block on the Dream card Parameters DWORD dwAddress Address of the block to free Return Value return zero if the function was successful. Otherwise, it returns an error number, possible returns are: DREAMERR_OUTOFMEM block out of SAM9407 memory DREAMERR_UNREF any other error Comments Available for Windows 95 applications only memLoadFirmware Syntax WORD memFree(lpszFirmName) Download a firmware into the Dream card Parameters LPCSTR lpszFirmName Points to a null-terminated string that specifies the name (with extension) of the firmware file Return Value return zero if the function was successful. Otherwise, it returns an error number, possible returns are: DREAMERR_ABORT Dream card memory unit busy, read impossible, retry later. DREAMERR_OUTOFMEM block out of SAM9407 memory DREAMERR_UNREF any other error Comments Available for Windows 95 applications only memRead Syntax WORD memRead(lpDst,dwSrcAddress,wCount) Read a memory bloc from Dream card Parameters LPVOID lpDst Pointer to memory bloc to receive data read from Dream card. DWORD dwSrcAddress 32bit Dream card memory Address WORD wCount Count of word to read Return Value return zero if the function was successful. Otherwise, it returns an error number, possible returns are: DREAMERR_ABORT Dream card memory unit busy, read impossible, retry later. DREAMERR_INVCOUNT wCount > 32K word DREAMERR_INVADD block not in 64K page DREAMERR_OUTOFMEM block out of SAM9407 memory DREAMERR_UNREF any other error Comments The memory block to read should fit in 64K word page and its size can't exceed 32K word. memWrite Syntax WORD memWrite(lpSrc,dwDestAddress,wCount) Write a memory bloc into Dream card Parameters LPVOID lpSrc Pointer to memory bloc to write to Dream card. DWORD dwDestAddress 32bit Dream card memory Address WORD wCount Number of word to write Return Value return zero if the function was successful. Otherwise, it returns an error number, possible returns are: DREAMERR_ABORT Dream card memory unit busy, write impossible, retry later. DREAMERR_INVCOUNT wCount > 32K word DREAMERR_INVADD block not in 64K page DREAMERR_OUTOFMEM block out of SAM9407 mem DREAMERR_UNREF any other error Comments The memory block to write should fit in 64K word page and its size can't exceed 32K word. memGetMapAddress Syntax DWORD memGetMapAddress() Get Address of the Dream card Memory Mapping Table Parameters none Return Value return the 32bit Address of Memory Mapping Table. Otherwise, it returns DREAMERR_UNREF. Comments The Memory Mapping Table is described in chapter OVERVIEW - SAM9407 Memory Management memSetMapAddress Syntax WORD memSetMapAddress(dwAddress) Set Address of the Dream card Memory Mapping Table Parameters DWORD dwAddress 32bit Address of Memory Mapping Table in Dream card memory. Return Value return the 32bit Address of Memory Mapping Table. Otherwise, it returns DREAMERR_UNREF. Comments The Memory Mapping Table is described in chapter OVERVIEW - SAM9407 Memory Management waveSetBufferSize Syntax WORD waveSetBufferSize(wSize,bForPlay) Set the size of the wave buffers for further opens if bForPlay=TRUE, the play buffers size is set, else the record buffer size is set. Parameters WORD wSize Size in word. Maximum size enabled by memWrite and memRead is 32K. BOOL bForPlay TRUE if modification is for play buffers, FALSE if its for record buffer. Return Value return zero if the function was successful. Otherwise, it returns DREAMERR_UNREF. Comments The waveSetBufferSize doesn't affect current wave but only future open waves. waveSetMainVolume Syntax WORD waveSetMainVolume(Id, wVolLeft, wVolRight) Set wave main output volume Parameters WORD wVoice Voice Number WORD wVolLeft Left Volume WORD wVolRight Right Volume Return Value return zero if the function was successful. Otherwise, it returns DREAMERR_UNREF. Comments This command is mainly used to control volume in multi-wave mode. waveSetAuxVolume Syntax WORD waveSetAuxVolume(Id, wVolLeft, wVolRight) Set wave auxiliary output volume Parameters WORD wVoice Voice Number WORD wVolLeft Left Volume WORD wVolRight Right Volume Return Value return zero if the function was successful. Otherwise, it returns DREAMERR_UNREF. Comments Aux output can be affected to rear speakers or reverb/chorus effect send. see MPU401 EXPANDED PROTOCOL for more details. waveSetFilter Syntax WORD waveSetFilter(Id, wControl, wValue) Set filter parameters Parameters WORD wControl Control type: WAVE_FC , WAVE_Q WORD wValue Value 0x0-0x7f: filter open (0x7f), filter close (0x0), no resonance (0x7f), maximum resonance (0x0) Return Value return zero if the function was successful. Otherwise, it returns DREAMERR_UNREF. Comments The filter used for wave are 12dB low pass filters. The WAVE_Q parameter is active for mono wave only. waveSetPitch Syntax WORD waveSetPitch(Id, wAbsolutePitch) Set the sample rate Parameters WORD wAbsolutePitch Absolute value of the new sample rate Return Value return zero if the function was successful. Otherwise, it returns DREAMERR_UNREF. modOpen Syntax WORD modOpen() Open the static audio device Parameters none Return Value return zero if the function was successful. Otherwise, it returns MMSYSERR_ALLOCATED. Comments This API must be called before any other static wave API (mod...). modGetVoiceNumber Syntax WORD modGetVoiceNumber() Get the number of available voices. Parameters none Return Value return the number of available voices. Comments This API should be called before openning a static wave voice (modOpenVoice) to check if the voice can be played. modOpenVoice Syntax WORD modOpenVoice (wVoice, bVol, wVolMain, wVolAux, wPitch, wFilt) Open a static wave voice and set volumes, pitch, filter parameters. Parameters WORD wVoice Voice number. Should be smaller than the number of available voice returned by modGetVoiceNumber If the bit 7 is set, the voice is assumed to be cross bank. This allow to play samples which arenot necessary inside 256kW bank. However, such a voice actually reserves two internal voices. (See 1, Static Audio Device). BYTE bVol Value 0x0-0xff: General volume for the static wave WORD wVolMain LSB-->Right main volume (0-ff) MSB-->Left main volume (0-ff) WORD wVolAux LSB-->Right aux volume (0-ff) MSB-->Left aux volume (0-ff) WORD wPitch 400h=nominal frequency (depending on quartz frequency) and linearly scalled (200h = 1/2 nom. freq.) WORD wFilt MSB-> Fc 0(close)-ff(open) LSB->Q 0(resonnance max.)-ff(no resonnance ) Return Value return zero if the function was successful. modCommand Syntax DWORD modCommand(wVoice, bCommand) Send a command to static wave (start, stop, pause) Parameters WORD wVoice : voice number BYTE bCommand = MOD_START or MOD_STOP or MOD_CLOSE Return Value 0 if succed, error messages if failed. modChangeParam Syntax WORD modChangeParam(wVoice, wType, wValue) Change a parameter (volume, pitch, filter) for a static wave voice. Parameters WORD wVoice : voice number According to wType the wValue is : if wType=VOI_VOL General volume for the static wave (0-ff ) if wType=VOI_MAIN LSB-->Right main volume (0-ff) MSB-->Left main volume (0-ff) if wType=VOI_AUX LSB-->Right aux volume (0-ff) MSB-->Left aux volume (0-ff) if wType=PITCH Pitch : 400h=nominal frequency and linearly scalled (200h = 1/2 nom. freq.) if wType=VOI_FILT Filt MSB-> Fc 0(close)-ff(open) LSB->Q 0(resonnance max.)-ff(no resonnance ) Return Value return zero if the function was successful. Comments This API could be called when the voice is playing. modDefineVoiceMemory Syntax WORD modDefineVoiceMemory(wVoice, wFormat, dwStart, dwLoop, dwEnd) Define start,loop, and end sample address and define the sample format Parameters WORD wVoice : voice number WORD wFormat bit 7 : 0->16 bits ; 1->8 bits bit 6 : used if bit 7=1. 0-> 8 bits samples are in LSB of word memory 1->Sample in MSB of word memory bit 0-5 : loop type 0 : forward loop 1 : reverse loop 2 : reverse loop with sign inversion Only loop type 0 is available if a crossbank sample has been defined in modOpenVoice. ( See 1, Static Audio Device) DWORD dwStart, dwLoop, dwEnd, : absolute address (32 bits) The sample is first read from dwStart to dwEnd, then its looping between dwLoop an dwEnd. If the voice hasnt been openned for cross bank sample, the sample must be inside a 256 kWords bank. To define a one shot sample, the dwLoop and dwEnd should be set on 8 zero samples added after the sample . Return Value return zero. modGetPos Syntax DWORD modGetPos(wVoice) Return the current reading position for the voice Parameters WORD wVoice : voice number Return Value return absolute address of the current reading position. Comments This API could be called to check if the static wave is looping. modSetNewPos Syntax DWORD modSetNewPos(wVoice, dwOffset) Add an offset to current reading position Parameters WORD wVoice : voice number DWORD dwOffset : 32 bits offset to add. Return Value 0 if succed, error messages if failed. modClose Syntax void modClose() Close the static audio device. Parameters none Comments This function must be called after having used static audio device. (The following API are not available in current 1.40 version) bankLoad Syntax WORD bankLoad(lpszFileName, lpszBankName) Load Sound bank from .94b file to SAM9407 memory Parameters LPCSTR lpszFileName Points to a null-terminated string that specifies the name (with extension) of the .94b sound bank file. LPCSTR lpszBankName Points to a null-terminated string that specifies the name of the sound bank. A null string assumes that the BankName is the same as the FileName. Return Value return bank number if the function was successful. Otherwise, it returns 0FFFFH. Comments Available for Win95 applications only. (The following API are not available in current 1.40 version) bankUnload Syntax WORD bankUnload(wBankNumber) Unload Sound bank from .SAM9407 memory Parameters WORD wBankNumber 0-7 number of the bank to be deleted 0FFFFH Unload all banks Return Value returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments bankGetCaps Syntax WORD bankGetCaps(lpStructure) Fill a structure with SAM9407 memory bank information Parameters LPVOID lpStructure Points to the structure to be filled Return Value returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments The structure has the following format: WORD total available memory for sound bank WORD free memory for sound bank 8 times the following record, one per sound bank: 8 * CHAR sound bank name WORD priority level of the sound bank WORD Size of the Sound bank bankSetPriority Syntax WORD bankSetPriority(wBankNumber, wBankPriority) Change the priority of a sound bank Parameters WORD wBankNumber 0-7 number of the bank to be deleted WORD wBankPriority Bank priority level (0 to 0FFFEH) 0FFFFH priority assumes that the bank is disable but still in memory Return Value returns zero if the function was successful. Otherwise, returns DREAMERR_UNREF. Comments The bank set priority affects the midi mapping table (see FIRMWARE Structure chapter) Chapter 2 FIRMWARE API I/O Interface The I/O Interface is composed of two byte registers, one word register and one IRQ: I/O addressWrite from PC (OUT)Read to PC (IN)MPU_base + 0DATA8DATA8MPU_base +1CONTROLSTATUSMPU_base +2/3DATA16DATA16 The byte registers provides backwards compatibility with the standard MPU401 UART mode. The control message is sent on CONTROL register with one or several data on DATA8 register (word data are send as two bytes). The read back values (if any) are available on DATA8 register. The word register provides high rate data transfer in burst mode. It is used to download / upload SAM9407 memory Data. It should always be used with 16 bits I/Os instruction (OUT DX,AX IN AX,DX OUTSW INSW). Using 8 bit I/Os at these addresses will give unpredictable results. The IRQ (PC compatible rising edge) is backward compatible with MPU401 interrupt. It is floated until the MPU401 interface is switched to UART mode, to minimize potential IRQ conflicts. IO Status Register: TERFID1ID0XXXXTE : Transmit empty. If 0, data from SAM9407 to PC is pending and IRQ is high Reading the data at MPU_BASE+0 will set TE to 1 and clear IRQ. RF : Receiver full. If 0 then SAM9407 is ready to accept CONTROL or DATA from the PC. TE and RF are MPU401 compliant. Two additional bits ID1 ID0 are provided. They allow to identify the logical SAM9407 device read DATA8 as follows : ID1ID0Device00MIDI01Streaming audio10MOD player11General Stand alone & UART modes Stand alone mode: After power-up, hardware reset or MPU reset control, the board is in stand-alone mode: Stand alone mode enables only 2 controls: 3FH to switch to UART mode 3FH control is acknowledged by receiving 0FEH as DATA8 with ID(1,0)=00 (Midi device). BEH to sent any control BEH enable to send only one control, this means that each control sent in stand alone mode should start with BEH control. UART mode: UART mode accepts any control. Control 0FFH (MPU reset) switch back to stand alone mode. CONTROL MESSAGES OVERVIEW A device control message consists of one CONTROL byte followed by one or several DATA8 bytes (parameters). A parameter can be byte or multiple bytes. The least significant byte is always sent first (little endian). word means two bytes, double word or Dword means four bytes. The number of DATA8 bytes is fixed for a given CONTROL. After receiving the correct number of DATA8 bytes, operation resumes to the MIDI device. Ctrl #CONTROL NAMEAction1hWRT_MEMInitialize PC to SAM9407 transfer2hRD_MEMInitialize SAM9407 to PC transfer3hGET_MMTGet Memory Mapping Table address4hSET_MMTSet Memory Mapping Table address7hMASTER_VOLMaster volume8hREC_MODESelect record mode0BhTRANS_ONOFF-Enable/disable pitch shifter function(1)0ChTRANS_GMCH-Enable/disable pitch shifter on General Midi channels0DhTRANS_VAL- Pitch shifter value0EhTRANS_REVSEND- Pitch shifter reverb send0FhTRANS_CHRSEND- Pitch shifter chorus send10HEQ_LBLEqualizer low band left11HEQ_MLBLEqualizer med low band left12HEQ_MHBLEqualizer med high band left13HEQ_HBLEqualizer high band left14HEQ_LBREqualizer low band right15HEQ_MLBREqualizer med low band right16HEQ_MHBREqualizer med high band right17HEQ_HBREqualizer high band right18HEQF_LBEqualizer low band frequency19HEQF_MLBEqualizer med low band frequency1AHEQF_MHBEqualizer med high band frequency1BHEQF_HBEqualizer high band frequency20HAUD_SELAudio1/2 input select (1)21HAUD_GAINLAudio Left input gain (1)22HAUD_GAINRAudio Right input gain (1)25HGMREV_SENDGeneral Midi Reverb Send26HGMCHR_SENDGeneral Midi Chorus Send27HAUDREV_SENDAudio Reverb Send28HECH_LEVEcho level applied on audio in (2)29HECH_TIMEcho time applied on audio in (2)2AHECH_FEEDEcho feedback applied on audio in (2)30HSUR_VOLSurround effect volume31HSUR_DELSurround effect delay 32HSUR_INPInput mono/stereo select for surround33HSUR_242 or 4 speakers output select for surround34HAUDL_VOLLeft Channel Audio in volume (2)35HAUDR_VOLRight Channel Audio in volume (2)36HAUDL_PANLeft Channel Audio in pan (2)37HAUDR_PANRight Channel Audio in pan (2)38HGM_VOLGeneral Midi volume39HGM_PANGeneral Midi pan3AHREV_VOLReverb general volume3BHCHR_VOLChorus general volume3DHEN_MIDOUTEnable midi out3FHUART_MODSwitch to UART mode40hW_OPENOpen channel with specified format and sampling rate.41hW_CLOSEClose channel. (3)42hW_STARTRequest SAM9407 to init its streaming audio data Emitter / Receiver43hEND_XFERSent to SAM9407 after end of XFER.44hW_PITCHChange the pitch of the wave during playback. (1)45hW_VOLLEFTChange the current left volume (1)46hW_VOLRIGHTChange the current right volume (1)47hW_VOLAUXLEFTChange the left auxiliary level (1)48hGEN_INTGenerate an interrupt (used to check if 9407 board installed)49hW_VOLAUXRIGHTChange the right auxiliary level. (1)4AHW_FILT_FCChange filter cutoff frequency4BhW_FILT_QChange filter resonance (2)51hGET_VOIGet number of voices available52hVOI_OPENOpen one voice53hVOI_CLOSEClose one voice54hVOI_STARTStart play voice55hVOI_STOPStop play voice56hVOI_VOLVoice output volumes57hVOI_MAINMain channel send volumes58hVOI_PITCHVoice pitch59hVOI_AUXAux channel send volumes5AhVOI_FILTVoice filter5BhVOI_MEMDefines memory used by voice5ChGET_POSReturn position of current reading5DhADD_POSAdd an offset to current reading60hWAVE_ASSWave audio output assignment (3)61hMOD_ASSMOD player audio output assignment (3)62hGM_POSTPost effects applied on general midi (4)63hWAVE_POSTPost effects applied on wave (4)64hMOD_POSTPost effects applied on MOD player (4)65hAUDECH_POSTPost effects applied on Audio in and echo(4)66hEFF_POSTPost effects applied on Reverb-chorus (4)68HECH_ONOFFEcho On/Off (3)69HREV_TYPEReverb program select6AHCHR_TYPEChorus program select6BHEQU_TYPEEqualizer type (3)6CHREV_ONOFFReverb On/Off (3)6DHCHR_ONOFFChorus On/Off (3)6EHSUR_ONOFFSurround On/Off (3)6FHAUD_ONOFFAudio On/Off (3)70HHOT_RESHot reset72HPOLY_64Enable 64 voice polyphony (3)74HCHR_DELChorus delay75HCHR_FEEDChorus feedback76HCHR_RATEChorus rate77HCHR_DEPTHChorus depth78HREV_TIMEReverb time79HREV_FEEDReverb feedbackBEHEN_CONTROLEnable dream control in stand alone modeFFhRESETReset UART mode GENERAL DEVICE System messages Ctrl #CONTROL NAMEParameters (Data)ActionAnswer07hMASTER_VOL-Data (byte 0-FFh,FFh)Master volume48hGEN_INT-Data=0 (byte)Generate an interrupt Id=11 Data=088h70HHOT_RES-Data=011HHot resetId=10 Data=0BEHEN_CONTROLNoneEnable dream control in stand alone modeFFhRESETNoneReset UART mode3FHUART_MODNoneSwitch to UART modeId=00 Data= 0FEh - MASTER_VOL : Master volume. Data range : 0-FFh. Default=0FFh. - GEN_INT : This command is used to detect SAM9407 board. It sends back 088H data and generates interrupt - HOT_RES : Equivalent to hardware reset. Firmware should be reloaded.. - EN_CONTROL: This control has been implemented to enable to send any control even in Stand alone mode. It enable to send only one control, this means that each control sent in stand alone mode should start with EN_CONTROL control. - RESET: Switch SAM9407 in stand alone mode - UART_MODE: Switch SAM9407 in UART mode Memory messages Ctrl #CONTROL NAMEParameters (Data)ActionAnswer1hWRT_MEM-Start (Dword) -Count (word)Initialize PC to SAM9407 transferId=11 Data = ACh / ABh2hRD_MEM-Start (Dword) -Count (word)Initialize SAM9407 to PC transferId=11 Data = ACh / ABh3hGET_MMT-Data=0(byte)Get Memory Mapping Table addressId=1Id=00 Data=Address (Dword)4hSET_MMT-Address (Dword)Set Memory Mapping Table address - GET_MMT, SET_MMT: The Memory Mapping Table is a fixed length table stored in SAM9407 memory. This table is described 7in Firmware Stucture chapter.. - Wrt_mem, Rd_mem : Initializes the basic transfer in burst mode between PC memory and SAM9407 memory. All transfers must be 16 bit data transfers Start address is given as a double word (4 bytes) : Ad1,Ad2 offset inside a 64K page, Ad3,Ad4 64K page number. Count is number of words to transfer on 2 bytes (Lsb first) : Cnt1,Cnt2. Count is limited to 32K words maximum (cnt2|cnt1=4000h max.) Warning !! : A transfer cannot cross a 64K words page boundary : (ad2|ad1)+(cnt2|cnt1) < 10000H When start address and count parameters have been sent, the PC must wait for the acknowledgment byte ACh before starting transfer. Under normal traffic conditions, this acknowledgment byte is received within less than 100s. If transfer in burst mode is already used by streaming audio (wave play/record), SAM9407 returns byte ABh and abort rd_mem or wrt_mem command. In that case, command rd_mem and wrt_mem must be resent after having ended transfer requested by streaming audio. ABh byte can also be returned if one transfer is done with wrong count word (case of PC software mistake). In that case, next transfers cannot be done. The only solution is to correct PC software. The actual transfer is done through port DATA16 using REP OUTSW (if WRT_MEM) or REP INSW (if RD_MEM) assembler instructions. Example : ; segments and SI (resp.DI) already initialized to point to user buffer mov dx,MPU_base+2 mov cx,count rep outsw or rep insw Config messages All the configuration controls reinitialize the SAM9407 firmware. Therefore control 3Fh should be sent if UART mode is required. All streaming and static wave channels are closed. General midi reset occurs. Following commands are reset to their default values : -UART_MODE -AUD_SEL, AUD_GAIN, -ECH_LEV, ECH_TIM, ECH_FEED -SUR_VOL, SUR_DEL, SUR_INP, SUR_24 -GM_VOL, GM_PAN, REV_VOL, CHR_VOL -REV_TYPE, CHR_TYPE -EQ_xxx, EQF_xxx Only following commands are not reset : -WAVE_ASS, MOD_ASS -all xxx_POST commands - ECH_TYPE, EQU_TYPE Memory tables and sound banks are not modified. Ctrl #CONTROL NAMEParameters (Data)ActionAnswer6FHAUD_ONOFF-Data (byte 0/7Fh,7Fh)Audio On/Off Id=11 Data=068HECH_ONOFF-Data(byte 0/7Fh,7Fh)Echo On/Off Id=11 Data=06CHREV_ONOFF-Data (byte 0/7Fh,7Fh)Reverb On/Off Id=11 Data=06DHCHR_ONOFF-Data (byte 0/7Fh,7Fh)Chorus On/Off Id=11 Data=06BHEQU_TYPE-Data(byte 0-2,0)Equalizer typeId=11 Data=06EHSUR_ONOFF-Data (byte 0/7Fh,7Fh)Surround On/Off Id=11 Data=072HPOLY_64-Data(byte 0/7Fh,0)Enable 64 voice polyphony ID=11 Data=060hWAVE_ASS-Data(byte 0/7Fh,0)Wave audio output assignment Id=11 Data=061hMOD_ASS-Data(byte 0/7Fh,0)MOD player audio output assignment Id=11 Data=0 - AUD_ONOFF : 0 Audio in off 7FH (Default) Audio in on, requires 1 extra slot - ECH_ONOFF : 0 echo applied on Audio in off 07FH (Default) echo applied on Audio in on, requires 2 extra slots - REV_ONOFF : 0 reverb off 7FH (Default) reverb on, requires 13 extra slots - CHR_ONOFF : 0 chorus off 7FH (Default) chorus on, requires 3 extra slots - EQU_TYPE : Select type of equalizer. 0(Default) 4 band equalizer Requires 8 extra slots. 1 : 2 band equalizer (low, high). Requires 4 extra slots. 2 : no equalizer. - SUR_ONOFF : 0 : surround effect off 7FH (Default) surround effect on, requires 1 extra slot POLY_64 : (Optional) 0 (Default) off 7FH on, 64 voices of polyphony Available only if firmware is downloaded into SRAM instead of DRAM (because refresh is disabled when using this command). Set polyphony to 64 voices for midi, wave and mod player modules When POLY_64 is on, equalizer, surround, reverb, chorus, audio in/echo, record functions are off. All commands concerning these functions are not active. The only way to active them again is to send POLY_64 off. When POLY_64 is on, only midi, wave play and mod player are available Midi is output only on Main speaker output. Wave and mod player are always configured in 4 speaker output (wave_ass=7Fh, mod_ass=7Fh). - WAVE_ASS : Data = 0 : Wave module is configured for 2 speakers output, reverb and chorus can be applied to each wave : - Command 45h, W_VOLLEFT : main left volume - Command 46h, W_VOLRIGHT : main right volume - Command 47h, W_VOLAUXLEFT : reverb send volume - Command 48h, W_VOLAUXRIGHT : chorus send volume Data = 7Fh : Wave module is configured for 4 speakers output. Reverb and chorus are not applied on waves : - Command 45h, W_VOLLEFT : main left volume - Command 46h, W_VOLRIGHT : main right volume - Command 47h, W_VOLAUXLEFT : auxiliary left volume - Command 48h, W_VOLAUXRIGHT : auxiliary right volume Default =0 - MOD_ASS : Data=0 : MOD player module is configured for 2 speakers output, reverb and chorus are available : - Command 57h, VOI_MAIN : main send levels - Command 59h, VOI_AUX : effect send (left=reverb send, right=chorus send) Data=7Fh : MOD player module is configured for 4 speakers output, reverb and chorus are disabled : - Command 57h, VOI_MAIN : main send levels - Command 59h, VOI_AUX : auxiliary send levels. Default=0 Routing messages Post effects are surround + equalizer Ctrl #CONTROL NAMEParameters (Data)ActionAnswer62hGM_POST-Data(byte 0/7Fh,7Fh)Post effects applied on general midi 63hWAVE_POST-Data(byte 0/7Fh,7Fh)Post effects applied on wave 64hMOD_POST-Data(byte 0/7Fh,7Fh)Post effects applied on MOD player 65hAUDECH_POST-Data(byte 0/7Fh,7Fh)Post effects applied on Audio in and echo66hEFF_POST-Data(byte 0/7Fh,7Fh)Post effects applied on Reverb-chorus  - xxx_POST : Post effects are surround and equalizer. Post effects can be separately applied on each module. However general settings of post effects (EQ_xxx, EQF_xxx, EQU_TYPE, SUR_VOL, SUR_DEL, SUR_INP and SUR_24) are common for all modules. Data=0 : post effects not applied on module. Data=7Fh : post effects applied on module. Default value = 07Fh for all modules. MIDI DEVICE The current implementation specifies 32 MIDI channels for internal Wave table synthesis Device and a single 16 channels MIDI device for external MIDI device. MIDI device is enable only in UART mode. MIDI device is MPU401 UART mode compliant This mode involved a specific protocol for MIDI device: MIDI messages dont required any CONTROL but only DATA. Writing DATA8 will send MIDI data to MIDI OUT and the wavetable synthesis. MIDI data received from MIDI IN can be read as DATA8 with ID0-1=00 The detailed MIDI implementation is detailed in chapter 3 GM_VOL, GM_PAN & EN_MIDOUT are not MPU401 compliant messages, unlike most of midi messages they required CONTROL. In stand-alone mode, the SAM9407 plays whatever is received on the MIDI IN serial line, MIDI OUT is disabled. MIDI OUT (external cable) is enabled after 3FH (UART mode) and 3DH (enable midi out) MIDI OUT is disabled after any other control than 3FH & 3DH . This means that any dream control should be followed by 3DH control to restore midi out. This has been done to avoid to send the data of control messages into MIDI OUT. Only data from channels 1 to 16 are output on external MIDI OUT. The channel selector is controled with B0H (channel 0-15) and B1H (channel 16-31). Midi message path:  INCORPORER Word.Picture.6  MIDI messages Ctrl #CONTROL NAMEParameters (Data)ActionAnswer38HGM_VOL-Data(byte 0-FFh,FFh)General Midi volume39HGM_PAN-Data(byte 0-7Fh,40h)General Midi pan3DHEN_MIDOUTNoneEnable midi outB0HMID_PORT0NoneSelect chan 0 to 15B1HMID_PORT1NoneSelect chan 16 to 31 - EN_MIDOUT : Each general device control (except 3FH=UART_MOD) disables MIDI out. To enable again MIDI out, EN_MIDOUT must be sent before sending MIDI data to port MPU_base. - GM_VOL Range 0-FFh, linear scale. Default value : GM_VOL=0FFh - GM_PAN 0=hard left, 40h=center, 7Fh=hard right. Pseudo logarithmic scale. Same as GM system exclusive message 40h 00h 06h Default value : GM_PAN=040h - MID_PORT0 Select midi port 0 (channel 0 to 15) All the next midi messages are sent to midi port 0 - MID_PORT1 Select midi port 1 (channel 16 to 31) All the next midi messages are sent to midi port 10 STREAMING AUDIO BUFFER DEVICE I/O MESSAGES from PC -> SAM9407 Ctrl #CONTROL NAMEParameters (Data)ActionAnswer40hW_OPEN-Channel (Byte) -Format (Byte) -Sampling rate (Word)Open channel with specified format and sampling rate.41hW_CLOSE-Channel (Byte)Close channel.Id=01 (3) Byte=0Cx42hW_START-Channel (Byte)Request SAM9407 to initialize its streaming audio data Emitter / Receiver43hEND_XFER-Channel (Byte)Sent to SAM9407 after end of XFER.44hW_PITCH-Channel (Byte) -Sampling rate (Word)Change the pitch of the wave during playback. (1)45hW_VOLLEFT-Channel (Byte) -Volume (Word)Change the current left volume (1)46hW_VOLRIGHT-Channel (Byte) -Volume (Word)Change the current right volume (1)47hW_VOLAUXLEFT-Channel (Byte) -Value (Word)Change the left auxiliary level (1)49hW_VOLAUXRIGHT-Channel (Byte) -Value (Word)Change the right auxiliary level. (1)4AHW_FILT_FC-Channel (Byte) -Value (Word)Change filter cutoff frequency4BhW_FILT_Q-Channel (Byte) -Value (Word)Change filter resonance (2)8hREC_MODE-Data (byte 0/7Eh/7Fh,0)Select record modeNotes (1) : Play mode only (2) : Mono mode.only (3) :Play mode.only Byte returned is 0C0h + channel number (0-7). Acknowledge byte is sent when final half buffer read is completed. I/O MESSAGES from SAM9407 -> PC IRQ is used by SAM9407 to start streaming audio data block transfers between the PC and the SAM9407. STATUS [5,4] = [ID1,ID0] with ID1=0 and ID0=1 DATA8[7..0]= Channel number (0 to 8) The SAM9407 streaming audio buffer size is allocated by the PC using the memory mapping table (MMT) resources, (see memory table). DETAILED PARAMETERS For each command Channel is coded as follows: From 0 to 7 for PLAY, 8 for RECORD W_OPEN Format byte : 0000 00 ST 8B 8B : 0 if 16 bits, 1 if 8 bits. ST : 0 if mono, 1 if stereo. Sampling Rate word: unsigned value from 0 to 48000 Hz. W_VOLLEFT, W_VOLRIGHT, W_VOLAUXLEFT, W_VOLAUXRIGHT Volume word: linear unsigned value from 0 to 65535 W_PITCH Sampling Rate word unsigned value from 0 to 48000 Hz. W_FILT_FC FC word 0 = filter closed, 0FFFFH filter open W_FILT_Q Q word 0 = maximum resonance, 0FFFFH no resonance - REC_MODE : Data=0 : record only Audio In Data=07Fh : record all signals going into Equalizer-Surround module (see Signal Processing synoptic in overview chapter) Default = Data=0 Note : When in mode 07Fh, all commands xxx_POST have a double function : they are selecting if module is going into Equalizer-Surround module but also if module has to be record or not. Data=07Eh : record all signals from surround bus (see Signal Processing synoptic) STATIC AUDIO BUFFER DEVICE The Static audio device can be used to provide hardware accelerator for Windows 95 Direct Sound. It can also be used to implement specific MOD player Windows drivers. Ctrl #CONTROL NAMEParameters (Data)ActionAnswer51hGET_VOI-Data=0 (byte)Get number of voices availableId=10 Voice count (1 byte)52hVOI_OPEN-Voice (byte)Open one voiceNo ack53hVOI_CLOSE-Voice (byte)Close one voice54hVOI_START-Voice (byte)Start play voice55hVOI_STOP-Voice (byte)Stop play voice56hVOI_VOL-Voice (byte) - Volume (byte)Voice output volumes57hVOI_MAIN-Voice (byte) - Main right (byte) - Main left (byte)Main channel send volumes58hVOI_PITCH- Voice (byte) - Pitch (word) Voice pitch59hVOI_AUX- Voice (byte) - Aux right (byte) - Aux left (byte)Aux channel send volumes5AhVOI_FILT- Voice (byte) - Q (byte) - Fc (byte)Voice filter5BhVOI_MEM- Voice (byte) - Format (byte) - Bank (byte) - Start (3 bytes) - Bank loop (byte) - Loop (3 bytes) - Bank end (byte) - End (3 bytes)Defines memory used by voice5ChGET_POS- Voice (byte)Return position of current readingId=10 bank (byte) offset in bank (3 bytes)5DhADD_POS- Voice (byte) - Bank (byte) - Offset (3 bytes)Add an offset to current reading DETAILS - GET_VOI: The returned byte Voice_count is the maximum number of voices that can be opened at the same time in the application. It is the total number of voices available for MOD player, Wave player and MIDI. MOD player and Wave player have higher priority than MIDI. However MOD player has same priority as Wave player. For example, suppose Voice_count = 32. If no voices are already opened for Wave player, MOD player can used 32 voices (but in that case no voices will be available for MIDI playing). If n voices are used for Wave player, MOD player has only 32-n voices available. Because Wave player and MOD player is usually included in the same driver it is the driver programmer responsibility to memorize how many voices are opened for Wave and for MOD. MOD voices always start from 0 until maximum allowed (Voice_count-n-1), even if Wave player is active. Voices are dynamically allocated and do not correspond to physical slots of the SAM9407. Note that crossbank type waves request two voices for each note played. - VOI_OPEN : Open one voice. Voice byte : D7D6D5D4D3D2D1D0C00v4v3v2v1v0 v4|v0 : voice to open C : 0- in bank voice, 1- cross bank voice Cross bank voice actually reserves two internal voices. Note : if pitch shifter device is implemented in firmware, this cross bank mode is not available. - VOI_CLOSE VOI_CLOSE is immediately closing the voice. Stops the voice softly in less than 5ms. VOI_OPEN must be sent to use the voice again. - VOI_STOP VOI_STOP stops the voice softly in less than 5 ms. This voice can be used again immediately without clicking for another wave (VOI_START without sending again VOI_OPEN). - VOI_START Sending VOI_START supposes that VOI_OPEN control has been sent before but also that VOI_MEM, VOI_VOL, VOI_PAN ... has been sent to initialize voice parameters. VOI_CLOSE and VOI_STOP reset all parameters to undefined values. Only VOI_FILT is automatically initialized to : Q=0FFh, Fc=0FFh (filter open) - VOI_VOL : Volume for main audio output. Slide the volume to new value in less than 5ms. Linear volume. Range 0-FFh - VOI_MAIN : Send for main audio output. Linear scale. Main right : range 0-FFH, main right send level. Main left : range 0-FFH, main left send level. - VOI_PITCH : Pitch given in 2 bytes, low byte first. 400h (low byte=0, high byte=4) correspond to nominal frequency (Current version of program runs with a sampling rate of 37.5 KHz, due to current SIMM DRAM cycle times). Pitch is linearly scaled (200h = half nominal frequency). - VOI_AUX : Send level for auxiliary audio output or effect. Depending on command MOD_ASS (61h), auxiliary output can be also effect send (see 5. General device command) Linear scale. Aux right : range 0-FFh, auxiliary right send level or chorus send. Aux left : range 0-FFh, auxiliary left send level or effect send. - Voi_Filt : First byte : Q (resonance) : range 0-0ffh (0ffh=no resonance, 0=maximum of resonance) 2nd byte : Fc (cut frequency) : range 0-0ffh (0ffh=filter open, 0=filter closed) - VOI_MEM : Defines addresses of wave used by voice. SAM9407 access to external memory is made through banks of 256K samples. Waves can be in bank or cross bank . Cross bank waves take two polyphony partials to be played. Therefore it is advisable to use in bank waves for optimum polyphony performance. Waves can be stored in dram into 16 bit or 8 bit format. Both formats can be used at same time (for example, one 16 bit wave can be stored from address M till N-1 and two 8 bit waves can be stored from address N till P-1, etc...) - Format byte : D7D6D5D4D3D2D1D0f7f6f5f4f3f2f1f0 f7 0 :16 bit sample, 1 : 8 bit sample f6 used only if f7=1 (8 bit sample) 0 : sample in low byte of word, 1: sample in high byte of word f5-f0 loop type 0 : forward loop (Play to loop end and jump to loop start) 1 : reverse loop (Play to loop end, back to loop start, forward to loop end ...) 2 : reverse loop with sign inversion (Play to loop end, invert sign and back to loop start, invert sign and forward to loop end ...) Only loop type 0 is available if a crossbank sample has been defined for VOI_OPEN. - Bank(byte)|Start(3bytes) : defines the sample start point - Bank loop(byte)|Loop(3bytes) : defines the loop point of the sample - Bank end(byte)|End(3 bytes) : defines the end point of the sample 3 byte offset inside a bank is coded LSB first : Byte #D7D6D5D4D3D2D1D01a7a6a5a4a3a2a1a02a15a14a13a12a11a10a9a83000000a17a16 In bank samples have Bank = Bank loop = Bank end Looping feature is necessary for all waves. One-shot waves must be done by adding n zerosamples to the wave and setting loop point to end-n (n=8 recommended so that to allow drastic pitch change controls). For cross bank samples loop and/or end points in the last eight locations of a bank should be avoided. See also appendix A MEMORY MAPPING TABLE to know which part of memory can be used for MOD player. - GET_POS Return current reading position of the voice. Useful to know if wave has reached final loop or not. Return position value on 4 bytes : byt1 = bank bytes 2 to 4 = offset inside bank byt2 = bit7-0 byt3 = bit15-8 byt4 = bit17-16 - ADD_POS Add to current reading position an offset. Given on 4 bytes : byt1 = bank offset bytes 2 to 4 = offset byt2 = bit7-0 byt3 = bit15-8 byt4 = bit17-16 If current position + offset is going behind end point, position is set to end point. - Writing and reading dram Writing and reading into dram is done using general device controls 1 (WRT_MEM) and 2 (RD_MEM). These controls are using a start address defined on 4 bytes ad1, ad2, ad3, ad4 : ad1 = | a7 a6 a5 a4 a3 a2 a1 a0 | ad2 = | a15 a14 a13 a12 a11 a10 a9 a8 | ad3 = | a23 a22 a21 a20 a19 a18 a17 a16 | ad4 = | a31 a30 a29 a28 a27 a26 a25 a24 | ad4|ad3 = 64K page number. ad2|ad1= offset inside a 64K page The correlation with 256K bank structure used for MOD driver is : bank number = bits a25-a18 offset inside bank = bits a17-a0 bit a31-a26 = 0. AUDIO IN & ECHO DEVICE Ctrl #CONTROL NAMEParameters (Data)ActionAnswer20HAUD_SEL-Data(byte 0/7Fh,7Fh)Audio1/2 input select (1)21HAUD_GAINL-Data(byte 0-7Fh,0)Audio Left input gain (1)22HAUD_GAINR-Data(byte 0-7Fh,0)Audio Right input gain (1)27HAUDREV_SEND-Data(byte 0-7Fh,0)Audio Reverb Send34HAUDL_VOL-Data(byte 0-FFh,FFh)Left Channel Audio in volume (2)35HAUDR_VOL-Data(byte 0-FFh,FFh)Right Channel Audio in volume (2)36HAUDL_PAN-Data(byte 0-7Fh,0)Left Channel Audio in pan (2)37HAUDR_PAN-Data(byte 0-7Fh,7Fh)Right Channel Audio in pan (2)28HECH_LEV-Data(byte 0-7Fh,0)Echo level applied on audio in (2)29HECH_TIM-Data(byte 0-7Fh,2Bh)Echo time applied on audio in (2)2AHECH_FEED-Data(byte 0-7Fh,40h)Echo feedback applied on audio in (2)(1) Only if CS4216/CS4218 type Codec used (2 stereo audio inputs Codec) (2) Assumes ADC used (at least 1 stereo audio input Codec) - AUD_xxx : These 3 commands can be used only if a Codec with 2 audio stereo inputs and adjustable gain on audio input is used (typically CS4216 or CS4218) AUD_SEL : 0= select audio stereo input 1, 07Fh=select audio stereo input 2 (default 7Fh) AUD_GAINL : 0=+0dB, 07Fh=+22.5dB on audio left input (default 0) AUD_GAINR : 0=+0dB, 07Fh=+22.5dB on audio right input (default 0) On 94PC32 board, audio input 2 is J4 connector and audio input 1 is J6 connector - ECH_xxx : Controls for echo applied on audio input. Available only if echo set on with command ECH_ONOFF ECH_LEV: 0 to 07Fh (Default 0) ECH_TIM (if ech_type=07Fh only) : 0 =shortest to 7Fh=longest (default 2Bh) ECH_FEED (if ech_type=07Fh only) : 0=no feedback, 7Fh=maximum feedback (default 40h) - AUDREV_LEV : Reverb send level for audio in Data=0 to 07Fh (Default=0) Reverb used is same as reverb used for General Midi REVERB DEVICE Ctrl #CONTROL NAMEParameters (Data)ActionAnswer69HREV_TYPE-Data(byte 0-7,4)Reverb program select3AHREV_VOL-Data(byte 0-FFh)Reverb general volume78HREV_TIME-Data(byte 0-7Fh)Reverb time79HREV_FEED-Data(byte 0-7Fh)Reverb feedback25HGMREV_SEND-Data(byte 0-FFh,80h)General Midi Reverb Send - REV_TYPE : Reverb program. Same as GM system exclusive message 40h 01h 30h or GM control 80. room1room2room3hall1hall2platedelaypan delay0H1H2H3H4H5H6H7HDefault=4 (hall2) REV_VOL: Reverb volume Same as GM system exclusive message 40h 01h 33h Default values: room1room2room3hall1hall2platedelaypan delay90H90H90HC0H90H90HFFHFFH - REV_TIME : Reverb time. Same as GM system exclusive message 40h 01h 34h Default values: room1room2room3hall1hall2platedelaypan delay7FH7FH7FH7FH7FH7FH18H7FH - REV_FEED : Reverb delay feedback. Only if reverb number=6 or 7 (delays) This command is same as GM system exclusive message 40h 01h 35h Default values: delaypan delay22H26H -GMREV_SEND: Modify reverb send level for General Midi. 80H: original reverb send levels of midi sequence not modified 0 to 7FH : original reverb send levels decreased 81h to FFH : original reverb send levels increased Default=80h CHORUS DEVICE Ctrl #CONTROL NAMEParameters (Data)ActionAnswer6AHCHR_TYPE-Data(byte 0-7,2)Chorus program select3BHCHR_VOL-Data(byte 0-FFh)Chorus general volume74HCHR_DEL-Data(byte 0-7Fh)Chorus delay75HCHR_FEED-Data(byte 0-7Fh)Chorus feedback76HCHR_RATE-Data(byte 0-7Fh)Chorus rate77HCHR_DEPTH-Data(byte 0-7Fh)Chorus depth26HGMCHR_SEND-Data(byte 0-FFh,80h)General Midi Chorus Send - CHR_TYPE : Chorus program. Same as GM system exclusive message 40h 01h 38h or GM control 81. chorus1chorus2chorus3chorus4FB chorus flangershort delFB delay00H01H02H03H04H05H06H07HDefault= 2 (chorus3) - CHR_VOL : Chorus Volume Same as GM system exclusive message 40h 01h 3Ah - CHR_DEL : Chorus delay Same as GM system exclusive message 40h 01h 3Ch - CHR_VOL : Chorus Volume Same as GM system exclusive message 40h 01h 3Ah - CHR_FEED : Chorus feedback Same as GM system exclusive message 40h 01h 3Bh - CHR_RATE : Chorus rate Same as GM system exclusive message 40h 01h 3Dh - CHR_DEPTH : Chorus depth Same as GM system exclusive message 40h 01h 3Eh - CHR_VOL : Chorus Volume Same as GM system exclusive message 40h 01h 3Ah GMCHR_SEND : Modify chorus send level for General Midi. Data=080h : original chorus send levels of midi sequence not modified Data=0 to 07Fh : original chorus send levels decreased Data=081h to 0ffh : original chorus send levels increased Default=80h Default values: chorus1chorus2chorus3chorus4FB chorus flangershort delFB delayCHR_VOL90H90H90H90H90H90HFFHFFHCHR_DEL4BH40H40H2BH7FH56H7FH7FHCHR_FEED00H07H09H0CH48H7FH00H50HCHR_RATE03H09H03H09H02H01H00H00HCHR_DEPTH05H13H13H10H0CH03H00H00H EQUALIZER DEVICE Ctrl #CONTROL NAMEParameters (Data)ActionAnswer10HEQ_LBL-Level (byte 0-7Fh,60h)Equalizer low band left11HEQ_MLBL-Level (byte 0-7Fh,40h)Equalizer med low band left12HEQ_MHBL-Level (byte 0-7Fh,40h)Equalizer med high band left13HEQ_HBL-Level (byte 0-7Fh,60h)Equalizer high band left14HEQ_LBR-Level (byte 0-7Fh,60h)Equalizer low band right15HEQ_MLBR-Level (byte 0-7Fh,40h)Equalizer med low band right16HEQ_MHBR-Level (byte 0-7Fh,40h)Equalizer med high band right17HEQ_HBR-Level (byte 0-7Fh,60h)Equalizer high band right18HEQF_LB-Data (byte 0-7Fh,0Ch)Equalizer low band frequency19HEQF_MLB-Data (byte 0-7Fh,1Bh)Equalizer med low band frequency1AHEQF_MHB-Data (byte 0-7Fh,72h)Equalizer med high band frequency1BHEQF_HB-Data (byte 0-7Fh,40h)Equalizer high band frequency EQ_xxx Band level 00H20H40H60H7FH-12dB-6dB0dB+6dB+12dBDefault =060h (+6dB) for LB-HB, =040h(0dB) for MLB-MHB , EQF_xxx : Band frequency (0-7Fh), linear scale Band Range DefaultLB 0-4.7Khz 0CHMLB 0-4.2Khz 1BHMHB 0-4.2Khz 72HHB 0-18.75Khz 40H SURROUND DEVICE Ctrl #CONTROL NAMEParameters (Data)ActionAnswer30HSUR_VOL-Data(byte 0-FFh,0)Surround effect volume31HSUR_DEL-Data(byte 0-7Fh,2)Surround effect delay 32HSUR_INP-Data(byte 0/7Fh,0)Input mono/stereo select for surround33HSUR_24-Data(byte 0/7Fh,0)2 or 4 speakers output select for surround - SUR_VOL : Surround effect volume. Default=0 - SUR_DEL : Delay line length Default=2 - SUR_INP : Input type select 0 Stereo (default), Stereo wide, Input to delay line is left - right. 7FH Mono, Pseudo stereo Input to delay line is left + right. - SUR_24 : Output type select 0 2 speakers(default) Surround output on main outputs. 7FH 4 speakers Surround output on auxiliary output. PITCH SHIFTER DEVICE This device is optional. May require some extended SIMM module. Ctrl #CONTROL NAMEParameters (Data)ActionAnswer0BhTRANS_ONOFF-Data (byte) (0-0Fh) -Enable/disable pitch shifter function(1)Id=11 Data = 00ChTRANS_GMCH-Data (word) -Enable/disable pitch shifter on General Midi channels0DhTRANS_VAL-Data (word)- Pitch shifter value0EhTRANS_REVSEND-Data (byte) (0-FFh)- Pitch shifter reverb send0FhTRANS_CHRSEND-Data (byte) (0-FFh)- Pitch shifter chorus send note : (1) This control reinitializes the sam9407 firmware 8-2 - DETAILS -TRANS_ONOFF : Enable/disable pitch shifter function. When enable, requires 6 extra slots. This function can be independently selected on 4 different modules (Audio IN/Echo, Mod Player, Streaming Audio, Midi). Some limitations of pitch shifting mode : - Value of pitch shifting is the same for all modules. - When setting a module in pitch shifting mode, effect (or auxiliary) send function of corresponding module is disabled. User can only access to a global reverb and chorus send value which will be the same for all modules being in pitch shifting mode (see command trans_revsend, trans_chrsend). - Setting a module in pitch shifting mode will automatically set xxx_POST command ON for this module. Sending xxx_POST command OFF will cancel pitch shifting mode. - If Streaming audio module or Mod Player module is set in pitch shifting mode, all channels inside module are pitch shifted. Only for Midi module, user can select which channels are or are not pitch shifted (by using command TRANS_GMCHAN). - If Streaming audio module or Mod Player module is set in pitch shifting mode, command xxx_ASS (60h, 61h) is disabled (always 0). Data (1 byte), bit D7-D0 with : * D7-D4 : Dont care * D3 : Audio In/Echo pitch shifter On/Off. D3=1 ON , D3=0 OFF If D3=1 : command AUDECH_POST (65h)= 7Fh command AUDREV_SEND (27h)= 0 * D2 : Mod Player pitch shifter On/Off. D2=1 ON , D2=0 OFF If D2=1 : command MOD_POST (64h)= 7Fh command VOI_AUX (59h)= 0 command MOD_ASS (61h)=0 * D1 : Streaming Audio pitch shifter On/Off. D1=1 ON , D1=0 OFF If D1=1 : command WAVE_POST (63h)= 7Fh command W_VOLAUX (47h,49h)= 0 command WAVE_ASS (60h)=0 * D0 : General Midi pitch shifter On/Off. D1=0 ON , D0=0 OFF If D0=1 : command GM_POST (62h)= 7Fh Midi controls 91 (reverb send), 93 (chorus send)=0 for midi channels assigned to pitch shifting mode only. For other channels, controls 91,93 are working normally. Note : For general midi, pitch shifter is working only if corresponding instrument is made with a single slot algorithm. All pcm algorithms are single slot, only FM4Y4 algorithm (fm synthesis) is double slot algorithm. - TRANS_GMCH : Select which channels are pitch shifted. Data on 1 word : D15-D0. Di=1, GM channel i pitch shifted Di=0, GM channel i not pitch shifted Note : Di=1 will be active only if command TRANS_ONOFF has been sent before with bit D0=1. Sending TRANS_ONOFF with bit D0=0, reset TRANS_GMCH value. Note : When a midi channel is set in pitch shifting mode, Note Sounding Priority is set to maximum for this channel. Note being played will never be killed by other non pitch shifted channels. - TRANS_VAL : Value of pitch shifting. Data on 1 word. Default = 04000h (no shifting). Linearly scaled. If F0 is original frequency, new frequency F is given by formula : F=F0 * (TRANS_VAL) / 4000h. Recommended range 3000h-5000h (higher values are distorting signal). Note : Pitch shifter can be used in time stretching application. For general midi, this can be done in simultaneously sending a pitch bend information with the pitch shifting value. Dream can provide an utility program (pitshift.exe) giving value of pitch bend and pitch shifting to apply when changing tempo of midi sequence. All GM instrument requiring time stretching must be defined on 94WINST editor with frequency in normal mode and not in fix mode (because pitch bend is not applied if frequency is in fix frequency mode). - TRANS_REVSEND, TRANS_CHRSEND : Reverb and chorus send levels applied on all pitch shifted signals. Data range : 0 to 0ffh Default=0 Chapter 3 FIRMWARE Structures The SAM9407 data Structures in its memory. Those structures includes data shared by firmware and client applications. The SAM9407 memory stores 3 structures: Memory Mapping Table: defines the memory mapping (block type, start address, length) & sound bank list (name, priority level) Midi Mapping Table: defines the midi program & variation + sound bank source for each instrument Control table: store the current values of all the device parameters that can be read back by client applications  Memory Mapping Table (MMT) Memory mapping table stays resident in 9407 board memory. This table is split in two parts, memory block definition and MIDI sound bank definition. Memory mapping table: NbTypeContent643*wordmemory block definition85*wordMIDI sound bank definition Memory Block definition: NbTypeContent1wordBlock type1long32 bits memory block start address Block Type: data [15..8]data [7]data [6..0]content0000 00000000 0000memory size0000 00000000 0001free block0000 0000r000 0010system reserved block0000 0000r000 0011Memory Mapping table0000 0000r000 0100MIDI Mapping Table0000 0000r000 0101MIDI Mapping Table extension0000 0000r000 0110CONTROL Table 0000 i i i ir001 0000MIDI sound parameterdddd i i i ir001 0001MIDI sound PCMxxxx xxxx0010 0000STREAMING WAVE bufferxxxx xxxx0011 0000STATIC WAVE buffer1111 11111111 1111end of memory Memory size block should always be the first block of the Memory Block definition. All others memory block definition are sorted by ascending order; the start address is given by the block itself the end address is given by the next block. End of memory block should always be the last block. Memory Mapping Table block, MIDI Mapping Table block and MIDI Mapping Table Extension block should always be consecutive. Data[7]: This bit is the RAM(0) / ROM(1) flag. It defined the block memory type. ROM blocks could not be modified by user. Memory Size 0000H Total memory size including system reserved block. This value is set by firmware and should not be modified by user. Free Block 0001H Free block is available for user. It could be filled or split by user. Free block is always RAM type System Reserved Block 0082H / 0002H System reserved block can be program or data firmware block. It can also be used for an address area without effective memory. This block even RAM type cant be modified by user. Memory Mapping Table 0083H / 0003H This block is the current Memory Mapping Table location. The MMT start address can be modified by the user. User should also modified MIDI mapping table start address (to be consecutive). Thus MMT and MIDI mapping table should be relocate on memory by the user. The user should also inform the firmware of the new MMT location using the SET_MMT MPU command (see FIRMWARE API) MMT start address is initialize by the firmware. MIDI Mapping Table 0084H / 0004H The MIDI Mapping Table describes the program change and variation mapping according to the MIDI specification This block can be initialized by the firmware if the card embedded a ROM MIDI sound bank. To modify a MIDI Mapping Table in a ROM block, the user should relocate the MIDI mapping table in a free block and release the old block as a system reserved block. To relocate the MIDI mapping table see MMT block relocation. MIDI Mapping Table Extension 0085H / 0005H This block provides an extension for MIDI Mapping table. It avoid to relocated the MMT and the MIDI Mapping table when inserting a new instrument in the MIDI mapping table. The MIDI Mapping table Extension block is created and update by the user (512 word is recommended for initialization size) Control Table 0006H This block is Ram only. It is initialize and update by firmware and read only by user. It cant be modified or relocate by user. MIDI Sound Parameter 0000 iiix - 90H / 10H This is the sound bank Parameter block. iiiis the sound bank ID (0 to 7), iii points to the sound bank definition x is parameter block NB, each sound bank parameter can be mapped at best in two 64K word blocks. MIDI Sound PCM dddd iii0 - 91H / 11H This is the sound bank PCM block. iiiis the sound bank ID (0 to 7), iii points to the sound bank definition dddd is PCM block NB, each sound bank PCM can be split in blocks. Streaming Wave Buffer xx20H This block is RAM only. xx is the streaming wave NB 0-7 for play, 8 for record. Static Wave Buffer xx30H This block is RAM only. xx is the static wave NB (play only). Sound bank definition: NbTypeContent8CharMIDI sound bank name1wordMIDI sound bank priority levelSound bank definition can be initialized by firmware in case of ROM MIDI sound bank. Sound bank definition can be modified by user. MIDI Sound bank name 8 ASCII character corresponding to the MIDI sound bank file name *.94b Unused MIDI sound bank are filled with 8*00H. MIDI Sound priority level Range 0 to 127 Midi Mapping Table Although each bank has its own MIDI mapping a single MIDI mapping table is used by the 9407 board. This single MIDI mapping table is created/updated by SBE and used by 9407 board software. Sound bank exchanges with 9407 board always begin with downloading of MIDI mapping from 9407 board memory, then SBE updates MIDI mapping table and uploads the table back to 9407 board memory. MIDI mapping table describes current MIDI mapping but also includes additional information to recover instruments that were replaced with an higher priority sound bank. Those two kinds of sounds are referred in the instrument mapping table as Current instrument/Drumset Backup instrument/Drumset MIDI mapping table: NbTypeContent1wordtotal table length16wordsound bank page128word16bits pointer to instrument program tablevariableDrumset tablewordFFFF end of block Sound bank page: Sound bank parameter maximum size is 128Kword. If block size is superior to 64K, it should be split into two 64K pages. SBE can manage up to 8 sound banks. The 16 word sound bank page table actually holds 8 sound bank with 2 page parameter each. Even sound bank page refer to the first parameter block and odd to the second parameter block. Instrument program table: NbTypeContentnlongcurrent instrument definitionwordFFFF end of blockplongbackup instrument definitionword FFFF end of block Instrument definition: NbTypeContentbytevariation numberbytesound bank number, actually sound bank nb *2 + 0 (for 1st param block) / 1 (for 2nb param block)word16bit pointer to instrument parameter Drumset table: NbTypeContentn3*wordcurrent Drumset definitionwordFFFF end of blockp3*wordbackup Drumset definitionword FFFF end of block Drumset definition: NbTypeContentwordprogram numberbytevariation numberbytesound bank number (up to 8 bank)word16bit pointer to Drumset parameter CONTROL TABLE The control table stores the current values of all the device parameters that can be read back by client applications. It is a 128 bytes long table, the address corresponds to the device parameter control number (see Firmware API), Only a few control number among the 128 possible values are defined and only a few of these defined parameters can be read back. Ctrl #CONTROL NAMEAction07HMASTER_VOLMaster volume08HREC_MODESelect record mode10HEQ_LBLEqualizer low band left11HEQ_MLBLEqualizer med low band left12HEQ_MHBLEqualizer med high band left13HEQ_HBLEqualizer high band left14HEQ_LBREqualizer low band right15HEQ_MLBREqualizer med low band right16HEQ_MHBREqualizer med high band right17HEQ_HBREqualizer high band right18HEQF_LBEqualizer low band frequency19HEQF_MLBEqualizer med low band frequency1AHEQF_MHBEqualizer med high band frequency1BHEQF_HBEqualizer high band frequency20HAUD_SELAudio1/2 input select (1)21HAUD_GAINLAudio Left input gain (1)22HAUD_GAINRAudio Right input gain (1)25HGMREV_SENDGeneral Midi Reverb Send26HGMCHR_SENDGeneral Midi Chorus Send27HAUDREV_SENDAudio Reverb Send28HECH_LEVEcho level applied on audio in (2)29HECH_TIMEcho time applied on audio in (2)2AHECH_FEEDEcho feedback applied on audio in (2)30HSUR_VOLSurround effect volume31HSUR_DELSurround effect delay 32HSUR_INPInput mono/stereo select for surround33HSUR_242 or 4 speakers output select for surround34HAUDL_VOLLeft Channel Audio in volume (2)35HAUDR_VOLRight Channel Audio in volume (2)36HAUDL_PANLeft Channel Audio in pan (2)37HAUDR_PANRight Channel Audio in pan (2)38HGM_VOLGeneral Midi volume39HGM_PANGeneral Midi pan3AHREV_VOLReverb general volume3BHCHR_VOLChorus general volume3FHUART_MODSwitch to UART mode61hMOD_ASSMOD player audio output assignment (3)62hGM_POSTPost effects applied on general midi (4)63hWAVE_POSTPost effects applied on wave (4)64hMOD_POSTPost effects applied on MOD player (4)65hAUDECH_POSTPost effects applied on Audio in and echo(4)66hEFF_POSTPost effects applied on Reverb-chorus (4)68HECH_ONOFFEcho On/Off (3)69HREV_TYPEReverb program select6AHCHR_TYPEChorus program select6BHEQU_TYPEEqualizer type (3)6CHREV_ONOFFReverb On/Off (3)6DHCHR_ONOFFChorus On/Off (3)6EHSUR_ONOFFSurround On/Off (3)6FHAUD_ONOFFAudio On/Off (3)72HPOLY_64Enable 64 voice polyphony (3)74HCHR_DELChorus delay75HCHR_FEEDChorus feedback76HCHR_RATEChorus rate77HCHR_DEPTHChorus depth78HREV_TIMEReverb time79HREV_FEEDReverb feedback Chapter 4 MIDI Implementation  MIDI MESSAGEHEX CODEDESCRIPTIONCOMPATIBI-LITYNOTE ON9nH kk vvMidi channel n(0-15) note ON #kk(1-127), velocity vv(1-127). vv=0 means NOTE OFF MIDINOTE OFF8nH kk vvMidi channel n(0-15) note OFF #kk(1-127), vv is dont care.MIDIPITCH BENDEnH bl bhPitch bend as specified by bh|bl (14 bits) Maximum swing is +/- 1 tone (power-up). Can be changed using pitch bend sensitivity. Center position is 00H 40H.GMPROGRAM CHANGECnH ppProgram (patch) change. Specific action on channel 10 (n=9) : select drumset. Refer to sounds / drumset list. Drumsets can be assigned to other channels (see SYSEX MIDI channel to part assign and part to rhythm allocation) GM/GSCHANNEL AFTERTOUCHDnH vvvv pressure value. Effect set using Sys. Ex. 40H 2nH 20H-26HMIDIMIDI RESETFFHReset to power-up conditionCTRL 00BnH 00H ccBank select : Refer to sounds list. No action on drumset. cc=64 reserved for dream sound editorGS/ DREAMCTRL 01BnH 01H ccModulation wheel. Rate and maximum depth can be set using SYSEXMIDICTRL 05BnH 05H ccPortamento time. MIDICTRL 06BnH 06H ccData entry : provides data to RPN and NRPNMIDICTRL 07BnH 07H ccVolume (default=100)MIDICTRL 10BnH 0AH ccPan (default=64 center)MIDICTRL 11BnH 0BH ccExpression (default=127)MIDI/GMCTRL 64BnH 40H ccSustain (damper) pedalMIDICTRL 65BnH 41H ccPortamento ON/OFF MIDICTRL 66BnH 42H ccSostenuto pedalMIDICTRL 67BnH 43H ccSoft pedalMIDICTRL 80BnH 50H vv Reverb program vv=00H to 07H (default 04H) 00H : Room1 01H : Room2 02H : Room3 03H : Hall1 04H : Hall2 05H : Plate 06H : Delay 07H : Pan delay DREAMCTRL 81BnH 51H vvChorus program vv=00H to 07H (default 02H) 00H : Chorus1 01H : Chorus2 02H : Chorus3 03H : Chorus4 04H : Feedback 05H : Flanger 06H : Short delay 07H : FB delay DREAMCTRL 91BnH 5BH vvReverb send level vv=00H to 7FHGSCTRL 93BnH 5DH vvChorus send level vv=00H to 7FHGSCTRL 120BnH 78H 00HAll sound off (abrupt stop of sound on channel n)MIDICTRL 121BnH 79H 00HReset all controllersMIDICTRL 123BnH 7BH 00HAll notes offMIDICTRL 126BnH 7EH 00HMono on MIDICTRL 127BnH 7FH 00HPoly on (default power-up)MIDICTRL CC1BnH ccH vvHAssignable Controller 1. cc=Controller number (0-5Fh), vv=Control value (0-7Fh). Control number (ccH) can be set on CC1 CONTROLLER NUMBER (Sys. Ex 40 1x 1F). The resulting effect is determined by CC1 controller function (Sys.Ex. 40 2x 40-4A)GSCTRL CC2BnH ccH vvHAssignable Controller 2. cc=Controller number (00h-5Fh), vv=control value (0-7Fh). Control number can be set on CC2 CONTROLLER NUMBER (Sys.Ex. 40 1x 20). The resulting effect is determined by CC2 controller function (Sys.Ex.40 2x 50-5A).RPN 0000HBnH 65H 00H 64H 00H 06H vvPitch bend sensitivity in semitones (default=2)MIDI/GMRPN 0001H BnH 65H 00H 64H 01H 06H vvFine tuning in cents (vv=00 -100, vv=40H 0, vv=7FH +100MIDIRPN 0002HBnH 65H 00H 64H 02H 06H vvCoarse tuning in half-tones (vv=00 -64, vv=40H 0, vv=7FH +64MIDINRPN 0108HBnH 63H 01H 62H 08H 06H vvVibrate rate modify (vv=40H -> no modif)GSNRPN 0109HBnH 63H 01H 62H 09H 06H vvVibrate depth modify (vv=40H -> no modif)GSNRPN 010AHBnN 63H 01H 62H 0AH 06H vvVibrate delay modify (vv=40H -> no modif)GSNRPN 0120HBnh 63H 01H 62H 20H 06H vvTVF cutoff freq modify(vv=40H -> no modif)GSNRPN 0121HBnH 63H 01H 62H 21H 06H vvTVF resonance modify (vv=40H -> no modif)GSNRPN 0163HBnh 63H 01H 62H 63H 06H vvEnv. attack time modify(vv=40H ->no modif)GSNRPN 0164HBnH 63H 01H 62H 64H 06H vvEnv. decay time modify(vv=40H -> no modif)GSNRPN 0166HBnH 63H 01H 62H 66H 06H vvEnv. release time modif(vv=40H ->no modif)GSNRPN 18rrHBnH 63H 18H 62H rr 06H vvPitch coarse of drum instr. note rr in semitones (vv=40H -> no modif)GSNRPN 1ArrHBnH 63H 1AH 62H rr 06H vvLevel of drum instrument note rr (vv=00 to 7FH)GSNRPN 1CrrHBnH 63H 1CH 62H rr 06H vvPan of drum instrument note rr (40H = middle)GSNRPN 1DrrHBnH 63H 1DH 62H rr 06H vvReverb send level of drum instrument note rr (vv=00 to 7FH)GSNRPN 1ErrHBnH 63H 1EH 62H rr 06H vvChorus send level of drum instrument note rr (vv=00 to 7FH)GSNRPN 37xxHBnH 63H 37H 62H xx 06H vvSpecial SAM9407 features controls (see below)DREAMStandard SysexF0H 7EH 7FH 09H 01H F7HGeneral MIDI resetGMStandard SysexF0H 7FH 7FH 04H 01H 00H ll F7HMaster volume (ll=0 to 127, default 127) GMROLAND SYSEXF0H 41H 00H 42H 12H 40H 00H 00H dd dd dd dd xx F7HMaster tune (default dd= 00H 04H 00H 00H) -100.0 to +100.0 cents. Nibblized data should be used (always four bytes). For example, to tune to +100.0 cents, sent data should be 00H 07H 0EH 08H GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 00H 04H vv xx F7HMaster volume (default vv=7FH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 00H 05H vv xx F7HMaster key-shift (default vv=40H, no transpose)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 00H 06H vv xx F7HMaster pan (default vv=40H, center)ROLAND SYSEXF0H 41H 00H 42H 12H 40H 00H 7FH 00H xx F7HGS resetGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 30H vv xx F7HReverb type (vv=0 to 7), default = 04H 00H : Room1 01H : Room2 02H : Room3 03H : Hall1 04H : Hall2 05H : Plate 06H : Delay 07H : Pan delay GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 31H vv xx F7HReverb character, default 04HGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 33H vv xx F7HReverb master level, default = 64GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 34H vv xx F7HReverb timeGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 35H vv xx F7HReverb delay feedback. Only if reverb number=6 or 7 (delays)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 38H vv xx F7HChorus type (vv=0 to 7), default = 02H 00H : Chorus1 01H : Chorus2 02H : Chorus3 03H : Chorus4 04H : Feedback 05H : Flanger 06H : Short delay 07H : FB delay GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 3AH vv xx F7HChorus master level, default = 64GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 3BH vv xx F7HChorus feedbackGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 3CH vv xx F7HChorus delayGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 3DH vv xx F7HChorus rateGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 01H 3EH vv xx F7HChorus depthGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1pH 02H nn xx F7HMIDI channel to part assign, p is part (0 to 15), nn is MIDI channel (0 to 15, 16=OFF). This SYSEX allows to assign several parts to a single MIDI channel or to mute a part. Default assignment : part MIDI channel 0 9 (DRUMS) 1-9 0-8 10-15 10-15 GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1pH 15H vv xx F7HPart to rhythm allocation, p is part (0 to 15), vv is 00 (sound part) or 01 (rhythm part). This SYSEX allows a part to play sound or drumset. There is no limitation of the number of parts playing drumset. Default assignment : part 0 plays drums (default MIDI channel 9) all other parts play sound.GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1nH 40H v1 v2 ... v12 xx F7HScale tuning, n is MIDI channel (0 to 15), v1 to v12 are 12 semi-tones tuning values (C, C#, D, ... A#, B), in the range -64 (00H) 0 (40H) +63(7FH) cents. This SYSEX allows non chromatic tuning of the musical scale on a given MIDI channel. Default v1, v2, ... ,v12 = 40H, 40H,...,40H (chromatic tuning). Scale tuning has no effect if the part is assigned to a rhythm channel or if the sound played is not of chromatic type.GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1nH 1AH vv xx F7HVelocity slope from 00H to 7FH (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1nH 1BH vv xx F7HVelocity offset from 00H to 7FH (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1nH 1FH vv xx F7HCC1 Controller number (00-5FH) (default = 10H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 1nH 20H vv xx F7HCC2 Controller number (00-5FH) (default = 11H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 00H vv xx F7HMod pitch control (-24,+24 semitone) (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 01H vv xx F7HMod tvf cutoff control (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 02H vv xx F7HMod Amplitude control (-100%-+100%) (default=40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 03H vv xx F7HMod lfo1 rate control (default = 40H). n is dont care. Rate is common on all channelsGSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 04H vv xx F7HMod lfo1 pitch depth (0-600 cents) (default=0AH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 05H vv xx F7HMod lfo1 tvf depth (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 06H vv xx F7HMod lfo1 tva depth (0-100%) (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 10H vv xx F7HBend pitch control (-24,+24 semitone) (default = 42H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 11H vv xx F7HBend tvf cutoff control (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 12H vv xx F7HBend Amplitude control (-100%-+100%) (default=40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 14H vv xx F7HBend lfo1 pitch depth (0-600 cents) (default=0AH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 15H vv xx F7HBend lfo1 tvf depth (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 16H vv xx F7HBend lfo1 tva depth (0-100%) (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 20H vv xx F7HCAF pitch control (-24,+24 semitone) (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 21H vv xx F7HCAF tvf cutoff control (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 22H vv xx F7HCAF Amplitude control (-100%-+100%) (default=40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 24H vv xx F7HCAF lfo1 pitch depth (0-600 cents) (default=0AH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 25H vv xx F7HCAF lfo1 tvf depth (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 26H vv xx F7HCAF lfo1 tva depth (0-100%) (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 40H vv xx F7HCC1 pitch control (-24,+24 semitone) (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 41H vv xx F7HCC1 tvf cutoff control (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 42H vv xx F7HCC1 Amplitude control (-100%-+100%) (default=40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 44H vv xx F7HCC1 lfo1 pitch depth (0-600 cents) (default=0AH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 45H vv xx F7HCC1 lfo1 tvf depth (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 46H vv xx F7HCC1 lfo1 tva depth (0-100%) (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 50H vv xx F7HCC2 pitch control (-24,+24 semitone) (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 51H vv xx F7HCC2 tvf cutoff control (default = 40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 52H vv xx F7HCC2 Amplitude control (-100%-+100%) (default=40H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 54H vv xx F7HCC2 lfo1 pitch depth (0-600 cents) (default=0AH)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 55H vv xx F7HCC2 lfo1 tvf depth (default = 0H)GSROLAND SYSEXF0H 41H 00H 42H 12H 40H 2nH 56H vv xx F7HCC2 lfo1 tva depth (0-100%) (default = 0H)GS notes : NRPN sending method : CTRL#99=high byte, CTRL#98=low byte, CTRL#6=vv Example : NRPN 0108H = 40H -> CTRL#99=1, CTRL#98=8, CTRL#6=64 x or xx means dont care DREAM SPECIAL NRPN CONTROLS The various features of the SAM9407 are controlled by NRPN MIDI messages as follows : NRPN # (High|Low)DescriptionPower-up default3700HEqualizer Low band (bass) 0=-12dB, 40H=0dB, 7FH=+12dB60H (+6dB)3701HEqualizer Med Low band 0=-12dB, 40H=0dB, 7FH=+12dB40H (0dB)3702HEqualizer Med High band 0=-12dB, 40H=0dB, 7FH=+12dB40H (0dB)3703HEqualizer High band (treble) 0=-12dB, 40H=0dB, 7FH=+12dB60H (+6dB)3708HEqualizer Low cutoff freq 0=0Hz, 7FH=4.7 kHz0CH3709HEqualizer Med Low cutoff freq 0=0Hz, 7FH=4.2 kHz1BH370AHEqualizer Med High cutoff freq 0=0Hz, 7FH=4.2 kHz72H370BHEqualizer High cutoff freq 0=0Hz, 7FH=18.75 kHz40H3710HInput select 0=select microphones 7FH=select AUXL/ AUXR (note 1) 00H (mikes)3711HMike1/AUXL input gain 0=0dB to 7FH=+22.5dB (note 1)00H (0dB)3712HMike2/AUXR input gain 0=0dB to 7FH=+22.5dB (note 1)00H (0dB)3720HSurround effect volume 0= no effect, 7FH= maximum effect00H3724HMike1/AUXL volume 0 to 7FH 40H3725HMike2/AUXR volume 0 to 7FH 40H3726HMike 1/AUXL pan 0=hard left, 40H=center, 7FH=hard right00H (left)3727HMike 2/AUXR pan 0=hard left, 40H=center, 7FH=hard right7FH (right)3728HMike/AUX echo level 0 to 7FH40H3729HMike/AUX echo time 0=shortest to 7FH=longest 40H372AHMike/AUX echo feed-back 0=no feed back to 7FH=maximum feedback 40H372CHSurround effect delay 0=shortest to 7Fh=longest 2H372DHSurround effect input 0=stereo, 7Fh=mono 0H372EHSurround effect output mode 0=2 speaker mode, 7Fh=4 speaker mode 0H note 1 : Aux inputs are available only with CS4216/CS4218 type DAC/ADC.  PRELIMINARY & CONFIDENTIAL  PAGE 2121  an  INCORPORER Word.Picture.6  Company PRELIMINARY & CONFIDENTIAL  PAGE 23231221          CHAPTER1: FIRMWARE API OVERVIEW OVERVIEW Chapter1: WINDOWS API Chapter1: WINDOWS API Chapter2: FIRMWARE API Chapter2: FIRMWARE API Chapter3: FIRMWARE Structures Chapter3: WINDOWS API Chapter4: MIDI Implemetation ࡱ; :.A4 7n.A4 7nࡱ;A.4 7n.A4 7nࡱ.A4 7n.A4 7nࡱ;.A4 7n.A4 7n :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<|fo :/U   hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U   hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`??      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~??????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U   hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U   hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<| :/U 16  hD   DC (?~>?????????????????~??~??~??~???~???>p???p??p??p??p???p?~??p??p??x?x?x??|?|??|?~?~?0~?0????????????? ?``?x?|@`?x??| ?`????????<<|_907653538 FTZTZPIC LMETA XhjCompObjjI_5  #5 /&WordMicrosoft Word    D---g . --Z : "Arialr -  2 :  post Fx / main%%")"8%%"ArialG-'--@ . --3 : - 2 :  post Fx / main%%")"8%%-'-!-  ---!-z.y----!-, + ---!-  ---!-.----!-  ---!----!--,---!-  ---!-nm---!-.----!-. - ----f  --Y & - 2 &  post Fx / main%%")"8%%-'-!-.----!-.----!- z y---!- ~ ---!-? >~ ---!-- , ---!- n m---!-U T~ ---!-{ z~ ---!-  ---!----!- T S---!-   ~ ---- 2  --------------------|T--o`-2 m  reverb bus%"%%%%"-'-- f -- r& -2 &  (62h)%%%-'--ng--`s-2  (30h)%%%-'--U?--HK-2 K  (56h / 57h)%%%%%%-'--S--_-2 l (60h)%%%-'--,--8-2 E (61h)%%%-'--. . @--! ! L-2 L (28h)%%%-'--A .@--5 !L-2 L (27h)%%%-'--z-- -2   (47h / 49h)%%%%%%-'--{?--oK-2 K  (45h / 46h)%%%%%%-'----"-2 /  (38h / 39h)%%%%%%-'----- $- 2 $ pre Fx / 4 Out%%)"%4%-'--T--G$- 2 $ pre Fx / 4 Out%%)"%4%-'-- Q --q ^ -2 k  (66h)%%%-'--z  --m  -2   (3Bh)%-%-'--R  --F  -2   (3Ah)%-%-'-- ? -- K& -2 X&  (63h)%%%-'--  -- %& -2 2&  (64h)%%%-'--   -- & -2 &  (65h)%%%-'--  --  -2  (8h)%%-'--W | --J $ -2 1  surround bus"%%%%%%%"-'-- g>-- YJ-2 J Audio-%%%-2 3 J iinput%%%-'-- . --  : - 2 :  post FX / main%%")-8%%-'--/G>f--5Ov-2  MIDISH'-M--- $ E$a+>---y?y---?--f--ff --~--- $k----Gf--5)v-2 o WAVE^CCC'& G-S--- $UQW[ $fbhl $wsy} $---!-TS---!----!--- & -'--- $ $:+---S?S--?--?--?? ----- $ $+----Gf--5v-2 H MODSNH'& GF----- $/+15 $@<BF $QMSW $b^cg---!-.----!----!-ji-- & -g--- $ $+---,?,--?---- --v--- $ n$+g----------m G| f--\ 5 v-2  Audio INC888H'-  l--- $Y t {| ---- ?- ---  --  . --@ ~--- $k----1 @ --! R *-2  EchoC288'-  -- - ---~ --ms -2  ChorusH88!82'--V e--Es v-2  ReverbH828!8'----&5r5- h  --- $ $ $ $    ---!- ---!-i h  ---!-  -- & &5rm-@  --- $ B > D H $ S O U Y $ d ` f j $ u q v z---!-A @ ---!-  ---!-} | -- & &5r -  --- $    ! $ , ( . 2 $ = 9 ? C $ N J O S---!-  ---!-  ---!-V U -- & &5{ r -  --- $     $     $ ( $ * . $ 9 5 : >---!-  ---!-  ---!-A @ -- & -  --- --u -2 M EQCN'--Lk--;|-2  SurroundC8!!8888'-,,k--, --mm--T T} --, , --h  h -- ~ ~ --h  --  --  --z z} -- } --gg----g---. F D--! 9 O-/2 O Audio IN / post FX input-%%%0%%")-%%%-'--X/ --K; -2 N  post FX%%")--2   bus%%"-'&,-  --- $     $     $     $    ---!-  ---!-  ---!-  -- & -|  --|  --> >} --  -- ~ --  --+ + ---  - . -- > ? Symbol- 2 R  S;-'-   --   } --U  ---------  --  -2   WAVE^CCC-2  RecordH828!8'&:(Fw(-i  --- $k g a e $Z V P T $I E ? C $8 4 / 3 ---!- j i - --!-   - --!- . - - - & -- - --U U -- U --h h -&+=+F--1m--- $//3+9155 $@@D<JBFF $QQUM[SWW $bbf^kcgg---!- .2-1- --!- nm- --!- jnim- - & -,1,E--gm m--- A - -5 *-2 *  Main Output8%%4%%%-'-- oS- -b_*-"2 l* Surround Output-%%%%%4%%%-'- f y--- ?z- -2-2   (25h / 26h)%%%%%%-'->  --- $ ' . -- -  --- $ ' . -- -g--- $-- --  ,- -8-2 E (33h)%%%-'-- 4z- -&- 2  2 / 4 speakers%%"%%%"%"-'-- $     $     $     $    ---- $     $ . . 6 6 $ F F N N $ ^ ^ f f $ v v ~ ~ $     $     $     $     $     $     $   ' ' $ 7 7 ? ? $ O O W W $ g g o o---- $     $     $ # ' - ) $ 4 8 > : $ E I O K $ V Z ` \ $ g k q m--- ? ---S--S S-- l--- $Yt{-- -R>R--R| R--- -T*- -`6-/2 m6 (34h / 35h / 36h / 37h )%%%%%%%%%%%%-'-- zz- --2   (56h / 59h)%%%%%%-'&5A r -g + --- $ i e k o $ z v |  $     $    ---!- h g - --!- , + - --!-   - - & -  ~ --- - --2  pre FX%%)--2 ' bus%%"-'-  --B B ---  -U - - a -2 n   Stereo bus-%%%%%"-'-- ~ - - -q  -2   Mono bus)8%%%%%"-'-ࡱ; vWObjInfo     ( & $ }ObjectPool#&$ %TZTZ WordDocument$yN'Of >  l&Y'ZESummaryInformation (ܥe= eE7:l:ll:l:D;D;D;n;n;n;n;n;n;~;n;+E1;;;;;BBBBBBB)BC E\ETE$+ED;B;BBB+EBl:l:;;BBBBl:;D;;BX;`;l:l:l:l:BBBB                post Fx / main pre FX bus Reverb (38h / 39h) (66h) (3Ah) (47h / 49h) (45h / 46h) (25h / 26h) pre Fx / 4 Out pre Fx / 4 Out (3Bh) (63h) (64h) (65h) (8h) 2 / 4 speakers (33h) post FX / main surround bus post Fx / main post Fx / main Audio iinput Surround Output Main Output MIDI WAVE MOD Audio IN post FX bus (62h) (60h) (56h / 59h) (30h) (61h) (56h / 57h) reverb bus (34h / 35h / 36h / 37h ) (27h) Echo (28h) Stereo bus Mono bus) Chorus EQ Surround Audio IN / post FX input S WAVE Record EQ Surround Mod 4 Outputs A. qj 2\(% qK22o0(P 9K20Z0&d"P K220(f A(=0&P !&& $PK2$PK2$ PK2:0A0&b'P (K2000&(*P (K22/(lUK200&J (K20a0&& K20b0&&lUT K22/(&9K22/(" 9K2._$J PK20J0&J K20/0& )l(K20?0&! (K20B0&b'l(K20/&K20i0&K22/(jUK22/(UK22X0(jK22/(LqK22/(LqK20c0&& K22/("9K22/(%h9K22/(%9K22/(%"9K22/(\6"K20$0&^1o n (K2.e$9PK22]0(>:K22\0(>:UK20[0&x7K20S0&698(K20T0&9.(K2R0"9!&& $PK2$PK2$ PK2:080&(K2.Y$9PK20+0&9UT(K22/(#qK22/(!qK22(#LqK22(#qK20Y0&d"K2.i$:PK2.j$:PK2.f$ )fPK2.g$ )PK2.b$ )PK2.c$ )2PK2.d$(*PK2.U$(*JPK2.`$JPK2.a$4 H!PK22/( 9K22V0(Z;0K22U0(Z;K20I0&JK2.Q$JPK20/&o n (K20/&0SR(K2/.!&& $PK2$PK2$ PK2:0 0&(K20 0&(K2.Z$JPK2.T$JPK2.W$^1PK20)0&^1qp(K2.3$(*PK2.R$(*jPK2.S$(*PK2.V$PK2.X$0"PK2.[$(*!PK22/(l2A(0/&2K20/&UT(K20/&0(K20/&032(K22/(lA(0/&K20/&LUT(K200&0L(K200&0h32(K200&K220(lA(0.!&& $PK2$PK2$ PK2:00&K200&SR(K200&UT(K20 0&0(K20 0&032(K20 0&.K220(l, A(00&!UT(K200&0!(K22<0(*N9K2m0b'j!&& $PK2$PK2$ PK2:2/(%9K22/(09K22l0(jUK22/(x7.9K22/(9K22/(JUK22/(0fqK22k0( f7K200&K20j0&K22/(9K20g0&K20f0&98K20e0&qpK2.l$ )PK20n0& )SR(K220(A(00&, K20W0&4 H!98(K200&$ (K200&" (K2.k$ PK22/( 9K20d0&  K22r0(2$K20p0& *%UT(K22s0(2F&K20q0& &UTK220(fA(0b'd"!&& $PK2$PK2$ PK2: 0b'!&& $PK2$PK2$ PK2:!0b'J!&& $PK2$PK2$ PK2:"0b'!&& $PK2$PK2$ PK2:2%0(+A(2&0(z2A(0'0&B098(K20,0&'f(K20-0&(*(K20.0&'d"98(K2010&'J98(K2020&'98(K2030&'(K2040&'(K2070&.(K2090&qp(K22;0(/ 7K20>0&!(K20@0&'2(K20C0&'98(K20D0&'j98(K22E0(#!99(0F0&%"(K20G0&'#(K20H0&0"(K22K0(8H!(L05!!&& $PK2$ PK2$PK2:0M0&(*!  (K20O0&0$(K20P0&5"(K20Q0&\6d"(K200&0"Q P (K2./$6PK2./$p4PK2./$@P4PK2/4!$PK2$PK2$ PK22/(P8A2/(8A2/(P3A0/&p`90/&P4qp0/&p:! 0/&0 7A @ 0/&0 70/&09! 0/&9! 0/&p50/&40/&P4! 0/&p5 0/&P6A@ࡱ;   ikmnopqstuwxyz !#.0>@NPUW\^cejlpr "')46;=BDOQ[]ucuD]ac`uw|f/uc]a c jknprsuxz "#/0?@OPC6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 C6 81 66xx+PVW]^deklqr !"()r6866S1 1 1 1 x,)56<=CDPQ\]vw}~61 1 1 1  1 F F FFC6 xx+K @ Normal ]a cA@Police par dfaut$18?LYfv )/5:DQX_lsz &69  uf/P)  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghklnpsuvxz{|}~J|N~ B p 0 `   & X    P    D v Br:j"P~6h*Zh$R :h(XJzJz <l|Dv <l.\ N ~  !@!p!!!""#$|%%%&@&p&&&'0'`''''"(R(((()D)t))***+D+t++++,,,&-V----.F.v.../6/@HP LaserJet 4 Plus/4M PlusLPT2:HPPCL5EHP LaserJet 4 Plus/4M Plus  D $۝@6X$HP LaserJet 4 Plus/4M Plus  D $۝@6X$ 1Times New Roman Symbol &Arial"݊ FW &k!$RINN IPC CORP OEMࡱ;  $ H l   DhC:\WINWORD\MODELES\NORMAL.DOTRINN IPC CORP OEM@ C@|@@BMicrosoft Word 6.016L>Pp# ࡱ;   FImage Microsoft Word 6.0 MSWordDocWord.Picture.69qࡱࡱ; _Oh+'0 ࡱ0/&<$$(00&%%00&G%%_907685320 FTZTZPIC LMETA  HCompObjj>P~  #&WordMicrosoft Word    -Times New Roman0- - "-. ,T "--! 8`-2 I` Chan 17-327*%*****'- "-  -- % -"2 6 en/dis midi out%** A***'- "--?--  L-2 ]_SAM9407.<J****-2 t synthesis ***%  '- "-US--H_-2 _MIDI outJ<**'- "-e--q-2 qMPU inJ.<*'- "-S--_-2 _MIDI inJ<*'- "-Ue--Hq-2 qMPU outJ.<**'- "-.||--!o"ArialK-#2 Stand alone modeC!8==8==8Y==8-' "-B-- "- $II,--- "-- ?| --  L -2 ] SAM9407.<J****-2 synthesis ***%  '- "-U0  --H#  -2  MIDI outJ<**'- "-B --5 -2 MPU inJ.<*'- "-0  --#  -2  MIDI inJ<*'- "-UB --H5 -2 MPU outJ.<**'- "-. |A --! M -2  UART modeHHH=Y==8-' "-  -- "- $  , -- "-V  -- "- $^ ^ A -- "-i Bi -- "- $U I| Ii ,-- "-A  - "-  - "-S- "-- B- -- "- $ IA I- ,-- "- . - "--  -- "-~ , --q 8 -2 I Chan 1-167*%****'- "-,+--87-2 I7 Chan 1-167*%****'-ࡱ; vWObjInfoObjectPoolTZTZWordDocumentSummaryInformation(ܥe= effff  13) Tt)fffHffff Chan 17-32 Chan 1-16 Chan 1-16 en/dis midi out SAM9407 synthesis MIDI out MPU in MIDI in MPU out UART mode SAM9407 synthesis MIDI out MPU in MIDI in MPU out Stand alone mode .A ]u2/(.qK220(.qK220(#.qK200&d"f0 0&, fK20 0&!K20 0&d".K20 0&jfUTK20/&j.98K22/(H!fK200&$fK20 0&$K200&".98K200&, K220( 9K220(F&UK220(UK220(F&UK220(UK220(, K22/(29K22/(UK22/(P UK22/(UK22/(P UK22/( K2uU]c uDa &'12<=MNV`ajkrs{|p#666  p#%K@Normala A@Police par dfaut "3FPXaju  !SEu7g-_'Y@HP LaserJet 4 Plus\\dream\fa_laserjet_iiHPPCL5MSHP LaserJet 4 Plus@w  XX@MSUDNHP LaserJet 4 Plus;d HP LaserJet 4 Plus@w  XX@MSUDNHP LaserJet 4 Plus;d 1Times New Roman Symbol &Arial" ך F !) IPC CORP OEM R-Y STROHࡱ; vW $ H l   DhC:\PROGRA~1\WINWORD\NORMAL.DOT IPC CORP OEM R-Y STROH@r3#@Y@Q ֻ@`4<Microsoft Word 6.010L?hࡱ;   FImage Microsoft Word 6.0 MSWordDocWord.Picture.6ࡱ;ࡱ;  Oh+'0 _911377968 FTZZPIC "LMETAn T Times ;@(CompObj$b      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHqNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~?( ts&WordMicrosoft Word    D-Times New Roman- ""Arialnd- % % %   Q  sC QQ(Q???0<?????????????????????????????????????????????????????<????????????????????????????????3??????????????????????<????????????????? ????<?? <????? ?00?3?  ? ? ?<0?0<?<? 0??????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? l&Y'ZMSummaryInformation ('      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~rܥe= effffrrr  51fT,5rvw5fff rffff  .A:/Wi110  ss  Q sC QQ(Q???0<?????????????????????????????????????????????????????<????????????????????????????????3??????????????????????<????????????????? ????<?? <????? ?00?3?  ? ? ?<0?0<?<? 0????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????BJKL  y 45GHnop BEF2 AEF2 AEF2 uD6UaKuD6avKuDkuDUac]ca ]c8]c`]c( uDa AEF2 BEF2 BEF2 > 789GHQRS`ajkl45>?@WXabctu~ /01MNOfgh BEF2 AEF2 AEF2 BEF2 AEF2 BEF2 BEF2 AEF2 AEF2 Ph012IJ]^pq 45>?@XYZrst BEF2 AEF2 BEF2 AEF2 AEF2 AEF2 BEF2 AEF2 R56CDE\] +MN^ "#&KLWpt >?@CĽ˰ BEFx2 U AEFv2 BEFx2 BEFv2 BEF2 U BEFv2 U AEFw2 U BEFw2 AEF2 AEF2 UU BEF2 V BEF2 V AEF2 BEF2 AEF2 >CGHOPQRoy 6ETUWa~-B%0NETW= H BEF2 BEF2 BEF2 AEF2 AEF2 U AEF2 U BEF2 BEFx2 BEFy2 BEF2 U BEFx2 U BEFy2 UF L!T!N"T"Z"g"""##$$%%%,%j%u%&&''/'''''''$(0((()),)2)8)I)))W*c***+,,,&,,,2,6,;,J,K,L,M,V,c,d,e,k,z,,,,,,,, BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 U BEF2 U BEF2 AEF2 UG,,,,-----./.0.2.D.F.N.O.P.X.u.w.y...////%/1/[/\/g/o/v/w/~/////^0f0g000000000000ý BEF2 BEF2 BEF2 U BEF2 U BEF2 BEF2 BEF2 U BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 U BEF2 BEF2 BEF2 6000111h1u1v1w11222222222#3.333?5G55555 66668 888888889^9f999990:;:::::l;r;x;;'<2<<<A=I=====>>l>x>>>*?0?6?G???U BEF2 BEF2 BEF2 BEF2 BEF2 BEF2 U BEF2 BEF2 Q???M@U@@@@@+A6AAA>BFBBBBBCCLCXCCCCCCCCCC DbDjDDDDD EEE(EQEYEEEEEnFyFFFuGvGGIIIIIJUJbJJJKK"K1KKKKKMMNNaNcNdNjNpNNNNNOO O O AEF2 U AEF2 ]c]cU]cUZ OOO*O+O,O0O1O2O:O;O[OgOOOOOOOOOPPP!P"P/P@PAPNPsPuPPPPPPP/Q1QQQQQRReRqRRRRRRRS+SfSnSSSSS$T1TTTTTTTT UUU^UUUUUUU VV=WIW]cAEF2 ]cV AEF2 BEF2 BEF2 AEF2 UUTIWJWKWWWWWWWWXX#X(X3XkXvXXX#Y+Y-Y/Y=YCYHYTYYYYY@ZHZk[q[v[[[[\\\\E]N]O]P]k]l]]]]F^G^Y^^_o_u`|`\a^aaabbbbbcccc c!c;c~AB}~† WX rňӈ!ljՉ*5>?ьތdp "Zڑۑgh}~./3EϗؗۘoruDU]ccV]cU]c]c U]bcUb]VU[UR()]^՚֚țқer˜ל./035UVWxy'(ghϞОxyʟ˟tu̠͠deVvɣ$*߹۹]^c BEF$ f AEF6J & BEF6J &U U]bcUb]cU]cuDU]cuD-6U]cKuD-6avKIΤ:BO{åĥmnݧFGtuЩѩopGHab¬̬άϬڬְ!^jĴŴŶѶȸ# U[]c U]bcUbBEF $ f]c]^cU]c]cV#Cq{_iUo"45rs/0vw@AVb ,LZHI~,KX67mn/0^_"UUb]cU]c]c U]bc\"/r#fr&'cd&'de*+lm;<FScd TU <=R)*@~u]^cU U]bcUb]c]cU]cZ"##vw~R$9WjW|3V""6/av/Kco}:Ox       2 = X Y  U]bcUbUVUcuDUaca ]^c]cU]cR      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopstuvwxyz{Y v w {            3 4 X Y         +,Z['(PQst*+NOCDpqLM&'^_}~]c BEF FBEF F]c BEF F[()KLkl<=@G^_bcST    fgjk89mnFGwx  h i ]cU] uDUaa ]c]i   5!6!!!!!0"1""""".#/#####G$H$$$$$\%]%%%&&Y&Z&&&''((~(((( )!)))I*J*****e+f+C,D,,,,,3-4-z-{---......\0]0L2M222!3"33333e4f444657555768666]^c]cb666l7m777?8@888 9 9t9u9@zA{A|AAAAAB BBBB BhBiBBBBB@CACyCzCCCCC-D.DDDDDEEWEXEEEEEEE@FAFiFjFFFFF>G?GGGGG'H(H,H-H/HKHLHRHP uDP P]cuDQ uDa U]bcUbcUb]]^c]c]]cPRHSHUHWHXHZH[HgHiHjHkHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH~ytuD0 uD$uDuD uD uDa AEF$ fPABEFd2 PABEF4J &PABEFZ fP BEFZ fPP P]cuD0R6]ceKuD0R6avKuD0#]ce]c$]cuDp]c AEFZ fP BEFZ fP uDP,HHHHHHHHHHHHHIIII'I(I=I>I?ITIUIVIcIdIlImInI{I|IIIIIIIIIIIIIIII uBEF5J &U]c,U]c,]c,uD`uDTiuDHJ uDauD<+/'>?@AKLangyBb4&4&4&4&4&4&4&4&4&4&44&44&|4& 4&4&4&(4&(4&(4&(4&4&4&4&4&(4&(4&4&4&4&4& #  4##i  F  w x y t*6BN4&H4&4&4&4&4& 4&4& 4& 4&4& 4& 4&4& 4&  64&4&,4&4&4&4&4&4&4&4&4&(4&(4&( #  4%#  4 NZ45GHo8Rk?b 0N4&(4&(4&4&4&4&# #  4'Ng1IJ]^?YsDkGM4&4&(4&(4&(4&4&4&4& #  4#&MN?UVWNO= K!L!="?"@"N"""""" #F#T#l#w###4&4&4&4&4&4&4&\4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& 3#*#$$|$$$$$%?%i%j%%%%% &@&&&&&'''i'j'k''''''#($((()),)b)))4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&v 3 v 3())))**V*W***'+++,,,,,,&,K,y,z,,,,,l-----//1/[/\/w///4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&x4&4&4&4&4&4&4& v3 v 3 3'/ 0;0]0^0000000v1w1192h222222"3#3;3{333333T44445>5?55554&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& v 3 3 v3'556 6!6S6j66666/7|777788{8}8888888]9^99999/:0:L:::::Q;R;S;T;4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& v3 3*T;U;V;Y;l;;;&<'<=<<<<@=A=====>>>+>;>J>[>k>l>>>??*?a??????????L@4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& 3+L@M@@@@A*A+ADAgAuAAA=B>BBBBBCC"CKCLCCCCCCCCaDbDDDDD E EEEPE4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& 3 3 3)PEQEEE'FmFnFFFGGGHH'HIHnHoH~HHHHH9I:IGIfIIIIIJKJUJaJ}J~JJJ4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& 3W 3 3 33 3&JJJJKKKIKKKKKK7LmLLLLL0MZM[MMMMNKNMNdNNNOO*O+O4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& ; 3 3 3 3W 3"+O[OOOOP!P@PsPPP/QQQdReRRRRRRRRSSSeSfSSSSST$T0TLTMTvTTTT4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& 3W 3 3(TTTTTTTUU\UUU V VV^E^F^G^^_u`/aDaEaHaKaOaSaUaWaYa[a\aaAbbbbbbbbbP 4& 4&4&4&4&4&4&4&F D %%%F" R #F  #bbbbcccccccc c!c"c;cBLcq~…̅%4ABFOapLLLLLLGN' v }&GN' v }& %%%%%#p}~†ƆΆ ,JWX\dxrňlj*tьbcd LLLL4&4&4&4&4&4&4&4&4&4&4&4&4&4&#GN' v }&( "34Z_anّڑۑߑ#,Bfghlx4&4&4&LLLLLGN' v }&GN' v }& %%%%%#"Ȓޒ?*U{|}~./0ۘqrL4& 4&4& 4& 4& 4& 4& 4& 4& 4&4& 4&4& 4& 4&4& 4&4&4&4&4&4&4&4&4&4& 4&4& 4& 4& 4& #GN' v }&'Ι'()-4J\]^blq4& 4& LLLLLGN' v }&GN' v }& %%%%%"Ԛ՚֚ךțɛef˜23456UVWxy˝L4&4&4&4&4&4&4&4&4&4& 4& 4&4&4& 4&4& 4$44$F7 i"{& %%%%%#GN' v }&!˝ڝ&'(,4DS^ghltΞϞОԞݞ.Ewxy}ɟʟ˟ϟڟ$$44$44$44$44$$44$$44F7 i"{&(ڟ#0AOstuyˠ̠͠Ѡ۠(9Gcdehq$$44$$44$$44$$44$$44$4F7 i"{&&ϡUVvwݢ 01ɣʣ$El̤ͤΤ89:Bz{å4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4&4&4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4&4& 4& 4&4& 4& 4& 4&4& 4& G7 j"}&)&nݧ?¨ʨ٨"0?FGKU4&4& 4& 4& 4& 4& 4& 4& 4& 4& 4&    GN{&GN{& %%%%%"UcstuyϩЩѩթݩ-ATnopt~      GN{&(ƪ٪ "-9FGHLTcsɫ٫6<Habfn}    GN{&(¬̬ͬάϬڬ̯԰հְ  # 4& 4&4&4& 4&4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4&     "F(_  ;r%%%%%%%%GN{&!#&),/01Gyz!Mw\]^j KŴHy     4& 4& 4& 4& 4& 4&4&4&4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4&4& 4& 4& 4& 4& F(_  ;r(öĶŶѶo}iȸߺ 4&4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4&4& 4& 4& 4& 4&     "F(_  ;r%%%%%%%%& !"IoMӼ&'d"#*-0369<?B     4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& D ?F(_  ;rBCEHKNQTWZ]^`dhlptx{~D          D          D          4& F  / f B$F  / f B%%%%%%%%% ;ξ opq{0>M]^_iSTUp"Lv Kk4& 4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4&4&4&4&4&4&4&4& 4& 4& 4& 4& -3459CWqrsw4& 4&LLLLLGN' v }&GN' v }& %%%%%" ./04=Suvw{?@AEMcLLLLLLLGN' v }&)UVbK ,WKL[z 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4&4&LLGN' v }& %%%%%GN' v }&"1GHIMUg}~<LLLL4&4&4&4& , , , x x    GN' v }&(/?EKQW]cis , , , x x     4& 4& 4&4& 4& , , , x x    :Fdp& /M:Fdp& /Mstx| () , , , x x     4&4&4& 4& , , , x x     :Fdp& /M:Fdp& /M)-159=AEIJKo=~, , , x x     4& 4&4& 4& 4&       4& 4& 4&4& 4& FF:Fdp& /M(/67;DVlmnrz4& 4& 4& 4&LLLLLGN' v }&GN' v }& %%%%%""./04>P]^_cn $/7AJLLL4&4&4&4&       X  ( GN' v }& JKOSW[_cgkl"#=rs(       X  ( ( 4& 4&4&4& 4&4&4& 4&4&4& 4&4&4& :Fdp &E#:Fdp &E#0ef5l #4& 4&4& 4&4&4& 4& 4&4& 4&4& 4& 4& 4& 4&4& XXXXxXXXX@Gp  8"}& #'+/34<@DHLPTX\]fjnrvz~xXXXXxXXXXxXXXXxXXXXxG  8"}&*&'+2Jbcdhp4& 4&LLyLGN' v }&GN' v }& %%%%%@Gp  8"}&p %&'+2Jcdeiq)*+/LLLLLLGN' v }&)/6Mklmqy:;<=>QUY]aeflLLLL4&4&4&   <  H H   (F@Rc) v JGN' v }&!lquz$().8<=AMQ <  H H 4& 4&4&  t t   t t   t t   t t   t  F 4Q R F(4Q R (F@Rc) v JQRcdikx -STUYt 4&LLLLGN' v }&GN' v }& %%%%%F(4Q R Y`t:;=R )L4&4& 4&4&4&4&4&4&4&4&4&4& 4&   GM a% %%%%%#GN' v }&!)*.9FG#?@AB}~_     4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& GM a%'$9w!;T2<X*Kpw #w4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4&<4& 4&4& 4& 4& 4& 4& 4& 4& 4& 4& 4& 4&4& 4& 4& 4& 4& 4& 4& 4& -#Tkuw 4:;<RUZbcfm4& 4&<4& 4&4& 4& 4&,4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&  F S" #  4#%$1:FNOY[dp 4&4&4&   4&ThhThF  * F S"F S"pq{}'DEOQZijwyhThhThhThhThhThhThhThhThhF  * )!*89:VWVW23!"ThhThhThh4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&4&#F  * (mno`a*+UV4&4&4&4&4&   4&4&4&4&4&4&4&4&4&4&4&4&4&4&4& F S"F S"#$/049defo}~!F"*+-     4&4&4&4&4&4&4&  F S"F SF S!-2PQRWijlqQ R S X ~      4&4& DD DD DD DD4&F S F S F S""                       2 5 : B C D I X Y Z _ p q r w  4&     4&4&    F S"F S"&       I J < = B D Q X Y ] h v w {             4&4&4&4&dddddG 7' !G 7' !%%%#F S"       3 4 8 ? X Y ] e                +,08Z[_fddddddddddG 7' !)'(,7PQUastx *+/7dddddddddddG 7' !)7NOS[%CDHQpqu|ddddddddddG 7' !)%LMQY&'+4^_cm}~ddddddddddG 7' !) ()-7KLPZklpx ddddddddddG 7' !) #,<=>?J^`abcpy<NST_idd4&4&4&4&4&     GIIIIII q"5&%#G 7' !"   #  $afgrv %ejks~        GIIIIII q"5&)389ALemnv+VWq       GIIIIII q"5&)  'DbAFGP\rwx       GIIIIII q"5&)    0 ` h i t       0!5!6!A!\!!!!!!!        GIIIIII q"5&)!!!!"-"0"1"<"W""""""""""#+#.#/#:#U###########D$G$H$S$m$$$        GIIIIII q"5&)$$$$$$$%%Y%\%]%h%%%%%%%%&&&+&C&V&Y&Z&i&&&&&&&'''''((        GIIIIII q"5&)((!(K({(~(((((((()) )!).)X)))))))))))(*F*I*J*W*********       GIIIIII q"5&)***%+b+e+f+s++++++,?,@,C,D,Q,{,,,,,,,,,,#-0-3-4-A-k-w-z-{-----       GIIIIII q"5&)----R.........../////Y0\0]0j00$1<111I2L2M2Z22222223!3"3/3     GIIIIII q"5&)/3Y3333333334-4b4e4f4s4444445356575D5n555556467686E6o666666         GIIIIII q"5&)6666 737i7l7m7z777777 8<8?8@8M8w888888 9 9 99D9q9t9u9999999:E:        GIIIIII q"5&)E:H:I:V::::::: ;#;$;1;[;};;;;;;;;;<T<W<X<e<<<<<<<%=(=)=6=`===       GIIIIII q"5&)=======>+>W>Z>[>h>>>>>>?+?.?/?G?GEGGGGGGGGG&H'H(H.H/HYHZHHH(((((((4&4&4&4& F n$'HHHHHHHHHHHHHHHHHHHHHHHHIIII'I(I>I?IUIVImInIIIIIIIII4&4&X4&44&X4&44&X4&X\ ( +III4&'K@Normala ,@2,Titre 1 < U]c(k(@(Titre 2 <U]c$&@&Titre 3 <Uc(@(Titre 4 <UVc$@$Titre 5<]c&@&Titre 6<V]c"@"Titre 7<]$@$Titre 8<V]& @&Titre 9 <V]cA@Police par dfaut"@"En-tte p#& @& Pied de page p#)@Numro de page(@(TM 1 h5& U[]c$@$TM 25&U@TM 3 5&@TM 4 X5&@TM 5  5&@TM 6 5&@TM 7 5&@TM 8 x5&@TM 9 @5&$'@$Marque d'annotationc4O4chaptern U]a cH>O>Titre couvertureU[]^`<a c2@Liste 26\0@\ Liste puces@  4^6@^Liste puces 2@ 6 4$D@$Liste continue!x&E@"&Liste continue 2"6x&B@2&Corps de texte#xc,C@B,Retrait corps de texte$x0O0titre chapitre %7(U]c,@b Annotation&",CZrFAy DZu>?FJJLLNNPP=#     !!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/#0123456789:;<=ABy G"n$)/|5W8=@FLKQ^RXDZ0^:bkswdž!7$¤éj!޾S<uvo_>?@++++V:`:::{>F I     8>c  !!"# $%&'()*+,-.//0123456777 8 9:9:N:;:*;@;<'>?@AKLangyBbi F w x y t * 6 B N Z 4 5 G H o 8Rk?b 0Ng1IJ]^?YsDkGMN?UVWNO=KL=?@N F T l w !!|!!!!!"?"i"j""""" #@####&$'$i$j$k$$$$$$#%$%%%&&,&b&&&&&&''V'W''''((())))))&)K)y)z)))))l*****,,1,[,\,w,,, -;-]-^-------v.w..9/h//////"0#0;0{000000T11112>2?222223 3!3S3j33333/4|444455{5}5555555]6^66666/707L77777Q8R8S8T8U8V8Y8l888&9'9=9999@:A:::::;;;+;;;J;[;k;l;;;<<*<a<<<<<<<<<<L=M====>*>+>D>g>u>>>=?>?????@@"@K@L@@@@@@@@aAbAAAAA B BBBPBQBBB'CmCnCCCDDDEE'EIEnEoE~EEEEE9F:FGFfFFFFFGKGUGaG}G~GGGGGGHHHIHHHHHH7ImIIIII0JZJ[JJJJKKKMKdKKKLL*L+L[LLLLM!M@MsMMM/NNNdOeOOOOOOOOPPPePfPPPPPQ$Q0QLQMQvQQQQQQQQQQRR\RRR S SSB~ƒ XrŅdž*tщbcd "34Zێh?*U{|}~./0ەqr)^֗חȘɘef˙23456UVWxy(hЛy˜u͝eϞUVvwݟ 01ɠʠ$El̡͡Ρ89:Bz{â&nݤ?GuѦpHb©̩ͩΩϩک̬ԭխ֭01Gyz!Mw\]^j KűHyóijųѳo}iȵ߷!"IoMӹ&'d"#C^ͻλ opq{߽0>M]^_iо޾STUpп"Lv Kk5s0wAUVbK ,WKL[zI</?t)JKo=~7n0_Kl"#=rs0ef5l 4]'d'e+m<=>Qf)=Rcd U:;=R*AB}~_ $9w!;T2<X*Kpw #w#Tkuw 4:;<Rc$OqEj9:VWVW23!"mno`a*+UV0e~!F+QjR2CYqIJ< = Y w     4 Y     , [     ( Q t    + O    DqM'_~)Ll=>?J^`abcT  gk9nGx i61/   H!!!]""#Z##$%%%!&&J'''f(D)))4*{**+]-M//"000f117228333m44@55 6u66I77$888X99):::[;;/<< =g=====>[>\>y>z>|>>>>> ?i???A@z@@@.AAABXBBBBACjCCC?DDDD&E'E)EF#################%#################################################################################################%##########################################################################################%###################################################%2lhC ,0? OIWclmu}#"Y i 6RHH YZ[\]^_`abcdefghijklmnopqrNNM#)/5T;L@PEJ+OTZ7^b#gh_jlmro^qrtu"wQxl{p ˝ڟU#Bs)J#p/lQY)p-   7 !$(*-/36E:=@uCEHIIstuvwxyz{|}~~Unknown R-Y STROH IPC CORP OEMRINNIPC CORP OEMRINN& J6RINN R-Y STROH 2R-Y STROH IPC CORP OEMf $ F::#*/B_a!:! OZ^FuէSummaryInformation   (2 !"#$%&'()*+,-./056789:;<=>?@ABCDEFGHqNOPUVWXYZ[\]^_`abcdefghijklmnopuvwxyz{|}~_@0)f@Z@8CMicrosoft Word 6.09ࡱ; 5e 9i =m-]uծyٯ }ݰz _Toc357219888 _Toc357220431 _Toc357220479 _Toc357220550 _Toc358697719 _Toc360348873 _Toc367770271 _Toc368387909 _Toc368387955 _Toc370284094 _Toc357997136 _Toc357999734 _Toc358113886 _Toc358113996 _Toc358114106 _Toc358115349 _Toc358192815 _Toc358197893 _Toc358192804 _Toc358197882 _Toc358192816 _Toc358197894 _Toc358192803 _Toc358197881 _Toc358192806 _Toc358197884 _Toc358192808 _Toc358197886 _Toc358192805 _Toc358197883 _Toc358192807 _Toc358197885 _Toc358192817 _Toc358192818 _Toc358197896 _Toc358197895 _Toc357219889 _Toc357220432 _Toc357220480 _Toc357220551 _Toc358697720 _Toc360348874 _Toc367770272 _Toc368387910 _Toc368387956 _Toc370284095 _Toc357219891 _Toc357220434 _Toc357220482 _Toc357220553 _Toc358697722 _Toc360348876 _Toc367770274 _Toc368387912 _Toc368387958 _Toc370284097 _Toc370284098 _Toc357219892 _Toc357220435 _Toc357220483 _Toc357220554 _Toc358697723 _Toc360348877 _Toc367770275 _Toc368387913 _Toc368387959 _Toc370284099 _Toc370284100 _Toc357219895 _Toc357220436 _Toc357220486 _Toc357220556 _Toc358697726 _Toc360348879 _Toc367770277 _Toc368387915 _Toc368387961 _Toc370284106 _Toc357219894 _Toc357220485 _Toc357220555 _Toc358697725 _Toc360348878 _Toc367770276 _Toc368387914 _Toc368387960 _Toc370284105 _Toc358697727 _Toc370284102 _Toc370284103 _Toc370284104 _Toc370284101 _Toc368387916 _Toc368387962 _Toc370284107 _Toc369001755 _Toc369001756 _Toc350922802 _Toc350923796 _Toc350923829KKKKKKKKK @@l$l$&&))22|5|566V8Y8Y8:"`"`"`"`"`"`"`"`"`"`9b9b9b9b9b9b9b9b9b9b:bssssssssss777777777ĩS===F !"# $%&'()*+,-./0123456789:;<=>?@ABWMNOPQRSTULCDEFGHIJKVXYZ[\]^_`abcl$l$$$*&*&//225566W8j8j8:TTTTTTkZkZkZkZkZkZkZkZkZkZ:`:`:`:`:`:`:`:`:`:`:b:b:b:b:b:b:b:b:b:bBbssssssssssTTTTTTTTTܤݤݤݤݤݤݤݤݤݤ˩bQQQ#)))FW IPC CORP OEM%T:\CDROM\CDROM14\NOTONCD\PRGREF01.DOC IPC CORP OEM%T:\CDROM\CDROM14\NOTONCD\PRGREF01.DOC IPC CORP OEM%T:\CDROM\CDROM14\NOTONCD\PRGREF01.DOC R-Y STROH;\\DREAM\SYS\USERS\COMMUN\CDROM\CDROM14\NOTONCD\PRGREF02.DOC R-Y STROH;\\DREAM\SYS\USERS\COMMUN\CDROM\CDROM14\NOTONCD\PRGREF02.DOC R-Y STROH;\\DREAM\SYS\USERS\COMMUN\CDROM\CDROM14\NOTONCD\PRGREF02.DOC R-Y STROH;\\DREAM\SYS\USERS\COMMUN\CDROM\CDROM14\NOTONCD\PRGREF02.DOC R-Y STROH;\\DREAM\SYS\USERS\COMMUN\CDROM\CDROM14\NOTONCD\PRGREF02.DOCRINN%T:\CDROM\CDROM14\NOTONCD\PRGREF02.DOC IPC CORP OEM%T:\CDROM\CDROM14\NOTONCD\PRGREF02.DOC@Canon BJ-200exLPT1:BJ200EXCanon BJ-200ex dD$ 4dhhCanon BJ-200ex dD$ 4dhhkSkSkSNSTimes New Roman Symbol &ArialMonotype Sorts Tms RmnGaramond 1Courier5Courier New"2 Z f2 4!\T:\RAM\WINWORD\MODELES\SAM.DOTrev 1 - March 4, 1996 R-Y STROH IPC CORP OEMࡱ;  vWJKL