Le midi avec Purebasic

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Le midi avec Purebasic

Message 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....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

..........
Dernière modification par Backup le lun. 25/juil./2011 12:26, modifié 3 fois.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Message par SPH »

Aucune note ne sort chez moi....

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 :lol:

reesaye la ! :D
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

voir aussi ce code qui est excellent

http://purebasic.hmt-forum.com/viewtopic.php?t=5335
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message 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)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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 ! :?
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

coool !!

merci beaucoup !
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Message 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 ???
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.........
Dernière modification par Backup le lun. 25/juil./2011 12:26, modifié 1 fois.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Message 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

Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

.............
Dernière modification par Backup le lun. 25/juil./2011 12:26, modifié 2 fois.
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

le canal 10 dans la norme General midi est réservé a la batterie !!
ah c'est bon a savoir ca !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

j'ai reedité mon post au dessus :D
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 :D
bombseb
Messages : 445
Inscription : jeu. 25/août/2005 22:59
Localisation : 974
Contact :

Message par bombseb »

pour les correspondance c'est super simple...

(de tête, donc je peux me tromper)

...
48 = C
49 = C#
50 = D
...

etc...
Répondre