Programmation midi : programmes et comparatifs
- 32 réponses
- 5 participants
- 1 858 vues
- 12 followers

deb76

Bonjour,
Dans le sujet sur le Minimoog Model D de Behringer noiZe évoquait sa façon de travailller avec un exemple de script créé avec Perle :
Citation de noiZe
# start the drone ( a C note (=> 36) on midi channel 1(=> 0) with velocity 96)
$on_msg(96,36,0);
# modulate some parameters on 16 steps (BPM=120 >> sleep 0.5)
for (my $t=0;$t<16;$t++) # do 16 times
{
# change the cutoff frequency (CC74) with a random value 0 --> 127
&CC(int(rand(128)),74,0); #(value,CC number, channel)
# detune with pitch Bend with a random value 8192 (center) --> 9192
&PB(8192+int(rand(1000)),0); # (value, channel)
# wait for next event
sleep(0.5);
}
# kill the drone
$off_msg(0,36,0); #(velocity, note, channel)
# voilà en 4-5 lignes un drone avec un séquenceur de paramètre à la elektron![]()
et qu'il proposait qu'on ouvre un sujet dédié. Une proposition qui semble intéresser d'autres membres. Un autre membre, Frajean, en tant qu'informaticien développeur qui s'est dit aussi intéressé "par un sujet programmation midi" a mis plutôt en exergue Python : "La mode est plutôt au Python" a-t-il souligné.
Pour ma part, je ne programme pas, je ne suis qu'un utilisateur travaillant plutôt en Common Lisp (Open Music, Opusmodus et Grace) et un peu Python avec Music21. Mais ça m'intéresse de comparer les différentes approches, les différentes notations ou codes écrits dans les scripts d'Opusmodus/Grace Python_Music21 ou visuels avec les patchs d'Open Music, les possibilités aussi dans la génération des flux midi, avec contrôles ou non.
Je note toutefois qu'Open Music et Opusmodus sont spécifiquement des programmes pour la création musicale, avec des fonctions dédiées, natives.
Je mets quelques liens sur les programmes que j'utilise:
Pour Python, j'utilise la plateforme Anaconda Navigator (PC et Mac) associé à Music21 qui est distribué gratuitement:
Anaconda Navigator : https://www.anaconda.com/download/#download
Music21 (a tookit for computer-aided musicology) : http://web.mit.edu/music21/doc/installing/index.html
A noter qu'il y a d'autres plateformes concernant Python.
Toujours en distribution gratuite, le programme Grace (Common Music Mac, PC, Linux) :
http://commonmusic.sourceforge.net/
et sa documentation : http://commonmusic.sourceforge.net/cm/res/doc/cm.html
Le programme de CA0 (composition assistée par ordinateur) Open Music (visual programming environment) de l'Ircam, distribué gratuitement pour les plateformes Mac, PC et Linux est le successeur de Patchwork. La programmation s'effectue à partir de patchs où on connecte les différentes fonctions représentées par des objets (classes et fonctions) entre elles. Plusieurs librairies spécialisées sont proposées et permet toutes les opérations de CAO, d'analyse musicale, etc :
http://repmus.ircam.fr/openmusic/download
Enfin, pour l'instant uniquement porté sur Mac - mais une version PC est prévue - et payant, développé par une petite équipe internationale dirigée par Janusz Podrazik, Opusmodus qui combine CAO et puissant éditeur de partitions, sa version de démonstration est fonctionnelle durant un mois : https://opusmodus.com/fr/
[ Dernière édition du message le 31/08/2017 à 02:09:43 ]
- 1
- 2

noiZe


Frajean


Merci deb76 d'avoir créé ce topic.
Perso, j'ai pas mal utilisé le Python il y a quelques années pour des scripts orientés interface vocale machine-->homme (un peu comme un lapin Nabaztag mais sur l'ordinateur), ou pour des scripts d'administration système utiles à mon boulot. Moins depuis, mais je vois que tous les admins système UNIX/LINUX utilisent à fond le Python pour tous leurs scripts d'installation/configuration. Un langage très puissant, surtout avec toutes les bibliothèques qui se sont développées autour.
Et sinon, le script de noiZe que tu donnes en exemple est écrit en Perl, pas en Perle

[ Dernière édition du message le 31/08/2017 à 08:40:06 ]

static volatile

