HAL Id: hal-03116895
https://hal.archives-ouvertes.fr/hal-03116895
Submitted on 20 Jan 2021
HAL is a multi-disciplinary open access archive for the deposit and dissemination of sci- entific research documents, whether they are pub- lished or not. The documents may come from teaching and research institutions in France or abroad, or from public or private research centers.
L’archive ouverte pluridisciplinaire HAL, est destinée au dépôt et à la diffusion de documents scientifiques de niveau recherche, publiés ou non, émanant des établissements d’enseignement et de recherche français ou étrangers, des laboratoires publics ou privés.
Distributed under a Creative Commons Attribution| 4.0 International License
jMax : un environnement pour la réalisations d’applications musicales temps réel sur Linux
François Dechelle
To cite this version:
François Dechelle. jMax : un environnement pour la réalisations d’applications musicales temps réel sur Linux. Journées d’Informatique Musicale 2000, 2000, Bordeaux, France. 7 p. �hal-03116895�
musiales temps réel sur Linux
FrançoisDéhelle (dehelleiram.fr)
IRCAM,1plaeIgorStravinsky,75004Paris.
Résumé :jMaxestunenvironnement programmablepour laréalisation d'appli-
ations musiales et multimédia interatives. Ce logiiel est une nouvelle implé-
mentation de l'environnement Max déjà onnu sur laplateforme Maintosh. Un
brefhistorique desdiérentes versionsde Maxest donné.L'environnement jMax
est dérit, expliitant les hoix eetués pour obtenir une grande portabibilité.
Les spéiités de l'interfae graphique utilisateur de jMax sont présentées. La
versionLinuxdejMaxestdétaillée:intégrationdejMaxave lesdriversaudioet
MIDI Linux, omparaisonsde performanes entreles diérentes plateformes.
1 Introdution
jMax est une nouvelle implémentation de l'environnement Max qui a été largement
adoptépourlaréalisationd'appliations musialesinterativesmettant en÷uvrelesteh-
nologies informatiques. Remplaçant la "Station d'Informatique Musiale" de l'Iram par
une solution purement logiielle, jMaxfontionne surlesystème Linux.
2 Le langage Max
Le langage Max est souvent présenté omme un langage de programmation visuel :
l'interfae graphique, réutilisant la métaphoredu synthétiseur analogique modulaire, per-
met à l'utilisateur de onstruire une appliation sous forme de "path" par onnexion
de modules [10 , 19 ℄. Ces onnexions représentent des ommuniations de paramètres de
ontrle oud'éhantillons sonores, ave une sémantique d'envoide messages à lamanière
delangagesobjetsdutypeSmalltalk.Unmodulepeutêtreuneunitédetraitement(opéra-
teurarithmétique simpleou transformationomplexe du signal);il peutaussireprésenter
des données, par exemple une ligne à retard, ou enn être un module système d'entrées-
sortiesaudioouMIDI.Lesmodulespeuvent êtredesprimitives,appelées"objets",oubien
peuventeux-mêmesêtredespaths,donnantàunpathunestruturehiérarhique.Enn,
ertains modules "ontrleurs" ont un omportement graphique interatif et permettent
l'envoi de message depuis l'interfae graphique. La gure 1 donne un exemple de path
jMax.
Maxpeutêtrepris ommeun langagede programmationvisuel,etpeutàe titreêtre
rattahéàlafamilledeslangagesfontionnelsimpératifs[10 ℄,lesfontionsétantlesobjets
du path. Mais une autre aratéristique intéressante de Max, qui entre pour une part
essentielledanssonsuès,estqu'ilpeutaussiêtrevuparleprogrammeurdepathsomme
un générateur d'interfaes, à la manière des onstruteurs d'interfaes disponibles dans
beauoupd'environnementsgraphiques.Unpathesteneetladesriptiond'unalgorithme
de traitement,mais également une interfae graphiquede ontrle deet algorithme.
3 Un bref historique de Max
Max tire son origine de l'éditeur Pather érit par Miller Pukette en 1988 [16 ℄. Ce
logiiel, fontionnant surMaintosh etdédié au traitement de ontrle MIDI a été utilisé
pourlapremièrefois ensituationde onertpourlapièedePhilippeManoury"Pluton",
réalisée ave leproesseur4X [12 , 16 ,19℄.
Le Pather a ensuite été édé à la soiété amériaine Opode où, rérit par David
Ziarelli, il a donné un produit très populaire [11 ℄, introduisant de nombreuses amélio-
rationsdel'interfaegraphiqueutilisateurainsiqu'uneinterfaededéveloppementd'objets
externes qui permetd'étendre l'ensemble d'objets Maxprimitifs [21 ℄.
Le projet "Station d'Informatique Musiale" de l'Iram a démarré en 1989, visant à
remplaerleproesseur4X[13 ℄.Parmilesdéveloppementslogiielsdeeprojetguraitune
nouvelleversiondulogiiel"Pather",quiintégraitletraitementtempsréeldusignalaudio
dans le même paradigme de onnexion [17, 18 ℄. Cetteversion, distribuée ave lematériel
de la Station d'Informatique Musiale et onnue sous le nom de Max/ISPW, apportait
une nouveauté sous la forme d'une arhiteture à deux omposants logiiels, d'une part
l'interfae graphiqueutilisateurfontionnantsousl'environnement NeXTSTEP,etd'autre
partunexéutiftempsréelnomméeFTS [18 ℄,fontionnantsurlesartesadditionnelles de
lastation (artesbâtiesautour duproesseurInteli860).
Lanéessitéderemplaer lematérieldelaStationd'InformatiqueMusiale"aonduit
àladéisiondeproposerune solutionpurement logiielle,ettedéisionétant justiéepar
dans e but, l'interfae graphique utilisateur a été séparée du moteur d'exéution temps
réel,rendantainsiindépendantesleursévolutions.Cemoteurd'exéutionétaitunenouvelle
version de l'exéutif FTS de la Station d'Informatique Musiale et le nom de Max/FTS
a don été naturellement donné à ette version, distribuée pour stations Silion Graphis
[9, 6,7,3,4℄.
Le développement du logiiel PD [19 , 20 ℄ par Miller Pukette a débuté à la même
époque;herhantàremédieràertainesfaiblessesdeMaxdansledomainedelagestionde
struturesdedonnéesdynamiques,PDutilisaitdansebutlesprinipesdulogiielAnimal
[1℄développédansleadreduprojet"Stationd'InformatiqueMusiale"etintroduisaitune
interfae graphique portable baséesurl'environnement Tl/TK. En1997, David Ziarelli,
réutilisantle moduledetraitement audiode PD,distribuait lelogiielMSP("Max Signal
Proessing"), qui introduisait dans Max/Opode la synthèse et le traitement temps réel
du signal.
Le langage Java a donné la possibilité de réaliser des interfaes graphiques qui sont
réellement multi-plateformes. L'interfae graphique de Max/FTS a été réimplémentée en
Java etlenomde jMax(pour Java Max)a étédonné à ette nouvelle implémentation du
langage Max[14 , 3,4,5,8,2℄.
4 L'arhiteture de jMax
Comme indiqué préédemment, jMax réutilise l'arhiteture à deux omposants de
Max/FTS (et PD), arhiteture souvent dénommée "arhiteture lient/serveur" dans
d'autresdomainesdel'informatique.Cettearhiteturepermetdedéorrélerlesdéveloppe-
mentsdel'interfae graphiqueutilisateur (le"lient")etdumoteur d'exéutiontemps réel
(le"serveur"), orant donuneplusgrandegarantiedeportabilité.Ellepermetégalement
l'exéution des deux omposants sur des mahines diérentes; ei ore des possibilités
intéressantes pour la situation de onert où l'interfae graphique peut s'exéuter sur un
ordinateur portable et leserveur surune mahinemahinemulti-proesseurs plus lourde.
Cettearhiteture rendennpossible l'exéutiondu moteurtemps réelsansinterfae gra-
phique, par exempleà l'intérieurd'un environnement àplug-in du typeVST.
La ommuniation entre les deux omposants s'établit via un protoole indépendant
dumatérieletpeututiliseruneonnexionréseau(soketTCP/IP ouUDP)ommeouhe
de transport[9 , 6,7 ℄.
5 Le serveur de traitement temps réel FTS
L'arhitetureduserveurdetraitementtempsréelFTSestdéritedans[6 ,3,5℄.Elleest
organiséeautourdel'interprèteurdulangageMaxetdumoteurd'exéutiondesopérations
detraitement designal.Unséqueneurgèrel'exéutiondesopérationsdeontrle,délen-
hées par des opérations d'entrées-sorties (MIDI ou signal), par des ationsde l'interfae
utilisateur ou par desprimitives temporelles de typealarme.
Le noyau de FTS utilise plusieurs threads an de tirer parti des mahines multi-
proesseurs modernes, qui sont pour la plupart des arhitetures à mémoire partagée et
ahe ohérent etsupportent laprogrammationauniveau thread.L'interfae deprogram-
L'arhiteture multi-thread est utiliséeen partiulier pour l'implémentation des aès
temps réel aux hiers de sons : la leture et l'ériture des hiers de sons s'exéutent
dansdesthreadsséparés, permettantainsisurdesmahines multi-proesseurs dedisposer
de plusieurs anaux de leture de hiers de sons tout en onservant la puissane d'un
proesseur dédiéeau traitement de signaletdeontrle.
Une autre utilisation de ette arhiteture est la possibilité d'avoir plusieurs threads
d'exéution du ontrle, es threads ayant despriorités diérentes. Dans ette ongura-
tion, des tâhes de ontrle lourdes peuvent s'eetuer de manière asynhrone dans des
threadsàbasseprioritésansinterrompreletraitementdesignalalloué àuneprioritésupé-
rieure, éliminant ainsilereoursàune augmentation delataille dutampon audioetdon
de lalatene.
La portabilité de FTS est déterminée par la séparation strite du ode dépendant du
proesseur et du système opératif (aès à la mémoire, aès à l'unité ottante) et par
l'introdution d'un oneptde devies expliitéi-dessous.
5.1 Les devies FTS
LeproblèmeessentieldeportabilitéposéparleserveurFTS estleodeliéauxentrées-
sortiesaudioetMIDI,quidépendnonseulementdusystèmeopératifmaisaussidel'inter-
faelogiielled'aèsaumatérieletquiestdonintrinsèquementnonportable.L'approhe
hoisie,inspiréeduoneptdedevieUnix,aétéd'établiruneinterfaedeprogrammation
générique qui enapsule les fontions d'entrées-sorties de façon indépendante du système
etdu matériel.
Une devie FTS [6℄ est une abstration supportant un petit nombre d'opérations
d'entrées-sortiesetdeontrle.Cetteinterfaeontientlesopérationsdéniesparlemodèle
Unix :open, loseetiotrlpour lamodiationdynamiquedesparamètres.Les
opérationsd'entrées-sorties sont toutefoisétendues par rapportàe modèle, fournissant à
la fois des opérations sur des aratères et des opérations sur des veteurs, es dernières
étant introduites pour gérer lestamponsd'éhantillons.
Cetteapprohe restreint le ode devantêtre rérit pour un portage àun petit nombre
de lignesdeode,typiquement del'ordrede laentaine,les fontionsdevant êtreréimplé-
mentées étant par ailleursomplètement spéiées.
Lesdevies fournissent également à l'utilisateur une grandeexibilité dans laon-
guration de l'environnement d'exéutiond'unpath:un pathne ontient quedesobjets
d'entrées-sortiesopérantsurdesdevies logiquesquinesontonnuesqueparnom,l'asso-
iationentrelenometledispositifphysiqued'entrées-sortiesétant réaliséeàl'extérieurdu
path. La ommuniation ave un ontrleur externe peut être rendue transparente pour
le programmeur de path, qu'elle s'eetue sur une ligne série, un port parallèle ou une
onnexion réseaupar soket.
6 L'interfae utilisateur de jMax
L'interfae utilisateur de jMax ore essentiellement les mêmes fontionnalités que les
autres délinaisons de Max :un éditeur de path pour la onstrution et le ontrle des
paths etunensembled'éditeursspéialiséspourlesobjetsquireprésentent desstrutures
partie du hoix de Java omme langage d'implémentation de l'interfae graphique, mais
également dehoix d'arhiteture qui ont été évoqués.
jMax fournit par ailleurs une fontionnalité nouvelle sous la forme d'un langage de
sript intégrédansl'interfae graphique.
6.1 Langage de sript
L'introdutiondansjMaxd'unlangagedesriptviseàdonneràl'utilisateurunlangage
textuelquifournit desprimitivesn'ayantpasd'équivalene graphiquesimple,par exemple
des opérations répétitives telle que la réation de bans d'opérateurs. L'utilisation d'un
langage de sript permet aussi d'intégrer dans la même représentation le méanisme de
onguration [3,8℄.
Le langage de sript atuellement utilisé est Tl [15 ℄, langage de sript simple ayant
une implémentation Java. Etant donné toutefois la faible intégration de Tl et de Java
d'une part, le manque de support de la version Java de Tl d'autre part, il a été déidé
d'abandonner Tlau protde Sheme, dialete du langageLisp.
La gure2 présentedeux exemplesd'utilisation de sripts Tldans jMax. Le premier
exemple est un extrait du hier de onguration propre à haque utilisateur, hier qui
esthargéaulanementde lasessionjMax.Leseondexempleestune fontionTlsimple
qui réeun ban d'objets dumême type.
# Fihier de onfiguration
# Mahine sur laquelle tourne le serveur
set jmaxHost "astor.iram.fr"
# Cette mahine est une SGI Origin
set jmaxHostType origin
when start {
jmaxSetSampleRate 44100 # 44.1 kHz
jmaxSetAudioBuffer 1024 # tampon d'E/S
openDefaultAudioIn adatIn # entrée: ADAT
openDefaultAudioOut adatOut # sortie: ADAT
openDefaultMidi midi2 # MIDI: port 2
}
## Cette fontion Tl rée un ban
## séried'objets de la lasse <lass>
pro bank { lass x y n} {
set prevObj [ObjNew $lass $x $y℄
for {set i 1} {$i < $n} {inr i 1} {
# Create objet
set obj [ObjNew $lass $x $y℄
# Connet to previous
onnet $prevObj 0 $obj 0
# Move y position
inr y [expr [ObjGetHeight $obj℄ + 7℄
}
}
# Exemple d'utilisation:
bank "voie~" 10 10 64 # Ban de 64 voix
Fig.2 Exemplesdesripts :onguration, réationd'un band'opérateurs
7 Plateformes supportées et distribution
jMaxestsupporté atuellement surles plateformessuivantes :
stations SilionGraphis fontionnant sousle systèmeIRIX
PCou Maintosh fontionnant sous lesystèmeLinux
La version Linux de jMaxutilise pour les entrées-sorties son et MIDI les drivers OSS
ou ALSA,suivant lehoix de ongurationeetué par l'utilisateur.
Desportagessont enours surles systèmesMa OSX et Windows.
Pour laomparaison desperformanes desdiérentes plateformes sur lesquellesjMax
estsupporté, une mesureutile peutêtre lenombre maximald'éhantillons produitpar un
path en un temps xé. Cette fréquene d'éhantillonnage maximale théorique peut être
obtenue en faisant fontionner lesystème hors synhronisation ave une horloge d'éhan-
tillonnage.
Le tableau 1 présente ette omparaison de performanes, les paths hoisis étant un
des paths d'exemple du Spatialisateur et lepath de lapièe En ého, pièe de Philippe
Manourypourvoixetéletronique,rééesurlaStationd'InformatiqueMusiale.Onnotera
l'exellente performanedelaversionLinuxqui,surune mahinedetrès basoût, fournit
une performanesupérieureaux stationsSilion Graphis.
Plateforme Paths
CPU MHz OS Spatialisateur (8-4r) En Eho
R10000 225 IRIX 6.5 156 61
Pentium-III 600 Linux 256 73
G3 400 Linux-PPC 195 71
Tab.1 Comparatif deperformanes
7.2 Distribution
jMax est distribué sous la Liene Publique Générale GNU depuis juillet 1999. Les
souresdejMaxpeuventêtreaédéesdepuislesitejMax:http ://www.iram.fr/jmax.
Référenes
[1℄ M. DeCeo and E. Lindemann. Animal - graphi data denitionand manipulation
inareal time environment. Computer Musi Journal, 15(3):78100,1991.
[2℄ F. Déhelle. jMax : un environnement de programmation pour l'interativité et le
tempsréel.InInterfaeshomme-mahineetréationmusiale,pages8594.HERMES
Siene,1999.
[3℄ F. Déhelle, R.Borghesi, M. De Ceo, E. Maggi, B.Rovan,and N. Shnell. jMax:
a new JAVA-based editing and ontrol systemfor real-time musial appliations. In
Proeedings of the 1998 International Computer Musi Conferene, San Franiso,
1998.International Computer MusiAssoiation.
[4℄ F. Déhelle, R. Borghesi, M. De Ceo, E. Maggi, B. Rovan, and N. Shnell. Latest
evolutions of the FTS real-time engine : typing, soping, threading, ompiling. In
Proeedings of the 1998 International Computer Musi Conferene, San Franiso,
1998.International Computer MusiAssoiation.
[5℄ F.Déhelle,R.Borghesi,M.DeCeo,E.Maggi,B.Rovan,andN.Shnell. jMax:an
environment for real-time musialappliations. Computer Musi Journal, 23(3) :50
58,1999.
Proeedings of the 1995 International Computer Musi Conferene, San Franiso,
1995.International Computer MusiAssoiation.
[7℄ F.Déhelle,M. DeCeo, E.Maggi, and N.Shnell. NewDSP appliations onFTS.
InProeedings of the 1996International ComputerMusi Conferene, SanFraniso,
1996.International Computer MusiAssoiation.
[8℄ F. Déhelle, M. De Ceo, E. Maggi, and N. Shnell. jMaxreent developments. In
Proeedings of the 1999 International Computer Musi Conferene, San Franiso,
1999.International Computer MusiAssoiation.
[9℄ F.Déhelle,M.DeCeo,M.Pukette,andD.Ziarelli.TheIramreal-timeplatform:
Evolutionandperspetives. InProeedingsofthe 1994InternationalComputerMusi
Conferene, San Franiso, 1994.International Computer MusiAssoiation.
[10℄ P. Desain and H. Honing. Putting MAX in perspetive. Computer Musi Journal,
17(2), 1993.
[11℄ C. Dobrian. Getting Started with Max, Max Referene Manual,and Max Manual Ad-
dendum 3.5. OpodeSystems, In.,Menlo Park,CA, 1995.
[12℄ G.DiGiugnoandJ.Kott.Présentationdusystème4Xproesseurnumériquedesignal
entempsréel.Rapport32/81,IRCAM,1,plaeStravinsky,75004,Paris,Frane,1981.
[13℄ E.Lindemann, F.Déhelle,M. Starkier,andB.Smith. ThearhitetureoftheIram
musialworkstation. Computer Musi Journal, 15(3):4150, 1991.
[14℄ E. Maggiand F.Déhelle. The evolutions of thegraphiediting environment for the
Irammusialworkstation. InProeedingsof the 1996InternationalComputer Musi
Conferene, San Franiso, 1996.International Computer MusiAssoiation.
[15℄ J.Ousterhout. Tl and the Tk Toolkit. Addison-Wesley., 1994.
[16℄ M. Pukette. Thepather. InProeedings of the 1988 InternationalComputer Musi
Conferene, San Franiso, 1988.International Computer MusiAssoiation.
[17℄ M.Pukette. Combining event andsignalproessingintheMAX graphialprogram-
mingenvironment. Computer Musi Journal, 15(3) :6877, 1991.
[18℄ M.Pukette. FTS:Areal-timemonitorformultiproessormusisynthesis. Computer
Musi Journal, 15(3):5868,1991.
[19℄ M. Pukette. Pure Data. In Proeedings of the 1996 International Computer Musi
Conferene, San Franiso, 1996.International Computer MusiAssoiation.
[20℄ M.Pukette.Pure Data:anotherintegrated omputermusienvironment. InProee-
dingsof the Seond Interollege Computer Musi Conerts, Tahikawa,Japan, 1996.
[21℄ M.PuketteandD.Ziarelli. MAXDevelopmentPakageManual. Cyling'74,Menlo
Park,CA, 1991.