Générer du son sans charger un wav/mp3
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Générer du son sans charger un wav/mp3
Salut question surement bête mais comment peut-on générer du son avec PureBasic à la manière de ce qui se faisait sur Amstrad CPC : Sound a,b,c,d ?
Les cartes/chipset sonores de nos PC en sont capables, mais comment faire avec PB ?
merci d'avance pour vos éclaircissements
Les cartes/chipset sonores de nos PC en sont capables, mais comment faire avec PB ?
merci d'avance pour vos éclaircissements
Re: Générer du son sans charger un wav/mp3
Bonjour,
Si c'est pour les "bip" utilise "Beep_() uniquement Windows" (ex: Beep_(1500, 400)). explication voir http://pbfrance.com/?url=libview&cmd=windows&val=1.
Sinon un truc sympa sur le forum anglais c'est http://purebasic.fr/english/viewtopic.p ... nerate+wav
Bon sinon j’espère ne pas être hors-sujet.
GallyHC
PS: il y a pas mal d'exemple en faisant de "beep_" une recherche sur ce forum.
Si c'est pour les "bip" utilise "Beep_() uniquement Windows" (ex: Beep_(1500, 400)). explication voir http://pbfrance.com/?url=libview&cmd=windows&val=1.
Sinon un truc sympa sur le forum anglais c'est http://purebasic.fr/english/viewtopic.p ... nerate+wav
Bon sinon j’espère ne pas être hors-sujet.
GallyHC
PS: il y a pas mal d'exemple en faisant de "beep_" une recherche sur ce forum.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Re: Générer du son sans charger un wav/mp3
avec ma lib Midi , tu peux faire ça
sinon , je supose que tu parles de son ADSR
A=Attaque
D=Decay
S=Sustain
R=release
ce qui se raproche le plus de ça a été fait par HuitBit ici
http://www.purebasic.fr/french/viewtopi ... DSR#p93603
sinon , je supose que tu parles de son ADSR
A=Attaque
D=Decay
S=Sustain
R=release

ce qui se raproche le plus de ça a été fait par HuitBit ici
http://www.purebasic.fr/french/viewtopi ... DSR#p93603
- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Générer du son sans charger un wav/mp3
Merci à tous les deux.
Je regarderai le code de HuitBit demain, en attendant, le Beep_ semble correspondre à ce que je cherche.
Je regarderai le code de HuitBit demain, en attendant, le Beep_ semble correspondre à ce que je cherche.
Re: Générer du son sans charger un wav/mp3
si c'est pour faire de la musique , oublie le Beep_()
car il est monophonique et il fait office de Delay().. il bloque le prg pendant son utilisation
je viens de mettre a jour en PB 5.22 , le code de huitBit
car il est monophonique et il fait office de Delay().. il bloque le prg pendant son utilisation
je viens de mettre a jour en PB 5.22 , le code de huitBit