Il faut dire que le langage est expressif et très agréable à utiliser quel que soit le niveau de l'utilisateur.
Surtout consacré à la synthèse audio, on peut aussi recevoir, émettre, transformer et générer du MIDI avec Csound, qui d'ailleurs possède une API depuis les langages C/C++, Python, Java, Lisp (il me semble), Haskell, peut être éxécuté depuis un browser web.
L'avantage du langage, selon moi, est qu'il se rapproche plus de la synthèse modulaire décrite avec du texte (on connecte des modules, appelés opcodes, les uns dans les autres pour créer des instruments) qu'à un langage de programmation (méme si on en a tous les éléments: boucles, branchements conditionnels, etc...).
En Python pur, je n'ai pas trouvé d'API très pythonesque pour parler à ALSA, mais je n'ai pas beaucoup cherché.
Resistance is not futile... it's voltage divided by current

deb76

P de Frajean
Et sinon, le script de noiZe que tu donnes en exemple est écrit en Perl, pas en Perle
Autant pour moi, une belle coquille...
Sinon, merci à vous pour ce premier retour. Merci à aaB qui a évoqué Csound qui a repris le développement de la série des "Music" dont notamment le mythique Music V de Max V. Mathews décrit dans "The Technology of Computer Music" écrit en collaboration avec Joan E. Miller, F.R. Moore, J.R. Pierce et J.C. Risset. A noter la bible que peut-être le CSound Book édité par le MIT. A la fin des années 70 et début des années 80, les centres de Recherche comme l'Ircam utilisaient Music 10 en temps différé avant de passer, me semble-t-il, à Music 11 mais aussi de travailler au développement de Max qui en premier lieu fut un manuel à destination interne écrit par Philippe Manoury. Dans la préface rédigée par Miller Puckette, le compositeur écrivait "L'environnement de programmation graphique de musique informatique MAX est conçu pour répondre au besoin général d'un contrôle raffiné des synthétiseurs pour l'éxécution live".
Pour revenir à Csound, lui aussi distribué gratuitement, il y a de nombreux programmes qui permettent de le programmer (des liens ici : http://csound.github.io/download.html). Pour ma part, j'utilise avec le Mac CsoundQt qui a l'avantage de proposer outre de nombreux exemples, des pièces tels le Study 2 de Stockhausen (porté aussi en Max MSP) ou Stria de John Chowning.
Du coup, si on évoque Max MSP (https://cycling74.com/) qui est payant, il faut citer Pure Data qui est le pendant gratuit de Max mais qui a conservé en quelque sorte sa pureté originelle au niveau de son interface (https://puredata.info/downloads). Tout comme d'ailleurs, PWGL, A visual Programming Language For Music and Sound, qui est une sorte de mix entre Open Music et Max MSP, avec le principe de fonctions représentées graphiquement et qu'on connecte entre elles : http://www2.siba.fi/PWGL/downloads.html
Précision, il n'est porté que sur Mac et nécessite l'installation de librairies annexes, notamment avec l'OS Sierra et il peut entrer en conflit avec d'autres programmes. C'est dommage, car c'est un très bel outil pédagogique et relativement accessible.
Autre outil très pédagogique, distribué gratuitement, proposant une programmation "accessible" avec de nombreux exemples de scripts, des outils tels un Tuner, un Scope, SuperCollider qui tourne sur Mac, PC et Linux: https://supercollider.github.io/
Et pour compléter, et même si ce le midi est exclu, mais qui peut donner des idées de modulations pour SuperCollider ou autres programmes, l'excellente démo de l'éditeur du Clavia Nord Modular G2 (Mac et PC) avec lequel on peut se construire des petits synthés modulaires : http://www.nordkeyboards.com/downloads/legacy/nord-modular-g2

Frajean


deb76

Pour revenir à Python, puis-je me faire l'avocat du diable en tant que musicien/compositeur et en aucun cas développeur (1) ? Quel est son intérêt en dehors de programmes très spécifiques pour la création musicale par rapport à des logiciels permettant à un grand nombre d'opérations, de calculs, comme Max MSP, Open Music ou Opusmodus qui eux sont orientés Musique ?
(1) Où pour être plus précis, un utilisateur occasionnel et curieux qui s'est créé des petits programmes utilitaires calculant un intervalle et sa fréquence en Hz, des tempéraments fréquences Hz en microtonalité, calculer une matrice de transposition sérielle P I R RI 12x12, etc. En notant, toutefois que ces calculs je les obtiens plus rapidement avec Open Music ou Opusmodus.

noiZe

J'ajouterai aussi sonicPi qui est une interface en Ruby qui parle à SuperCollider : http://sonic-pi.net/.
Et tant qu'à parler de live coding: https://toplap.org/ qui liste pas mal d'outils.

noiZe

Pour revenir à Python, puis-je me faire l'avocat du diable en tant que musicien/compositeur et en aucun cas développeur (1) ? Quel est son intérêt en dehors de programmes très spécifiques pour la création musicale par rapport à des logiciels permettant à un grand nombre d'opérations, de calculs, comme Max MSP, Open Music ou Opusmodus qui eux sont orientés Musique ?
Sans doute pas grand chose.
Je ne connais pas très bien Open Music ou Opusmodus mais j'ai un peu chipoté sur PD et j'ai un NordModular. Pour moi perl (ou python c'est idem) c'est parce que je l'emploie au boulot (un peu dans le cas de Frajean, je travaille comme admin réseau) mais ce que je vois comme avantages pour moi:
- C'est justement que ce n'est pas que pour la musique et que donc on peut imaginer des interactions avec le monde extérieur. Par exemple j'imagine assez bien utiliser une dalle LED style novation launchpad pour m'indiquer un problème détecté par mon monitoring. Rien à voir avec la musique dans ce cas mais on reste dans la programmation MIDI.
- C'est du script, du texte, pas besoin de souris et de connecter des modules entre eux, pas besoin de compilation (et un script peut en lire un autre ou en créer d'autres).
- Ca tourne sur des plateformes très légères comme un raspberry pi.
- C'est sans doute plus documenté, (en tout cas la base est plus large) et plus ouvert (par rapport à un soft comme celui du modular, c'est sûr). On crée SON outil.
Alors, oui Csound ou supercollider aussi c'est du script, PD tourne sur Pi, ..
C'est une question de rencontre, je suis tombé sur perl au boulot, çà aurait pu être autre chose. Tant qu'à se former autant que çà serve à plus d'une chose. Je suis hobbyist, çà serait sans doute différent si j'étais compositeur et gagnait ma vie avec la musique.

static volatile

Alors, oui Csound ou supercollider aussi c'est du script, PD tourne sur Pi, ..
CSound tourne aussi sur Pi, Android et IOs, on peut aussi l'intégrer à PD.
@deb76: en plus du Csound Book, il y a le FLOSS Manual qui est plus un tutoriel qu'une série d'articles et qui est écrit de sorte qu'un débutant (en programmation et en musique par ordinateur) puisse s'y retrouver.
SuperCollider s'adresse, à mon point de vue, plutôt à un public de programmeurs: OO, serveur-client, etc... ça fait beaucoup de concepts à intégrer si on veut simplement faire de la musique et qu'on n'est pas déjà dans ce genre de truc.
Dans les langages audio/MIDI, il y a aussi FAUST, qu'on peut éditer directement avec leur compilateur dans une page web et générer des applications standalone, des VST, des lv2, etc...
Là encore, malgré la simplicité d'accès aux outils, c'est de la programmation fonctionnelle, pas forcément facile à appréhender pour un non programmeur, et ily a relativement peu de documentation.
Resistance is not futile... it's voltage divided by current

noiZe


J'essayerai quand même bien de m'y plonger parce que Csound+cabbage+Python, çà a l'air méchamment puissant


static volatile

MAis bon la gueule des scripts Csound
Oui, en même temps, le langage a été designé il y a 30 ans (et la rétro-compatibilité est maintenue)!
Mais oui, quand on est habitués à des langages plus modernes, ça fait un peu mal aux yeux (il y a des améliorations avec ce qu'ils appellent la notation fonctionnelle).
Cabbage, je n'ai jamais réussi à le faire tourner vraiment.
Ça compile plus ou moins, mais le build system n'est vraiment pas terrible et sur ma machine ça plante pas mal.
Apparemment, les utilisateurs sur Mac et Ubuntu/Debian n'ont pas ces problèmes (mais je suis sur une distro avec rolling release et je dois avoir des incompatibilités dans les libs).
C'est dommage parce que ça donne envie des VST custom...
Resistance is not futile... it's voltage divided by current

deb76

Bonjour,
J'ai fait un petit PDF avec quelques exemples de patchs avec Open Music et sa librairie Csound. Un des intérêts d'Open Music c'est de pouvoir créer des patchs - à partir du moment où Csound est installé - où chaque paramètre de CSound peut-être contrôlé avec des processus algorithmiques qui seraient fastidieux à insérer dans un interface Csound (comme dans l'excellent CsoundQt qui propose de nombreux exemples d'instruments et de pièces comme Study 2 de Stockhausen et Stria de John Chowning).
A noter que le troisième patch est construit à partir d'une suite de quelques accords de Breathe importée en midifile et avec sa conversion en Csound mais aussi avec une sélection des accords pour les analyser et les identifier selon la classification d'Allen Forte.
http://www.deb8076.eu/CAOPDF/OM&Csound.pdf
[ Dernière édition du message le 04/09/2017 à 13:33:27 ]

noiZe


antart

hello à tous, j'ai vu la discussion sur le topic du moog donc je rejoins !
moi je suis plus de l'école puredata/max mais interessé quand même, et assez à fond dans ce qui est capteur, interfaces et "séquenceurs" auto-générés, je poste donc pour flaguer discretement ce topic prometteur!
[ Dernière édition du message le 17/09/2017 à 04:31:34 ]

noiZe


Frajean

Savez-vous s'il existe un programme permettant de travailler les voicings jazz ? Dans le cas contraire, je crois que je vais m'y mettre...
Dans l'idéal, il faudrait une interface permettant de choisir :
- la tonalité,
- les types d'accords (simples jusqu'aux 7ème, enrichis de 9ème, 13ème et 11ème), avec ou sans basse,
- suite d'accords aléatoire ou parmi des grilles de standards du Real Book (qui peuvent alors contenir des accords de passage hors tonalité choisie, ou des modulations de tonalité),
- le tempo.
L'application afficherait alors :
- Le nom des accords suivant les différentes écritures qu'on peut trouver (m, min, -, Maj7, ^, m7b5, °, etc),
- Les notes jouées (saisie clavier MIDI) sur une portée avec différentes couleurs et le degré (3, b7, #9, b13, #11, ...):
* en noir : les notes OK qui sont bien dans l'accord,
* en vert : les enrichissements ajoutés qui sont bien dans l'harmonie,
* en rouge : les notes interdites, hors harmonie,
* en bleu : les notes manquantes,
* en gris : les notes "inutiles" telles que la fondamentale ou la 5te, dévolues à la contrebasse, les notes en doublon.
L'application devrait donc gérer les enrichissements ou les remplacements de notes autorisés, repérer les renversements.
Qu'en pensez-vous ?

noiZe

https://sourceforge.net/projects/impro-visor/
https://www.cs.hmc.edu/~keller/jazz/improvisor/
[ Dernière édition du message le 25/06/2018 à 00:06:30 ]

Frajean



noiZe

Si tu as des exemples fonctionnels de trucs en python audio/midi que tu voudrais partager, je suis preneur. Je m'y suis mis récemment mais le temps me manque et j'ai un peu tendance à chercher l'info plus qu'à coder. Mais EN MP ce serait sans doute mieux.

Frajean


noiZe


deb76

Citation de Frajean
Je comptais m'y mettre, et j'avais déjà juste trouvé 2/3 sites et paquets intéressants, notamment celui-ci et la bibliothèque mido
Sympa de mettre le lien sur le sujet "Python" ouvert dans Audiokeys. Je m'y suis intéressé par pure curiosité et j'ai fait quelques scripts notamment pour calculer fes fréquences microtonales mais perso n'étant pas programmeur je préfère de loin travailler avec Open Music (OM) de l'Ircam (et distribué gratuitement pour Mac et PC voire Linux) et Opusmodus (OPMO) créé par Janusz Podrazik. Inconvénient toutefois pour OPMO, il est porté exclusivement sur Mac. Mais c'est devenu mon soft de CAO préféré en raison de son puissant éditeur de partitions et bien entendu toutes les opérations liées à la CAO.
Concernant le jazz, les accords ont été prédéfinis et peuvent-être joués selon l'un des trois renversements ascendants ou descendants. J'ai fait un petit PDF montrant comment les acccords se notent et s'affichent dans la partition :
http://www.deb8076.eu/CAOPDF/ExOPMOChords&ThemeJazz1.pdf
PS : Le créateur d'Opusmodus, Janusz Podrazik, est très réactif et il est preneur de toutes suggestions permettant d'ajouter des fonctions. Pour exemple, pour une analyse musicale entreprise conjointement sur OM et OPMO sur des pièces dodécaphoniques d'Anton Webern où les séries P I R RI 12x12 s'entrecroisent littéralement, s'entrelacent, j'avais besoin d'une fonction de recherche me permettant dans une matrice 12 x 12 P R I RI à partir de deux notes conjointes me suggérer et identifier les séries dans les partitions. Deux jours plus tard, Janusz avait créé 4 fonctions extrêmement utiles pour ce type d'analyse.
[ Dernière édition du message le 25/06/2018 à 22:46:25 ]

Frajean


deb76

Citation de : Frajean
Merci de tes informations deb76. Pour info, le lien que tu donnes vers ton fichier PDF ne fonctionne pas (erreur 404 fichier non trouvé).
Oups, désolé. A priori, ce nouveau lien est actif, en tout cas chez moi :
http://www.deb8076.eu/CAO/OPMOJazzChords.pdf
[ Dernière édition du message le 26/06/2018 à 23:54:25 ]
- < Liste des sujets
- Charte
- 1
- 2