CLAVIER ARRANGEUR MIDI VIRTUEL

Utilisateur anonyme - 6 déc. 2010 à 07:12
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008 - 10 déc. 2010 à 05:20
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/52564-clavier-arrangeur-midi-virtuel

pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
10 déc. 2010 à 05:20
Plusieurs sites te permettront d'approfondir la norme MIDI et le format des messages. Un exemple :
http://www.sonicspot.com/guide/midifiles.html

Bonne continuation
etirex Messages postés 12 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 17 septembre 2009
10 déc. 2010 à 01:25
J'ai pas trouvé beaucoup d'infos concernant les commandes $B, mais c'est intéressant je vais voir ce que je trouve là dessus. Pour le reste j'y avais également pensé, une gestion amélioré des touches du clavier (parfait avec les touches fonctions), la lecture de fichiers MIDI, la possibilité de créer ses partitions et de les enregistrer, etc. (j'ai d'ailleurs prévu depuis le début un bouton Outils/Préférences, que je voulais remplir de fonctions mais ça viendra)

Merci encore pour ces remarques pertinentes
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
10 déc. 2010 à 00:48
Re ....,
J'ai bien récupéré ta dernière mise à jour avec la nouvelle mélodie.
Je pense qu'il serait intéressant de pouvoir lire directement un fichier MIDI.
Reste à voir comment, dans ce cas, définir l'accompagnement!

Cordialement,
Pierre
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
9 déc. 2010 à 22:19
Effectivement ça explique .....

Pendant qu'on en est à des améliorations tu peux aussi prévoir d'ajouter quelques 'slider' pour modifier certains paramètres, par exemple:
- la vélocité (envoyée avec la note)
- d'autres paramètres envoyés par les commandes $B (Controller Event). En particulier le paramètre 'Modulation' peut produire un effet intéressant.

Note: Afin d'utiliser les touches du clavier sur une plus grande portée j'avais, dans mon test, utilisé les touches fonctions F1 et F2 pour décaler, en + ou en -, d'un octave (en dessous du clavier du piano j'avais les libellés des touches et je déplaçait ces libellés en fonction de l'octave).
etirex Messages postés 12 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 17 septembre 2009
9 déc. 2010 à 20:50
C'est normal j'utilise le format décimal alors que c'est de l'hexa, erreur de super newbie! :-)

Merci pour la liste en tout cas
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
9 déc. 2010 à 19:34
Bonsoir ETIREX,

Je te joins ci-dessous la liste de 0 à 127 que j'avais récupérée à l'époque.
Par contre dès que j'ai un moment je regarderai ton code car en faisant fonctionner ton programme et le mien j'ai constaté des différences en utilisant les mêmes numéros d'instrument. Si je trouve quelque chose je te tiendrai au courant.

Instruments: array[0..127] of String = (
'Piano a queue',
'Piano',
'Piano Electrique',
'Piano bastringue',
'Piano Fender Rhodes',
'Piano Chorus',
'Clavecin',
'Clavinet Hohner',
'Celesta',
'Jeu de clochettes',
'Music Box Sound',
'Vibraphone',
'Marimba',
'Xylophone',
'Cloches',
'Dulcimer',
'Orgues Hammond',
'Orgues Percussive',
'Orgues Rock',
'Orgues d''Eglise',
'Orgues Reed',
'Accordeon',
'Harmonica',
'Bandoleon',
'Guitare acoustique (nylon)',
'Guitare acoustique (Stahl)',
'Guitare Electrique Jazz',
'Guitare Electrique (Sans Distor)',
'Guitare Electrique (attenue)',
'Guitare Electrique (sature)',
'Guitare Electrique (avec Distor)',
'Les accords de guitare',
'Basse acoustique',
'Basse electrique (pince)',
'Basse electrique (frappe)',
'Basse Fretless',
'Slap Basse 1',
'Slap Basse 2',
'Basse synthetiseur 1',
'Basse synthetiseur 2',
'Violon',
'Alto',
'Violoncelle',
'Contrebasse',
'Tremolo',
'Pizzicato',
'Harpe',
'Timbales',
'Ensemble des Instruments a cordes 1',
'Ensemble des Instruments a cordes 2',
'Synthetiseur d''instruments a cordes 1',
'Synthetiseur d''instruments a cordes 2',
'Choeur ("Aahh")',
'Voix ("Oohh")',
'Voix synthetique',
'Orchestre',
'Trompette',
'Trombone',
'Tuba',
'Trompette avec sourdine',
'Cor de chasse',
'Ensemble cuivres',
'Synthetiseur cuivres 1',
'Synthetiseur cuivres 2',
'Saxo soprano',
'Saxo Alto',
'Saxo Tenor',
'Saxo Bariton',
'Hautbois',
'Cor anglais',
'Basson',
'Clarinette',
'Piccolo',
'Flute traversiere',
'Flute a Bec',
'Flute de pan',
'Carafe',
'Shakuhachi',
'Fifre',
'Okarina',
'Lead 1 (carre)',
'Lead 2 (dent de scie)',
'Lead 3 (calliope)',
'Lead 4 (Chiff)',
'Lead 5 (Charang)',
'Lead 6 (Voice)',
'Lead 7 (fith)',
'Lead 8 (basse+lead)',
'Pad 1 (New Age)',
'Pad 2 (Chaud)',
'Pad 3 (Polysynth)',
'Pad 4 (Choeur)',
'Pad 5 (Bowed)',
'Pad 6 (Metallique)',
'Pad 7 (Halo)',
'Pad 8 (Sweep)',
'Effet 1 (Pluie)',
'Effet 2 (Soundtrack)',
'Effet 3 (Cristal)',
'Effet 4 (Atmosphere)',
'Effet 5 (Brightness)',
'Effet 6 (Goblins)',
'Effet 7 (Echo)',
'Effet 8 (Science Fiction)',
'Cithare',
'Banjo',
'Shamisen',
'Koto',
'Kalimba',
'Dudelsack',
'Violon americain',
'Shanai',
'Tinkle Bell',
'Agogo',
'Bidon',
'Son de bois',
'Tambour Taiko',
'Cymbale d''orchestre',
'Tambour Synthetique',
'Hi Hat ferme',
'Ensemble de guitares',
'Bruit de respiration',
'Brisants',
'Gazouillement d''oiseaux',
'Sonnerie de telephone',
'Helicoptere',
'Applaudissements',
'Coups de feu'
);

