comme d'habitude , j'ai fait un prg qui sert a rien
mais qui est tres poetique , je trouve !!
je me suis dit que se passe t'il si je fais jouer les octets d'un fichier par du son midi !!
ben c'est meme joli en fait !!
ce programme charge un fichier choisi par l'utilisateur (Meme des sons , des images , des fichier compresse , bref tout !!

)
et le joue !!
ecoutez , c'est souvent tres sympath en fait !
dans le listing vous pouvez changer l'instrument,
Merci a Erix14 pour ses prg , j'ai repompé le Midi dedans !
un prg 100% DD (Dobro Delirium !)
encore REEDITER POUR 2 INSTRUMENTS (BASSE et PIANO) a 15:42
Code:
; Prg Realisé par Dobro
Declare MIDIOpen()
Declare ChargeInstrument(Canal.b,Instrument.b)
Declare SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
Declare PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
Global m_hMidiOut,m_MIDIOpen.b
MIDIOpen() : ChargeInstrument(0,806); canal , instrument
PlayNoteMIDI(0,50,127,127) ; note de 15 a 108
;- Window Constants
;
Enumeration
#Window_1
EndEnumeration
;- MenuBar Constants
;
Enumeration
#MenuBar_4
EndEnumeration
Enumeration
#MENU_26
EndEnumeration
;- StatusBar Constants
;
Enumeration
#StatusBar_0
EndEnumeration
Procedure Open_Window_1()
If OpenWindow(#Window_1, 183, 0, 400, 200, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_WindowCentered , "Le Chant des Mots")
If CreateMenu(#MenuBar_4, WindowID())
MenuTitle("Fichier")
MenuItem(#MENU_26, "Ouvrir")
EndIf
If CreateStatusBar(#StatusBar_0, WindowID())
AddStatusBarField(550)
StatusBarText(#StatusBar_0, 0, "field")
EndIf
If CreateGadgetList(WindowID())
EndIf
EndIf
EndProcedure
Open_Window_1()
WindowID = WindowID(#Window_1)
; If CreateStatusBar(#StatusBar_0, WindowID())
; AddStatusBarField(550)
; StatusBarText(#StatusBar_0, 0, "field",#PB_StatusBar_Center )
; EndIf
; *****************************************
Repeat
Event=WaitWindowEvent()
menu=EventMenuID()
;gestion du menu
If Event = #PB_Event_Menu : ; on a clique sur un menu
menuID = EventGadgetID(): ; lequel ??
Select menuID
Case 0
NomFichier$ = OpenFileRequester("Charger un fichier TEXT", "c:\", "*.*", 0)
If OpenFile(1, NomFichier$)
Repeat
Nombre = ReadByte()
If Nombre<0
nombre1=Nombre+256
Else
nombre1=Nombre
EndIf
Debug nombre1
If nombre1 >15 And nombre1<46
ChargeInstrument(0,804)
PlayNoteMIDI(0,nombre1+5,127,127)
Delay(nombre1*4)
EndIf
If nombre1 >46 And nombre1<108
ChargeInstrument(0,0)
PlayNoteMIDI(0,nombre1-5,127,127)
Delay(nombre1*4)
EndIf
Until Eof(1)<>0
EndIf
CloseFile(1)
EndSelect
EndIf
StartDrawing(WindowOutput() )
Locate(0, 10)
DrawText(" La Musique est généré par les Octets du Fichier !!")
Locate(0, 50)
DrawText(" Vous pouvez entendre le Chants des Lettres")
Locate(0, 100)
DrawText(" Vous pouvez charger tout sorte de fichier")
StopDrawing()
Until Event=#PB_Event_CloseWindow
Procedure SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
dwFlags.l = nStatus | nCanal | (nData1 << 8) | (nData2 << 16)
temp.l = midiOutShortMsg_(m_hMidiOut,dwFlags);
If temp<>0
MessageRequester("Problème", "Erreur dans l'envoi du message MIDI",0)
EndIf
EndProcedure
Procedure MIDIOpen()
If m_MIDIOpen = 0
If midiOutOpen_(@m_hMidiOut,MIDIMAPPER,0,0,0) <> 0
MessageRequester("Problème", "Impossible d'ouvrir le périphérique MIDI",0)
Else
SendMIDIMessage($C0,0,0,0)
m_MIDIOpen = 1
EndIf
EndIf
EndProcedure
Procedure PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
If m_MIDIOpen
SendMIDIMessage($80 | Canal,0,Note,VelociteDown)
SendMIDIMessage($90 | Canal,0,Note,VelociteUp)
EndIf
EndProcedure
Procedure ChargeInstrument(Canal.b,Instrument.b)
If m_MIDIOpen
SendMIDIMessage($C0 | Canal,0,Instrument,0)
EndIf
EndProcedure