Accueil > > > DIRECTX TUTO 6 : DIRECTMUSIC JOUER DES FICHIERS MIDI
DIRECTX TUTO 6 : DIRECTMUSIC JOUER DES FICHIERS MIDI
Information sur la source
Description
******* JE CONSIDÈRE QUE VOUS AVEZ LES CONNAISSANCES PRÉSENTES DANS MES PRÉCÉDENTS TUTAURIAUX ********** Précédemment dans mon dernier tutoriel je vous ai montré comment jouer un fichier wav, seulement les fichiers wav sont très lourds surtout lorsque ce sont des musiques. D'où l'utilisation de fichier MIDI.
Source
- DirectMusic fait parti de DirectX, donc pour utiliser DirectMusique il avoir précédemment déclaré DirectX.
-
- Premièrement, nous déclarons les variables qui vont nous servir :
-
- Dim dx As New DirectX7
- ' DirectX
- Dim perf As DirectMusicPerformance
- ' Des informations sur le fichier MIDI peuvent être recueillis dans cette variable
- Dim seg As DirectMusicSegment
- ' Stockage du fichier MIDI
- Dim segstate As DirectMusicSegmentState
- ' Statut du fichier charger
- Dim loader As DirectMusicLoader
- ' Chargement d'un fichier MIDI dans une variable DirectMusicSegment
-
- Voici donc les quelques variables obligatoires.
-
- Certaines initialisations sont obligatoires pour pouvoir lire un fichier MIDI.
-
- Dans l'événement Form_Load de votre projet :
-
- Set loader = Nothing
- ' Si une lecture est en cour le loader contient des informations, donc on le remet à 0
-
- Set loader = dx.DirectMusicLoaderCreate()
- ' Nous disons que la variable loader et un système de DirectX, de type chargement
- ' de musique
-
- Set perf = dx.DirectMusicPerformanceCreate()
- ' Notre variable d'information du fichier est initialisée de même que le loader, avec la différence que celle-ci est de type Performance.
-
- Call perf.Init(Nothing, 0)
- ' On associe la variable perf a un fichier MIDI, ici Nothing (donc aucun), et à 0 pour le handle.
-
- perf.SetPort -1, 80
- ' Un index ainsi qu'une définition des canaux utilisée doivent être donné.
-
- Voila votre Form_Load est terminé.
-
- Ensuite comme dans l'exemple, avec un bouton nous allons lancer la lecture du fichier.
-
- D'abord, il nous faut charger le fichier.
-
- ' Pour cela il nous faut le chemin d'accès au fichier MIDI, dans l'exemple j'ai mis ' une variable qui ne change pas, car le fichier MIDI ne change pas.
-
- FileName = App.path & "\Mystery.mid"
-
- ' Nous chargeons le fichier MIDI dans seg par le biais de loader
- Set seg = loader.LoadSegment(FileName)
-
- 'Une petite récupération du path sans le nom du fichier
-
- Dim path As String
- length = Len(FileName)
- ' Len renvoie le nombre de caractère d'une variable
-
- Do While path <> "\"
- path = Mid(FileName, length, 1)
- ' Mid renvoi les caractères composant Filename étant compris dans l'intervalle
- ' [0;length]
-
- length = length - 1
- ' Nous enlevons 1 à length pour pouvoir ainsi arriver à supprimer le nom complet
- ' du fichier MIDI et ne garder que son chemin
-
- Loop
-
-
- perf.SetMasterAutoDownload True
- ' permet le chargement automatique des instruments utilisés par le fichier MIDI
-
- seg.SetStandardMidiFile
- ' On dit que le fichier MIDI est de forme standard et non pas pour un fichier prévu
- ' exprès pour DirectMusic
-
-
- 'Maintenant nous pouvons jouer le fichier MIDI
- perf.SetMasterVolume 50 * 50 ' Définition du volume
- Call perf.PlaySegment(seg, 0, 0) ' On lance la lecture du fichier MIDI
-
-
- Içi je multiplie le volume par 50 pour ne pas travailler sur des nombres trop grands.
-
- Pour arrêter un fichier MIDI il suffit d'appeler la méthode stop:
- Call perf.Stop(seg, segstate, 0, 0)
- Arrêt (Fichier MIDI, Statut du fichier, temps, flags)
-
- Et voilà maintenant le fichier MIDI peut être joué.
DirectMusic fait parti de DirectX, donc pour utiliser DirectMusique il avoir précédemment déclaré DirectX.
Premièrement, nous déclarons les variables qui vont nous servir :
Dim dx As New DirectX7
' DirectX
Dim perf As DirectMusicPerformance
' Des informations sur le fichier MIDI peuvent être recueillis dans cette variable
Dim seg As DirectMusicSegment
' Stockage du fichier MIDI
Dim segstate As DirectMusicSegmentState
' Statut du fichier charger
Dim loader As DirectMusicLoader
' Chargement d'un fichier MIDI dans une variable DirectMusicSegment
Voici donc les quelques variables obligatoires.
Certaines initialisations sont obligatoires pour pouvoir lire un fichier MIDI.
Dans l'événement Form_Load de votre projet :
Set loader = Nothing
' Si une lecture est en cour le loader contient des informations, donc on le remet à 0
Set loader = dx.DirectMusicLoaderCreate()
' Nous disons que la variable loader et un système de DirectX, de type chargement
' de musique
Set perf = dx.DirectMusicPerformanceCreate()
' Notre variable d'information du fichier est initialisée de même que le loader, avec la différence que celle-ci est de type Performance.
Call perf.Init(Nothing, 0)
' On associe la variable perf a un fichier MIDI, ici Nothing (donc aucun), et à 0 pour le handle.
perf.SetPort -1, 80
' Un index ainsi qu'une définition des canaux utilisée doivent être donné.
Voila votre Form_Load est terminé.
Ensuite comme dans l'exemple, avec un bouton nous allons lancer la lecture du fichier.
D'abord, il nous faut charger le fichier.
' Pour cela il nous faut le chemin d'accès au fichier MIDI, dans l'exemple j'ai mis ' une variable qui ne change pas, car le fichier MIDI ne change pas.
FileName = App.path & "\Mystery.mid"
' Nous chargeons le fichier MIDI dans seg par le biais de loader
Set seg = loader.LoadSegment(FileName)
'Une petite récupération du path sans le nom du fichier
Dim path As String
length = Len(FileName)
' Len renvoie le nombre de caractère d'une variable
Do While path <> "\"
path = Mid(FileName, length, 1)
' Mid renvoi les caractères composant Filename étant compris dans l'intervalle
' [0;length]
length = length - 1
' Nous enlevons 1 à length pour pouvoir ainsi arriver à supprimer le nom complet
' du fichier MIDI et ne garder que son chemin
Loop
perf.SetMasterAutoDownload True
' permet le chargement automatique des instruments utilisés par le fichier MIDI
seg.SetStandardMidiFile
' On dit que le fichier MIDI est de forme standard et non pas pour un fichier prévu
' exprès pour DirectMusic
'Maintenant nous pouvons jouer le fichier MIDI
perf.SetMasterVolume 50 * 50 ' Définition du volume
Call perf.PlaySegment(seg, 0, 0) ' On lance la lecture du fichier MIDI
Içi je multiplie le volume par 50 pour ne pas travailler sur des nombres trop grands.
Pour arrêter un fichier MIDI il suffit d'appeler la méthode stop:
Call perf.Stop(seg, segstate, 0, 0)
Arrêt (Fichier MIDI, Statut du fichier, temps, flags)
Et voilà maintenant le fichier MIDI peut être joué.
Conclusion
Donc en quelque ligne de code nous arrivons à ouvrir un fichier MIDI et à le jouer, bien sûr il est possible de trouver le tempo et d'autre information sur le fichier MIDI, mais ce n'est pas le but de ce tutorial.
Pour d'autre information sur DirectMusic vous pouvez allé ici : http://francis.dupont.free.fr/coindev/dm.htm
Au trement regarder le zip, celui-ci contient un projet jouant un fichier MIDI.
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Derniers Blogs
TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] AUTOUR DU W3C : NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Je m'y prends un peu tard je sais, mais bon je suis développeur web et donc hyper fainéant ! Toujours dans le cadre des technologies émergentes, ici HTML5, parce qu'on aime HTML5 chez Wyg , nous seront présent, le vieux ( Aurélien V.) et moi, pour pr...
Cliquez pour lire la suite de l'article par Gio [WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|