- TazNormand
- Messages : 1297
- Inscription : ven. 27/oct./2006 12:19
- Localisation : Calvados (14)
Re: Générer du son sans charger un wav/mp3
Bon, pour un purepunch, c'est mort vu la taille des codes
Re: Générer du son sans charger un wav/mp3
Peut etre que le midi pourrait te convenir. Tiens, voila une boite a rythme :
Code : Tout sélectionner
Declare MIDIOpen()
Declare SendMIDIMessage(nStatus.l,nCanal.l,nData1.l,nData2.l)
Declare PlayNoteMIDI(Canal.b,Note.b,VelociteDown.b,VelociteUp.b)
Declare ChargeInstrument(Canal.b,Instrument.b)
Global m_hMidiOut,m_MIDIOpen.b
Enumeration 35
#Kick_Drum_2
#Kick_Drum_1
#Side_Stick
#Snare_Drum_1
#Hand_clap
#Snare_Drum_2
#Low_Tom_2
#Closed_Hi_Hat
#Low_Tom_1
#Pedal_Hi_Hat
#Mid_Tom_2
#Open_Hi_Hat
#Mid_Tom_1
#High_Tom_2
#Crash_Cymbal_1
#High_Tom_1
#Ride_Cymbal_1
#Chinese_Cymbal
#Ride_Bell
#Tambourine
#Splash_Cymbal
#Cow_Bell
#Crash_Cymbal_2
#Vibra_Slap
#Ride_Cymbal_2
#High_Bongo
#Low_Bongo
#Mute_High_Conga
#Open_High_Conga
#Low_Conga
#High_Timbale
#Low_Timbale
#High_Agogo
#Low_Agogo
#Cabasa
#Maracas
#Short_Hi_Whistle
#Low_Hi_Whistle
#Short_Guiro
#Long_Guiro
#Claves
#High_Wood_Block
#Low_Wood_Block
#Mute_Cuica
#Open_Cuica
#Mute_Triangle
#Open_Triangle
EndEnumeration
OpenConsole()
PrintN("Boite a Rythme Midi (Base sur ce auquel j'ai tjr cru : 2^x)")
PrintN("SPH(2006)")
MIDIOpen()
ChargeInstrument(9,0)
PrintN("")
ry=43+Random(12)*2
PrintN("Rythme : "+Str(ry))
Dim canal.l(47,4)
; (instrument,0) = pause avant de voir si on peux le jouer
; (instrument,1) = temps a attendre pour le jouer (voir (instrument,2))
; (instrument,2) = incrementation puis comparatif avec (instrument,1)
; 3 = frequence
; 4 = volume
cmb=0
For i=1 To 47
Read lourd
canal(i,4)=100+Random(27)
If i<=4
canal(i,4)-40
EndIf
canal(i,0)=(Random(cmb/1.7+3))*20
If Random(16)>10
If Random(lourd)=3
lourd-Random(lourd/3)
EndIf
canal(i,1)=Pow(2,lourd)
canal(i,3)=127+Random(60)+Random(60)
EndIf
If canal(i,1)>0
cmb+1
EndIf
Next
For i=1 To 180
la=1+Random(46)
canal(la,1)*2
If canal(la,1)>8000
u=1+Random(3)
While u>0
canal(la,1)/2
u-1
Wend
EndIf
Next
PrintN("Nombre d'instruments : "+Str(cmb))
PrintN("")
PrintN("ZzzZZzzz")
PrintN("")
PrintN("")
;00031261616977979991819991103355121059181115618
cmb2=0
Repeat
For zik = 1 To 47
If canal(zik,1)<>0 ; alors on joue de cette instrument
If canal(zik,0)>0 ; alors ce n'est pas encore le moment pour demarrer l'instrument
canal(zik,0)-1
Else
canal(zik,2)+1
If canal(zik,2)=canal(zik,1)
PlayNoteMIDI(9,34+zik,canal(zik,3),canal(zik,4))
canal(zik,2)=0
If canal(zik,0)=0
cmb2+1
Print(Str(zik)+"..")
canal(zik,0)=-1
If cmb=cmb2
PrintN("Ok")
EndIf
EndIf
EndIf
EndIf
EndIf
Next
Delay(ry)
ForEver
; ********************** Procedures ****************************************
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
DataSection
;Data.l 1,1,1,2,2,2,4,2,4,2,4,5,5,5,5,4,4,4,4,1,4,2,5,5,5,2,2,1,3,3,4,4,2,3,2,1,4,5,2,4,2,2,2,4,4,2,4
Data.l 1,1,1,3,2,3,5,2,5,2,5,7,6,6,7,6,5,5,5,2,6,3,7,7,7,2,2,1,4,4,5,5,2,3,2,2,5,7,3,6,2,2,2,5,6,2,6
;Data.l 0,0,0,3,1,2,6,1,6,1,6,9,7,7,9,7,9,9,9,1,8,1,9,9,9,1,1,0,3,3,5,5,1,2,1,0,5,9,1,8,1,1,1,5,6,1,8
EndDataSection
!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
Re: Générer du son sans charger un wav/mp3
Erreur ligne 67 avec pb5.30b5G-Rom a écrit :http://www.purebasic.fr/french/viewtopi ... hilit=wave
!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