1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| sSysexEnvoi est une chaîne = TABLE_StylesTyros5.COL_Sysex[TABLE_StylesTyros5] // Sysex a envoyer contient : F0 43 73 01 51 05 00 03 04 00 00 1C 6F F7
// Il faut transformer la chaine en byte
nLongueur est un int = Dimension(sSysexEnvoi)
tabByteArray est un tableau de nLongueur entier sur 1
K est un int
FOR K = 1 TO nLongueur
tabByteArray[K] = Asc(Milieu(sSysexEnvoi, K, 1))
END
//For i est un entier = 1 To nLongueur
// System.Runtime.InteropServices.Marshal.WriteByte(hdr.lpData, i, CByte(Val("&h" & ss(i)))) //mscorlib
// utiliser transfert(&cible,&source,longueur) pour remplacer cette ligne ?
// Next
nCodeSysex est un entier = TABLE_StylesTyros5.COL_CodeStyle[TABLE_StylesTyros5]
sYMH_MSG est une chaîne // Yamaha SysEx ID
nResultat,nResultat1,nResultat2 est un entier
STMIDIHDR est une structure
DataPtr est une chaîne // Address of MIDI data
BufferLength est un entier sur 8 // Size of the buffer
BytesRecorded est un entier sur 8 // Actual amount of data in the buffer. This value should be less than or equalto the value given in the dwBufferLength member
MhdrID est un entier sur 8 // Custom user data
Flags est un entier sur 8 // Flags giving information about the buffer
lpNext est un entier sur 8 // Reserved - do not use
Reserved2 est un entier sur 8 // Reserved - do not use
CallbackOffset est un entier //Type C : DWORD offset into Buffer WHEN callback is performed
Reserved3a est un entier sur 8 octets //Type C : DWORD
Reserved3b est un entier sur 8 octets //Type C : DWORD
Reserved3c est un entier sur 8 octets //Type C : DWORD
Reserved3d est un entier sur 8 octets //Type C : DWORD
FIN
MidiInHdr est un tableau fixe de NumSysexBuffers STMIDIHDR /// Pour recuperer les messages sur Midi IN
hMidiIn est un entier
stHdr est un STMIDIHDR
nSize est un entier = Taille(sSysexEnvoi)
nCONTROL_CHANGE_INIT = CONTROL_CHANGE * 256
nPROGRAM_CHANGE_CANAL = PROGRAM_CHANGE + gnCanalOut*256
gnRetmidiOutOpen = API("WINMM.DLL","midiOutOpen",&gnHMidi,gnDeviceOut,0,0,0) // Ouverture Port clavier
gnRetCC = API("WINMM.DLL","midiOutShortMsg",gnHMidi,nCONTROL_CHANGE_INIT)
gnRetChangeCanal = API("WINMM.DLL","midiOutShortMsg",gnHMidi,nPROGRAM_CHANGE_CANAL)
stHdr.BufferLength = nSize
stHdr.BytesRecorded = nSize
stHdr.DataPtr = &tabByteArray
nResultat = API("WINMM.DLL","midiOutPrepareHeader",gnHMidi,&stHdr,nSize)
SI nResultat <> 0 ALORS
AfficheErreurMidiOUT(nResultat)
FIN
nResultat1 = API("WINMM.DLL","midiOutLongMsg",gnHMidi,&stHdr,nSize)
Sleep(50)
SI nResultat1 <> 0 ALORS
AfficheErreurMidiOUT(nResultat1) // pour afficher un Info de l'erreur
FIN
nResultat2 = API("WINMM.DLL","midiOutUnprepareHeader",gnHMidi,&stHdr,nSize)
SI nResultat2 <> 0 ALORS
AfficheErreurMidiOUT(nResultat2)
FIN
gnRetmidiOutClose = API("WINMM.DLL","midiOutClose",gnHMidi) |
Partager