| proposition de commandes midi | |
|
|
Auteur | Message |
---|
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: proposition de commandes midi Jeu 29 Jan 2009 - 17:20 | |
| J' aurais une demande à adresser à Panoramic. Je suis conscient que cela n' intéresse pas beacoup de gens, mais ce serait important pour la création d applications musicales. Serait-il possible d' ajouter des commandes permettant de générer des notes en midi ? C' est théoriquement faisable avec l'API de Windows, mais ce dernier est très mal documenté. Je suis sûr que Panoramic arriverait à traduire les commandes de l' API en quelque chose de simple. Cela me faciliterait énormément plusieurs projets importants pour moi. Merci d' avance ! | |
|
| |
lutcho74
Nombre de messages : 139 Age : 30 Date d'inscription : 21/11/2008
| Sujet: Re: proposition de commandes midi Jeu 29 Jan 2009 - 18:02 | |
| Salut, Excuse moi, cette question va peu être te paraitre bête mais c'est quoi des notes en midi ? | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Jeu 29 Jan 2009 - 19:30 | |
| Salut, Non, ta question n' est pas bête du tout. Je vais essayer d' expliquer. Dans PANORAMIC il y a déjà la possibilité de jouer des fichiers midi, mais des fois on a besoin de produire du son via midi, sans passer par un fichier midi prédeterminé. De cette façon, les notes jouées peuvent être controlées dynamiquement par les algorithmes qu' on programme. Pour te donner un exemple précis, imagine que je veux faire entendre à l' utilisateur une note aléatoire dans un programme d' entraînement de l' oreille. Pour chaque note il faudrait que j' enregistre un fichier midi différent, ce qui n' est pas souple du tout. Si en plus je veux permettre aux utilisateurs de modifier l' instrument ou la durée de la note etc, cela multiplie horriblement les fichiers à créer. Par contre, si je peux programmer la note par une commande, ça simplifie beaucoup les choses. Une telle commande pourrait être : PLAYMIDI 60 I0où 60 serait le chiffre correspondant à la note et I0 signifierait que l' instrument est le 0 dans la liste des instruments midi, c' est-à-dire le piano. Il existe un module de java qui permet de faire des choses pareilles, mais java est trop compliqué pour moi, au moins pour l' instant. Je serais donc très reconnaissant à PANORAMIC s' il pouvait me faciliter ces travaux. J' espère t' avoir éclairé un peu ! | |
|
| |
lutcho74
Nombre de messages : 139 Age : 30 Date d'inscription : 21/11/2008
| Sujet: Re: proposition de commandes midi Jeu 29 Jan 2009 - 20:31 | |
| Re, A en faite c'est une extension de fichier audio je croyé que c'était une genre de note... | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Ven 30 Jan 2009 - 21:50 | |
| La vocation de PANORAMIC, c'est de pouvoir faire des choses très différentes les unes des autres, et cela de façon simple. Il faut donc que PANORAMIC puisse jouer des notes de musique.
Depuis ta proposition, j'ai regardé la faisabilité, et je suis arrivé à des choses qui commencent à me donner satisfaction... Bonne nouvelle: pouvoir émettre une note donnée par un instrument donné sera possible dans la prochaine version.
Je suis arrivé à une utilisation qui pourrait être:
MIDI_ON : va utiliser la carte son MIDI_INSTRUMENT I : joue de l'instrument I MIDI_PLAY N,V : joue la note N avec la vélocité V (N=60 pour un DO, V de 0 à 127) MIDI_OFF : n'utilise plus la carte son
Mais cela n'est pas définitif. | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Sam 31 Jan 2009 - 7:38 | |
| Un grand merci à Panoramic pour cette réponse rapide et, surtout, la bonne nouvelle ! Sans vouloir être trop exigeant, j' aurais quelques suggestions supplémentaires : Il est assez rare qu' on doive modifier la vélocité à chaque note. Le réglage de la vélocité pourrait donc être effectué dans une commande à part, par exemple MIDI_VELOCITY. Je pense qu' il doit également être facile pour Panoramic de créer une commande qui réglerait le tempo (la vitesse de la musique), par exemple MIDI_TEMPO. Dans la future commande MIDI_PLAY, il serait peut-être préférable de passer la durée de la note en argument. Cette durée pourrait être exprimée en temps musicaux : si on règle la durée à 1, ça correspondrait à une noire en notation musicale conventionnelle. La durée absolue de la note serait ensuite calculée en fonction du tempo précédemment sélectionné. La norme MIDI permet également la programmation de 16 canaux indépendants. Il serait trés intéressant de pouvoir faire jouer simultanément plusieurs canaux, pour créer plusieurs lignes musicales, des accords, ou une mélodie avec son accompagnement. Par exemple, une commande du type MIDI_CHANNEL déterminerait le canal midi des notes suivantes. En tous cas, je suis de nouveau agréablement surpris par la qualité du travail de Panoramic, qui a pu me fournir en 24 heures une réponse aussi précise ! | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Sam 31 Jan 2009 - 16:44 | |
| Je suis en train de regarder comment faire durer une note pendant un temps programmable.
On tend vers une utilisation qui serait:
MIDI_ON : va utiliser la carte son pour des notes MIDI MIDI_INSTRUMENT I : l'instrument utilisé est I MIDI_VELOCITY V : la vélocité (ou le volume) est V MIDI_TEMPO T : temps T (en millisecondes ?) de la durée d'une ronde MIDI_CHANNEL C : le canal utilisé est C MIDI_PLAY N, D : joue la note N (N=60 pour un DO) pendant la durée D (unité de D à préciser) MIDI_OFF : n'utilise plus la carte son
La valeur D de MIDI_PLAY N, D pourrait effectivement être une fraction de la valeur MIDI_TEMPO T qui donnerait le temps T en millisecondes de la durée d'une ronde.
D'après mes faibles connaissances en musique, la ronde est la note qui dure le plus longtemps, les durées des autres types de notes étant des fractions de la durée de la ronde. Si une ronde dure 1 unité, - une blanche dure 1/2 - une noire dure 1/4 - une croche dure 1/8 - une double croche dure 1/16 - une triple croche dure 1/32
D pourrait donc être un codage comme 1 pour une ronde, 2 pour une blanche, 4 pour une noire, etc.
Il pourrait être intéressant d'étendre plus tard ces commandes à des sons quelconques (WAVE) et ne pas se limiter à la musique.
J'imagine des commandes comme: WAVE_ON : va utiliser la carte son WAVE_PLAY F, D, T : joue le son de fréquence F, de durée D, de timbre T WAVE_OFF : n'utilise plus la carte son | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Sam 31 Jan 2009 - 20:52 | |
| Concernant le tempo, je devrais préciser que celui-ci est lié à la pulsation, le temps musical, la pulsation étant la plupart du temps une noire. Si le tempo est à 60, ça veut dire qu' il y aura 60 noires par minute, donc chaque noire durera 1 seconde. En général, la valeur du tempo indique le nombre de pulsations par minute. Donc je pense que la commande MIDI_TEMPO recevrait une valeur du programmeur et la transformerait en durée absolue en millisecondes selon ce principe. Par rapport aux durées de notes, il serait bien de pouvoir représenter également d' autres figures rythmiques, par exemple,une noire pointée (un temps et demi). Juste une question encore : ce sera alors possible de faire jouer plusieurs canaux midi en même temps ? Et quand cette cersion de Panormic pourrait-elle être disponible ? (je suis trop impatient de l' essayer ! ) Les commandes WAVE seraient aussi très intéressantes ! Encore merci ! | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Dim 1 Fév 2009 - 7:33 | |
| Et encore une dernière suggestion : je pense que la durée de la note peut être calculée à l' intérieur du programme, par un algorithme spécifique. Dans le code suivant, la durée absolue de la note en millisecondes est calculée en fonction du tempo et de sa durée en temps musicaux : - Code:
-
dim tempo : rem variable qui contient le tempo dim figure : rem variable de la durée d' une note en temps musicaux,1 = noire etc. dim duree : rem variable de la durée absolue de la note en millisecondes
tempo = 60 figure = 1
duree = figure * (60000 / tempo)
print duree
Donc je pense qu' une commande MIDI_TEMPO n' est peut-être pas forcément nécessaire. | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Dim 1 Fév 2009 - 10:51 | |
| C'est tout à fait vrai que la commande MIDI_TEMPO est superflue car on pourrait effectivement donner la durée absolue D de la note N dans la commande MIDI_PLAY N, D. Mais... Cela oblige à recalculer la durée absolue d'une note pendant que l'on joue une mélodie, à chaque fois qu'on change de type de note. Et qui dit calcul, dit "temps de calcul" et par conséquent "trou" dans le déroulement de la mélodie.
Je m'explique. On est en train de jouer une mélodie. Il y une série de n noires à jouer. On calcule la durée d'une noire Dn. On appelle n fois la commande MIDI_PLAY avec la durée Dn pour jouer ces n noires. Puis, il y a une série de x croches à jouer. On calcule la durée d'une croche Dc, on appelle x fois la commande MIDI_PLAY avec la durée Dc pour jouer ces x croches.
Eh bien, à chaque fois qu'il y a un calcul de durée à faire, cela va prendre du temps et je pense qu'une oreille musicale va entendre comme un "blanc" dans la mélodie. Je n'en sais rien, MIDI_PLAY N,D n'est pas encore complètement codée, et je n'ai pas pu expérimenter; mais je pressens que cela va s'entendre.
A moins de faire autrement: calculer avant de jouer une mélodie toutes les durées des types de notes et n'utiliser le résultat du calcul qu'au moment d'appeler MIDI_PLAY, et cela toujours au nom de la fluidité de la mélodie. Et cela imposerait la manière d'utiliser MIDI_PLAY. C'est ce que je comptais faire avec MIDI_TEMPO: calculer la durée de chaque note et utiliser ce résultat avec le codage de la durée absolue dans MIDI_PLAY Note, Codage_en_fonction_du_tempo | |
|
| |
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: proposition de commandes midi Dim 1 Fév 2009 - 11:39 | |
| d'abord : - Citation :
- Je suis conscient que cela n' intéresse pas beacoup de gens
t'a tord Merci d'avoir posé la question et ainsi fait que Panoramic puisse y réfléchir. Ensuite : - Citation :
- à chaque fois qu'il y a un calcul de durée à faire, cela va prendre du temps
Complètement d'accord avec toi. Et enfin : Panoramic, t'est un gars génial de chez génial, tu réagit vite et très bien. Ha oui, et musig game c'est notre encyclopédie musicale rien qu'à nous héhéhé... | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Lun 2 Fév 2009 - 21:47 | |
| Devant m'absenter quelques jours (pour des raisons professionnelles), je mets à disposition une version courante de PANORAMIC, qui possède 3 commandes MIDI pour générer des notes de musique. Il n'y a pas encore de commande MIDI_TEMPO, MIDI_CHANNEL, MIDI_VOLUME ni MIDI_INSTRUMENT, je ferai cela dès mon retour, mais il y a de quoi faire de la musique avec 3 commandes opérationnelles: MIDI_ON, MIDI_PLAY et MIDI_OFF avec des valeurs de tempo, de volume et de canal par défaut. Bref, de quoi tester... Utilisation des commandes: MIDI_ONCette commande doit être la première quand on crée directement des notes MIDI. Elle crée des ressources pour pouvoir jouer des notes sur la carte son. Erreur possible: MIDI Output is Already ON: une commande MIDI_ON a déjà été exécutée MIDI_PLAY NOTE, TYPEJoue une note d'un certain type. -> NOTE est défini par la convention MIDI: 60=Do, 62=Ré, ... -> TYPE est défini par un code, qui en fait représente la durée de la note: 0 : ronde 1 : ronde pointée 2 : blanche 3 : blanche pointée 4 : noire 5 : noire pointée 6 : croche 7 : croche pointée 8 : double croche 9 : double croche pointée 10: triple croche 11: triple croche pointée Les nombres pairs représentent des notes entières, les nombres impairs, les notes pointées. Erreurs possibles: MIDI Output is Not ON: il n'y a pas eu de commande MIDI_ONNot Possible to use MIDI Output: impossible d'utiliser la carte son pour les notes MIDI MIDI Note Out of Range: NOTE doit être entre 21 et 108 (piano) MIDI Note Type Out of Range: TYPE doit être entre 0 et 11 REMARQUE: comme il n'y a pas encore de réglage du tempo, par défaut le tempo est de 60 noires par minute, c'est pour cela que provisoirement, la durée d'une noire est de 1 seconde: 0 : ronde : durée actuelle = 4000 millisecondes 1 : ronde pointée : durée actuelle = 6000 millisecondes 2 : blanche : durée actuelle = 2000 millisecondes 3 : blanche pointée : durée actuelle = 3000 millisecondes 4 : noire : durée actuelle = 1000 millisecondes 5 : noire pointée : durée actuelle = 1500 millisecondes 6 : croche : durée actuelle = 500 millisecondes 7 : croche pointée : durée actuelle = 750 millisecondes 8 : double croche : durée actuelle = 250 millisecondes 9 : double croche pointée : durée actuelle = 375 millisecondes 10: triple croche : durée actuelle = 125 millisecondes 11: triple croche pointée : durée actuelle = 188 millisecondes MIDI_OFFCette commande libère les ressources permettant de jouer des notes sur la carte son. Erreur possible: MIDI Output is Not ON: la sortie MIDI n'est pas ON Voici un petit exemple d'utilisation qui joue la suite de 2 noires Do, Ré, suivie de la suite de 3 croches Mi, Fa, Sol: - Code:
-
midi_on midi_play 60,4 midi_play 62,4 midi_play 64,6 midi_play 65,6 midi_play 67,6 midi_off Et voici la version de test: www.panoramic-language.com/PANORAMIC_EDITOR.zip | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Mar 3 Fév 2009 - 8:46 | |
| mille mercis ! je vais essayer de faire un petit programme pour illustrer ces nouvelles possibilités du langage. | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Dim 8 Fév 2009 - 17:36 | |
| Ayant ouvert un bouquin de théorie de la musique (livre unique de musique et de chant de Paul Pittion), j'ai vu qu'il y a aussi des silences de même durée que les notes. Pause = ronde, demi-pause = blanche, soupir = noire, demi-soupir = croche, quart-de-soupir = bouble-croche. Il faut donc une commande pour les silences, de type MIDI_PAUSE D.
D'autre part, je n'ai vu mention nulle part de triple croche. la triple croche serait-elle une invention de ma part? | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Lun 9 Fév 2009 - 6:16 | |
| En effet, les silences sont également importants et j' aurais pu en parler. La triple croche existe, mais elle est peut-être moins connue, parce que plus rarement utilisée. Voir par exemple cet article de wikipédia : http://fr.wikipedia.org/wiki/Repr%C3%A9sentation_des_dur%C3%A9es_en_musique. Il existe également le triolet, un rythme qui divise la figure supérieure en trois parties égales. Le plus courant est le triolet de croches, qui divise une noire en trois parties, donc chaque croche prend un tiers d' un temps musical. Avec un tempo à 60, cela équivaut à 333 millisecondes. C' est à cause de tous ces rythmes possibles que j' avais pensé que la durée de la note pourrait être exprimée en temps musicaux. Dans ce cas-là, le programmeur préciserait la durée avec un nombre réel : 1 = noire 0.5 = croche 0.75 = croche pointée etc. Cela aurait aussi été plus intuitif pour les musiciens, mais le codage actuel de la durée n' est pas compliqué non plus. | |
|
| |
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: proposition de commandes midi Ven 13 Fév 2009 - 0:24 | |
| C'est pas mieux de faire : ?
1) définir nous-même la durée d'un temps par une instruction d'affectation.
2) noter une note comme (//avec les commentaires ): Do // sans chiffres signifie un temps) Do2 // le chiffre 2 signifie que c'est un temps divisé par 2 donc demi-temps. 2Do // le chiffre 2 devant signifie que c'est un temps multiplié par 2 | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: proposition de commandes midi Ven 13 Fév 2009 - 7:12 | |
| Toutes les suggestions sont les bienvenues. La syntaxe de la commande MIDI_PLAY dans la version d'essai n'est qu'une proposition permettant à musicgame d'essayer de jouer directement des notes... Dans ta proposition, il y a quelquechose qui me gêne, c'est le fait de citer directement les notes, je dirai, "françaises". Nos amis anglais, américain, chinois n'utilisent pas Do, Ré, Mi, mais par exemple C,D,E pour les anglo-saxons. Les chinois utilisent une autre notation, et je voudrais que chacun puisse comprendre facilement la syntaxe de MIDI_PLAY.
Il nous faut encore réfléchir...
EDITION: je pense que par "Do" tu désigne pas la note DO, mais une Durée? | |
|
| |
dragonno
Nombre de messages : 341 Localisation : Près de Toulouse Date d'inscription : 22/01/2009
| Sujet: Re: proposition de commandes midi Ven 13 Fév 2009 - 14:06 | |
| Salut^^ Non, par Do je désigne la note, car la durée c'est le chiffre devant ou derriere selon qu'on multiplie (devant) le temps de base ou qu'on le divise (derriere). Bein comme de toutes façon il vaut mieux internationaliser le programme et que la musique c'est un langage universel on peut utiliser le C à la place du Do. De toutes façons, désigner une note d'une manière qui soit compréhensible par tout ceux qui ont leur propre représentation d'une note c'est impossible. Donc autant choisir la représentation la plus connue celle des anglo-saxons.
Sinon je viens de penser à une solution^^ : Le programme affiche sur sa barre de menu le dessin de chaque note et comme y en a que 7 c'est facile^^ Le programmeur (utilisateur) clique sur le dessin d'une note et ça lui écrit la note dans son code à l'endroit courant du curseur avec la représentation de note qui correspond à son choix de langue dans les options. | |
|
| |
musicgames
Nombre de messages : 55 Date d'inscription : 21/01/2008
| Sujet: Re: proposition de commandes midi Lun 17 Aoû 2009 - 20:12 | |
| Bonjour, J'aurais besoin de quelques commandes supplémentaires, pas tout de suite bien sûr, ça peut attendre : - sélection d'instrument midi, - sélection de canal midi, - posiibilité de jouer plusieurs notes simultanément sur différents canaux. Est-il possible ? Merci d'avance ! | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: proposition de commandes midi Lun 17 Aoû 2009 - 21:23 | |
| Ca paraît quand même très spécialisé comme commandes... est-ce que c'est vraiment d'intérêt général ? N'existe-t-il pas un langage dédié à ça pour programmer des choses aussi pointues ? | |
|
| |
Georges
Nombre de messages : 290 Age : 55 Localisation : Martinique Date d'inscription : 29/05/2009
| Sujet: re Lun 17 Aoû 2009 - 23:06 | |
| salut Etant donné que Panoramic est dédié en priorité aux jeux, Je pense comme musicgames que des options supplémentaires sur la gestion des sons seraient les bienvenues. georges @+ | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: proposition de commandes midi Lun 17 Aoû 2009 - 23:54 | |
| Ce n'est que mon point de vue évidemment, mais là je pense qu'on dépasse le domaine du son des jeux et qu'on rentre dans le domaine de la musique professionnelle. Plusieurs notes simultanément sur différents canaux, j'ai du mal à imaginer ça dans un jeu... Peut-être que je n'ai rien compris, ça m'arrive. | |
|
| |
Georges
Nombre de messages : 290 Age : 55 Localisation : Martinique Date d'inscription : 29/05/2009
| Sujet: re Mar 18 Aoû 2009 - 0:07 | |
| salut par exemple, dans la plupart des jeux, tas une musique de fond et des sons et/ou musiques associés à une action. d'ou la sortie de sons sur plusieurs canaux simultanément georges @+ | |
|
| |
Contenu sponsorisé
| Sujet: Re: proposition de commandes midi | |
| |
|
| |
| proposition de commandes midi | |
|