Se connecter
Se connecter

ou
Créer un compte

ou

Sujet Programmation midi : programmes et comparatifs

  • 32 réponses
  • 5 participants
  • 1 687 vues
  • 12 followers
Sujet de la discussion Programmation midi : programmes et comparatifs

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 :bravo: 

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 ]

2
Merci de la creation, deb76.
3
Flag !!! :bravo:
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 :-D

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

4
La mode est certainement à Python.
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

5

P de Frajean

Et sinon, le script de noiZe que tu donnes en exemple est écrit en Perl, pas en Perle :-D

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

6
Ou-là ! Merci aaB et deb76 pour vos commentaires. Je ne connaissais pas du tout ces outils, notamment Csound, mais je pense que je vais m'y intéresser très sérieusement dès que j'aurai un peu de temps.
7

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. 

8
Belle liste Deb76 !!
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.
9
Citation de 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 ? 

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.

10
Citation de noiZe :

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