PureBasic

Forums PureBasic
Nous sommes le Dim 26/Mai/2013 10:02

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 34 messages ]  Aller à la page Précédente  1, 2, 3
Auteur Message
 Sujet du message:
MessagePosté: Mer 19/Jan/2005 23:58 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12960
Code:
  ; Prg realisé par DOBRO
#dobro=1
#Police=1
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,0); canal , instrument
 
PlayNoteMIDI(0,12,50,12)  ; note de 12 (C) a 236
Delay(200)
PlayNoteMIDI(0,47,50,12)  ; note de 12 (C) a 236 (G#)
InitKeyboard() :; j'espere qu'il y a un clavier au moins !!
Resultat = InitSprite()

 
  ; ***********************************
Resultat = InitSprite()
FontID = LoadFont(#Police, "arial", 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_(#SM_CXSCREEN):;=largeur de l'ecran
EcranY = GetSystemMetrics_(#SM_CYSCREEN):;=hauteur de l'ecran
  WindowID = OpenWindow(1, 0, 0, 400, 200,  #PB_Window_SystemMenu|#PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget |#PB_Window_SizeGadget|#PB_Window_BorderLess |#PB_Window_ScreenCentered , "Synth_text      by Dobro")
 
  WindowID = WindowID(1)
  Result = OpenWindowedScreen(WindowID,0,0, EcranX, EcranY, 1, 0,0)
 
  xp1=300:yp1=300
  xp2=200:yp2=200
  xp3=400:yp3=400
  MIDIOpen() :
  ChargeInstrument(0,50); canal , instrument
  ;{ juste au cas ou
  ; ;coupe tout les sons
  ; For t=12 To 236
  ; PlayNoteMIDI(0,t,0,0) ; note c
  ; SendMIDIMessage(t,0,0,0) ;(nStatus.l,nCanal.l,nData1.l,nData2.l)
  ; Next t
  ; End
  ;}
 
  NomFichier$ = OpenFileRequester("Charger un fichier TEXT", "c:\", "*.*", 0) 
  If OpenFile(1, NomFichier$) 
    Repeat
      Event=WindowEvent()
      Delay(2)
      Nombre = ReadByte() 
      If Nombre<0
        nombre1=Nombre+256
      Else
        nombre1=Nombre
      EndIf 
      nombre1=Nombre%236
      ; Main Gauche (Basse)
      If nombre1 >15 And nombre1<46
        ChargeInstrument(0,35)
        PlayNoteMIDI(0,nombre1+12,127,127)
        Delay(nombre1*2)
        Gosub basse
      EndIf
      If nombre1 >46 And nombre1<108
        ChargeInstrument(0,4)
        PlayNoteMIDI(0,nombre1-12,127,127)
        Delay(nombre1*2)
        Gosub maindroite
      EndIf 
      If nombre1 >108 And nombre1<236
        ChargeInstrument(0,12)
        PlayNoteMIDI(0,nombre1-48,127,127)
        Delay(nombre1*2)
        Gosub percu
      EndIf 
      FlipBuffers():; affiche l'ecran
      ; ClearScreen(0, 0, 0) :;efface l'ecran
     
    Until Event=#PB_Event_CloseWindow Or Eof(1)<>0
  EndIf
  CloseFile(1) 
  ;coupe tout les son
  ; For t=12 To 236
  ; ChargeInstrument(0,12)
  ; PlayNoteMIDI(0,t,0,0) ; note c
  ; SendMIDIMessage(t,0,0,0) ;(nStatus.l,nCanal.l,nData1.l,nData2.l)
  ; Next t
  ;
  End
 
  ;{ percu
  percu:
  de=10
  compt1+1
  yp1= Sin(compt1*(nombre1*5)/10000) * xp1/3.14159 + (EcranY / 2)
  xp1= 360* Cos( compt1*2*3.1415926/360) + (EcranX  / 2)
  StartDrawing( ScreenOutput()) 
  Circle(xp1, yp1, de, RGB(nombre1*8, 0, 0)) 
  StopDrawing() 
  Return
  ;}
  ;{ basse
  basse:
    compt2+1
    de=10
    yp2= Sin(compt2*(nombre1*5)/10000) * xp2/3.14159 + (EcranY/ 2)
    xp2=360* Cos( compt2*2*3.1415926/360) + (EcranX  / 2)
    StartDrawing( ScreenOutput()  )
    Circle(xp2, yp2,de, RGB(30,nombre1*16, nombre1*16))
    StopDrawing()
    Return
    ;}
    ;{ Maindroite
  maindroite:
  compt3+1
  de=10
 
  yp3= Sin(compt3*(nombre1*5)/10000) * yp3/3.14159 + (EcranY / 2)
  xp3= 360* Cos( compt3*2*3.1415926/360) + (EcranX  / 2)
 
  StartDrawing( ScreenOutput() )
  Circle(xp3, yp3, de,RGB(nombre1*8, 0, nombre1*8) ) 
  StopDrawing()
  Return
   ;}
 
 
 
 
 
 
  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

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 23/Jan/2005 14:37 
Hors ligne
Avatar de l’utilisateur

Inscription: Sam 24/Jan/2004 12:00
Messages: 293
Localisation: Toulouse (31)
J'entend rien... Ca a pas l'air de marcher... j'ai bien le petit dessin mais c'est tout... Pourtant quand j'écoute des fichiers MIDI ca marche :s

_________________
Débutant en programmation, notament en C++ ?
Vous souhaitez apprendre ?


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Dim 23/Jan/2005 16:07 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12960
désolé , ça viens forcement de ta config !!

car le prog a été testé sur plusieur ordi , et il joue !!

(verifie tes niveaux de volume (synth) dans le panneau de config) :D

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Mer 30/Aoû/2006 17:47 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12960
voici la version de mon synthetext mis en version purebasic 4.00

Citation:


; Prg realisé par DOBRO
; mis en Version purebasic 4.00
#dobro =1
#Police =1
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,0) ; canal , instrument
 
PlayNoteMIDI(0,12,50,12) ; note de 12 (C) a 236
Delay (200)
PlayNoteMIDI(0,47,50,12) ; note de 12 (C) a 236 (G#)
InitKeyboard () : ; j'espere qu'il y a un clavier au moins !!
Resultat = InitSprite ()
 
 
   ; ***********************************
Resultat = InitSprite ()
FontID = LoadFont ( #Police , "arial" , 18, #PB_Font_Bold )
EcranX = GetSystemMetrics_ ( #SM_CXSCREEN ): ;=largeur de l'ecran
EcranY = GetSystemMetrics_ ( #SM_CYSCREEN ): ;=hauteur de l'ecran
   WindowID = OpenWindow (1, 0, 0, 400, 200, "Synth_text by Dobro" , #PB_Window_SystemMenu|#PB_Window_MinimizeGadget |#PB_Window_MaximizeGadget |#PB_Window_SizeGadget|#PB_Window_BorderLess |#PB_Window_ScreenCentered )
 
   WindowID = WindowID (1)
  Result = OpenWindowedScreen ( WindowID ,0,0, EcranX, EcranY, 1, 0,0)
 
  xp1=300:yp1=300
  xp2=200:yp2=200
  xp3=400:yp3=400
  MIDIOpen() :
  ChargeInstrument(0,50) ; canal , instrument
   ;{ juste au cas ou
   ; ;coupe tout les sons
   ; For t=12 To 236
   ; PlayNoteMIDI(0,t,0,0) ; note c
   ; SendMIDIMessage(t,0,0,0) ;(nStatus.l,nCanal.l,nData1.l,nData2.l)
   ; Next t
   ; End
   ;}
 
  NomFichier$ = OpenFileRequester ( "Charger un fichier TEXT" , "c:\" , "*.*" , 0)
   If OpenFile (1, NomFichier$)
     Repeat
      Event= WindowEvent ()
       Delay (2)
      Nombre = ReadByte (1)
       If Nombre<0
        nombre1=Nombre+256
       Else
        nombre1=Nombre
       EndIf
      nombre1=Nombre%236
       ; Main Gauche (Basse)
       If nombre1 >15 And nombre1<46
        ChargeInstrument(0,35)
        PlayNoteMIDI(0,nombre1+12,127,127)
         Delay (nombre1*2)
         Gosub basse
       EndIf
       If nombre1 >46 And nombre1<108
        ChargeInstrument(0,4)
        PlayNoteMIDI(0,nombre1-12,127,127)
         Delay (nombre1*2)
         Gosub maindroite
       EndIf
       If nombre1 >108 And nombre1<236
        ChargeInstrument(0,12)
        PlayNoteMIDI(0,nombre1-48,127,127)
         Delay (nombre1*2)
         Gosub percu
       EndIf
       FlipBuffers (): ; affiche l'ecran
       ; ClearScreen(0, 0, 0) :;efface l'ecran
     
     Until Event= #PB_Event_CloseWindow Or Eof (1)<>0
   EndIf
   CloseFile (1)
   ;coupe tout les son
   For t=12 To 236
  ChargeInstrument(0,12)
  PlayNoteMIDI(0,t,0,0) ; note c
  SendMIDIMessage(t,0,0,0) ;(nStatus.l,nCanal.l,nData1.l,nData2.l)
Next t
   ;
   End
 
   ;{ percu
  percu:
  de=10
  compt1+1
  yp1= Sin (compt1*(nombre1*5)/10000) * xp1/3.14159 + (EcranY / 2)
  xp1= 360* Cos ( compt1*2*3.1415926/360) + (EcranX / 2)
   StartDrawing ( ScreenOutput ())
   Circle (xp1, yp1, de, RGB (nombre1*8, 0, 0))
   StopDrawing ()
   Return
   ;}
   ;{ basse
  basse:
  compt2+1
  de=10
  yp2= Sin (compt2*(nombre1*5)/10000) * xp2/3.14159 + (EcranY/ 2)
  xp2=360* Cos ( compt2*2*3.1415926/360) + (EcranX / 2)
   StartDrawing ( ScreenOutput () )
   Circle (xp2, yp2,de, RGB (30,nombre1*16, nombre1*16))
   StopDrawing ()
   Return
   ;}
   ;{ Maindroite
  maindroite:
  compt3+1
  de=10
 
  yp3= Sin (compt3*(nombre1*5)/10000) * yp3/3.14159 + (EcranY / 2)
  xp3= 360* Cos ( compt3*2*3.1415926/360) + (EcranX / 2)
 
   StartDrawing ( ScreenOutput () )
   Circle (xp3, yp3, de, RGB (nombre1*8, 0, nombre1*8 ) )
   StopDrawing ()
   Return
   ;}
 
 
 
 
 
 
   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


_________________
Image


Haut
 Profil  
 
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 34 messages ]  Aller à la page Précédente  1, 2, 3

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye