PureBasic

Forums PureBasic
Nous sommes le Ven 24/Mai/2013 11:28

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 34 messages ]  Aller à la page 1, 2, 3  Suivante
Auteur Message
 Sujet du message: Le Chant des Lettres
MessagePosté: Dim 16/Jan/2005 14:35 
Hors ligne
Avatar de l’utilisateur

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
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 !!

:lol: :lol:

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 !! :D )

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 !

:D

un prg 100% DD (Dobro Delirium !)

:lol: :lol:



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




_________________
Image


Dernière édition par Dobro le Dim 16/Jan/2005 19:00, édité 1 fois.

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

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Deux question :
A. Un son midi ne sera pas joué normalemant... normal ?
2. Comment on change d'instrument ?
Encore un graphique ?


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

Inscription: Mer 21/Jan/2004 18:39
Messages: 2117
Autoexec.bat est particulièrement sympa.
Vraiment marrant :D

Oui Ganstra, pour ta question 1 c'est logique


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

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
Citation:
Deux question :
A. Un son midi ne sera pas joué normalemant... normal ?
2. Comment on change d'instrument ?
Encore un graphique ?



8O comprend pas du tout ta question A!!!

pour changer d'instrument tu va dans le listing

les ligne marque ; " ChargeInstrument(0,804) " le 804 c'est l'instrument !!

mettre un zero a la place = piano !!

_________________
Image


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

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Oui c lc... si tu le dis :-).
Mais c vrai que c marant... mais pour la deuxième question pk j'y arrive pas ?
Arf... pour la première... enseignez-moi la logique svp :-).


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

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
ben pour le midi , moi je peut dire un son midi
car j'utilise un expandeur logiciel !!

mais c'est vrai qu'il sagit de code midi , pour actionner des sons
:D

_________________
Image


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

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
OK... on va dire que j'ai compris :-).
Mais pour l'autre question, parcontre, toujours pas compris... quel listing... sois je suis bête, sois... je sais pas.


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

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
j'ai modifier un peut ma potion pour que l'instrument "Basse"
ne sonne jamais faux avec l'autre instrument !
(ha les mysteres de la musique et de l'harmonie :D !! )


@ Gansta93 : il sagit de ce listing !!!!!!!

j'avais juste prevu un petit truc , mais effectivement je proposerai
une interface plus aisé , pour le choix des parametres !!
:D


ps : : Actuellement je m'ecoute Kazaa lite !!
c'est ...... ethnique !! :lol: :lol:

ça me donne une idée , rajout de batterie et d'autre instruments !!
encore un module pour l'editeur de son de ZAPMAN :D


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
                         ; Main Gauche (Basse)
                        nombre1=Nombre%108
                        If nombre1 >15 And nombre1<46
                            ChargeInstrument(0,35)
                            PlayNoteMIDI(0,nombre1-21+nombre1,127,127)
                            Delay(nombre1*2)
                        EndIf 
                         ; Main Droite
                        If nombre1 >46 And nombre1<108
                            ChargeInstrument(0,0)
                            PlayNoteMIDI(0,nombre1-(nombre1/4),127,127)
                            Delay(nombre1*2)
                        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




_________________
Image


Dernière édition par Dobro le Dim 16/Jan/2005 19:49, édité 2 fois.

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

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Bon... je déclare forfet...


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

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
bon en ecrivant en français !! c'est quoi ton problem au juste ???

_________________
Image


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

Inscription: Jeu 26/Fév/2004 11:17
Messages: 1448
Localisation: Le Village
Dobro a écrit:
bon en ecrivant en français !! c'est quoi ton problem au juste ???
Bon... partons du fait que je suis stupide (on a pas à partir du fait, vu que ça doit être le cas).
Tu me parle d'un listing, mais en dessous, c tout le code... listing... aussi visible que tout ce que je peux voir (rien !)


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

Inscription: Mar 06/Avr/2004 10:35
Messages: 1493
Citation:
un prg 100% DD (Dobro Delirium !)

:lol: :lol: :lol:

C'est clair !!
J'ai essayé ton machin sur une photo de ma tronche
en JPEG couleur. Ce bordel !!
Toute une symphonie d'environ 8 minutes.
Il a pas dû apprécier mon physique de rêve :lol:
Plantage ! impossible de récupérer sans le debugger.

M'enfin t'es un génie pour pondre des trucs pareils :D

_________________
Quand tous les glands seront tombés, les feuilles dispersées, la vigueur retombée... Dans la morne solitude, ancré au coeur de ses racines, c'est de sa force maturité qu'il renaîtra en pleine magnificence...Jacobus.


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

Inscription: Mer 26/Mai/2004 0:33
Messages: 684
Super !!

_________________
http://garzul.tonsite.biz

Ancien site PB :
http://www.garzul.ca.cx


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

Inscription: Lun 26/Avr/2004 0:40
Messages: 12956
@ Gansta93 :

un listing est un ensemble de ligne de code !!


tu voulais savoir comment on change l'instrument !!

dans le Code (Listing) tu as 2 lignes

Code:
  ChargeInstrument(0,5) 


le 5 represente l'instrument numero 5 (un piano) de la norme General Midi

qui je le rapel va de 0 a 127 !!! au dela c'est des sons rajouter par des nouvelles normes (Roland , yamaha)

donc dans mon code les lignes " ChargeInstrument(0,0) "
indique: ChargeInstrument(Canal.b,Instrument.b)

voila !!
si tu n'entend rien ça peut etre tes parametres de volume de ta carte son

:D


@Jacobus :

Citation:
M'enfin t'es un génie pour pondre des trucs pareils Very Happy


Merci c'est super sympath !! :D

le plantage viens surement du fait que ma boucle des event n'est pas
mise a jour , j'ai fait ça a la vas-vite comme d'hab !! :lol:

sur le meme principe tu peut faire des dessins !!

lorsque le chiffre est entre tel et tel valeur tu trace un cercle bleu d'une certaine taille , et d'autre forme ou point de couleur pour d'autre valeur !!

cela fera des fichier qui dessineront des tableaux moderne !!
je ferai peut etre une variante un de ces quatre !!

a moins que cela ne te donne envie de t'y mettre ?? :D

_________________
Image


Haut
 Profil  
 
 Sujet du message:
MessagePosté: Lun 17/Jan/2005 17:19 
Hors ligne
Avatar de l’utilisateur

Inscription: Mer 21/Jan/2004 18:39
Messages: 2117
Dobro a écrit:
le plantage viens surement du fait que ma boucle des event n'est pas
mise a jour , j'ai fait ça a la vas-vite comme d'hab !! :lol

Ah les génies......toujours trop d'idée en tête, çaveux toujours en faire trop à la fois. :lol:


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

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: nico 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