A noter que les derniers sont plus des 'bruits' que des notes!
etirex Messages postés 12 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 17 septembre 2009
9 déc. 2010 à 18:10
Bonjour et merci Pierrefo,

bon c'est la première source que je poste mais je n'en suis pas à mes débuts en programmation, habituellement plus tourné vers le développement Web quand même, et Delphi pour le plaisir.

En ce qui concerne les instruments d'après les tests que j'ai fait, à partir de l'instrument 80 je n'ai plus rien, puis ça recommence à 100, mais avec le même instrument que le 0 (grand piano), puis ça s'arrête à 180, et ainsi de suite.

Au sujet des noms d'instruments j'ai cherché, j'avais d'ailleurs trouvé ce lien: http://stackoverflow.com/questions/3649429/delphi-library-for-midi-input-output

(midiAcousticGrandPiano, midiBrightAcousticPiano, midiElectricGrandPiano, midiHonkyTonkPiano ...)

Le problème est que les premiers instruments correspondent mais ensuite ça ne correspond plus aux instruments que j'entends, donc j'ai mis de côté, mais oui je serais intéressé de les connaitre, de façon à les ajouter sur l'application.
pierrefo Messages postés 54 Date d'inscription mardi 22 juin 2004 Statut Membre Dernière intervention 29 décembre 2008
9 déc. 2010 à 17:43
Bonjour,

Félicitations, pour un débutant c'est prometteur.

Une petite idée concernant le choix de l'instrument. Il serait intéressant d'afficher le nom de l'instrument.
Par ailleurs je crois me souvenir qu'il peut y en avoir 128. A mes débuts, ça remonte à quelques années!!, j'avais aussi fait un piano virtuel (mais quand je revois mon code, mes débuts étaient plus laborieux que Toi).
Si tu as un problème pour le nom des instruments dis le moi je te les transmettrai.

Amicalement,
etirex Messages postés 12 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 17 septembre 2009
6 déc. 2010 à 14:24
Merci CIREC, je m'occupe de virer l'unité de trop.

J'ai testé avec Form1.KeyPreview:=True; mais ça ne marche pas, seul l'appel du focus sur le OnPaint fonctionne. Sans cet appel, au lancement de l'application, on est obligé de cliquer dessus pour qu'enfin les touches du clavier soient opérationnelles.

Mon vrai soucis reste le problème de mise en pause de la mélodie Baloo, je ne parviens pas à suspendre les 2 threads (mélodie et accompagnement), je ne comprends pas où se trouve le problème.
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 déc. 2010 à 14:04
Salut,

merci d'avoir réagi aussi vite en ce qui concerne le nettoyage du Zip ;)
je pense que tu pourrais encore retirer l'unité "Piano.pas" qui est, semble t-il, remplacée par "Unit_Piano.pas"

je te dirais juste de retirer "Form1.SetFocus;" de "TForm1.FormPaint" et de mettre à la place la propriété "KeyPreview" de "Form1" à True. ça devrait faire la même chose mais en moins lourd.

Il y a certainement encore d'autre chose à améliorer mais pour un premier code je dis Bravo et j'ai hâte de voir tes prochaines contributions.
etirex Messages postés 12 Date d'inscription vendredi 3 janvier 2003 Statut Membre Dernière intervention 17 septembre 2009
6 déc. 2010 à 12:49
Salut Francky, je viens de renvoyer le zip nettoyé, c'est la première source que je poste, je ne suis pas familiarisé avec le formalisme, merci donc de me l'avoir fait remarquer.

En ce qui concerne la recherche sur CS pour trouver une réponse à ma question, j'y ai pensé évidemment, d'ailleurs j'ai regardé tes projets car tu maîtrises bien le sujet, mais j'ai eu des soucis avec les compos et D2009.

Toujours est-il qu'il faudrait, avant de faire une recherche, que je sois fixé sur la bonne question à se poser. En effet le clavier possède une sortie MIDI, qui est reliée à un adaptateur MIDI/USB, lui même relié au PC. Il faut déjà que je comprenne le principe: l'application Delphi, doit-elle communiquer directement sur le port USB sans se soucier du MIDI, où doit-elle se connecter au périphérique en USB ET contenir un compo MIDI (ce qui me semble le plus logique, mais dans ce cas comment lier les 2?), ou seul un compo MIDI suffit?
Utilisateur anonyme
6 déc. 2010 à 07:12
Salut

Merci de nettoyer le zip.

La question est comment récupère-t-on le signal, pour que le logiciel puisse l'intercepter et l'interpréter?

Une recherche sur le moteur de CS te donnera la réponse :).

J'ai pas lu le source pour l'instant : j'attends que le zip soit propre ;)
Rejoignez-nous