Page 1 sur 4
Le midi avec Purebasic
Publié : mar. 12/sept./2006 23:00
par bombseb
Bonsoir, est-ce possible d'utiliser les fonctions midi de la carte son avec PB ?
J'aimerais pouvoir jouer des notes, en lui indiquant une fréquence, ou encore mieux en lui indiquant la note....
Publié : mer. 13/sept./2006 0:49
par Backup
..........
Publié : mer. 13/sept./2006 4:18
par SPH
Aucune note ne sort chez moi....
Publié : mer. 13/sept./2006 10:53
par Backup
il sufisait d'ajouter un delay a la fin
car une fois envoyer il faut attendre que le son soit joué avant de quitter le prg
reesaye la !

Publié : mer. 13/sept./2006 11:45
par comtois
Publié : mer. 13/sept./2006 13:05
par bombseb
merci votre aide, j'essayerais tout ca ce week end...
Dobro : en faisant une recherche sur le forum, j'ai vu que tu a développé une lib pour faire parler l'ordi... tu peut me dire a quel endroit je le télécharge stp ? (je vais surement en avoir besoin pour ce que je fait)
Publié : mer. 13/sept./2006 13:47
par Backup
va sur ce topic !!
http://purebasic.forum-gratuit.com/view ... ight=sapi5
il suffit de telecharger des voix au format sapi4, ou sapi5
(je te ferai une archive si tu veux )
sur ce topic on y parle d'une librairie qui gere le sapi4,5 !!
j'ai mis un exemple d'utilisation (un lecteur de press-papier) !!
j'ai arreté Nono ma lib synthevocal !

Publié : mer. 13/sept./2006 16:52
par bombseb
coool !!
merci beaucoup !
Publié : jeu. 14/sept./2006 3:32
par SPH
MIDIOpen()
ChargeInstrument(0,0) ; canal , instrument
PlayNoteMIDI(0,50,127,127) ; note de 15 a 108
Delay (2000)
C'est possible de jouer sur plusieurs pistes ???
Publié : jeu. 14/sept./2006 7:59
par Backup
.........
Publié : jeu. 14/sept./2006 8:27
par SPH
Ha okkkk
nan parce que j'ai ete troublé par ton commentaire : "note de 15 a 108 la NOTE NUMERO 2 !! "
Tu dis 15 a 108 alors que tu n'etais pas dans la fourchette alors j'ai tout melangé...
EDIT :
J'ai un bug. Regardez ce code, moi, chez moi, je n'ai pas que du piano. Ca se transforme vite en zik d'horreur...
Code : Tout sélectionner
Global m_hMidiOut,m_MIDIOpen.b
; ***************************************************************************
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
; ***************************************************************************
MIDIOpen()
ChargeInstrument(0,0) ; canal , instrument Piano
xx=80+Random(100)
Repeat
PlayNoteMIDI(Random(10),40+Random(50),127,127) ; note de 15 a 108 La NOTE NUMERO 1
Delay(xx+Random(5)*xx)
ForEver
Publié : jeu. 14/sept./2006 10:15
par Backup
.............
Publié : jeu. 14/sept./2006 10:36
par bombseb
le canal 10 dans la norme General midi est réservé a la batterie !!
ah c'est bon a savoir ca !
Publié : jeu. 14/sept./2006 10:48
par Backup
j'ai reedité mon post au dessus
note de 15 a 108
j'avais noté cela parceque cela correspond au son minimum et maximum que l'on peut entendre sur ma carte son
ce ne doit pas etre difficile de retrouver les correspondances notes--->chiffres
sur internet

Publié : jeu. 14/sept./2006 11:14
par bombseb
pour les correspondance c'est super simple...
(de tête, donc je peux me tromper)
...
48 = C
49 = C#
50 = D
...
etc...