Research
Encounter

PyPHS: An Open Source Python Library

During the Musical Research Days
December 4,
3:30 p.m.- 6 p.m.
Ircam

Réservation

PyPHS: An open source library to generate simulation code that guarantee the passivity of multiphysics audio systems

Keywords: multiphysics modeling, acoustics and audio, power balance simulation, generation of code in real-time (C++, FAUST, JUCE), real-time plugins, open source Phython library

Sound synthesis via physical modelling must simulate systems that produce sounds (musical instruments, voices, loud-speakers) or that transform sounds (e.g. electronic effect pedals), real or imaginary, that put into play mechanical, acoustic, electronic, magnetic, and thermic principles. The appeal is to be able to recuperate the natural timbre of these Multiphysics systems through digital resolution and the model equations associated with them. The first difficulty (D1), is guaranteeing the stability of these simulations. Secondly, it seems interesting to construct complete complex systems by connecting sub-systems (levels of an electronic circuit, organs of a musical instrument, etc). In this modular approach, another difficulty arises (D2): guaranteeing the stability of the ensemble. These physical systems share a powerful property: they are passive with the exception of the exciters (they do not create any energy).

Seminar and tutorial presented by Antoine Falaize and the team Méthodes Mathématiques et Numériques du Laboratoire des Sciences de l'Ingénieur pour l'Environnement (M2N, LaSIE, UMR CNRS 7356, Université de la Rochelle)

Organization: S3AM Team – Sound Systems & Signals: Audio/Acoustic, InstruMents (STMS - CNRS/IRCAM/UPMC) and the Research/Creation Interfaces team.  


Program

3:30 – 4:30: Seminar at IRCAM, salle Stravinsky
Free entry, available on streaming

4:45 – 6:00: Hands-on tutorial at IRCAM, Studio 5
25 places, free, reservation required
(participants must have their own computer and headphones)


Séminaire

Nous présentons dans ce travail PyPHS, une librairie python open-source dédiée à la génération de code de simulation à passivité garantie de systèmes multiphysiques, en particulier de systèmes audio. Nous utilisons dans ce travail le formalisme des systèmes hamiltoniens à ports (SHP) [1, 2], introduits en automatique et théorie des systèmes au début des années 1990, et pour lequel les recherches actuelles sont très actives [3, 4]. Dans ce formalisme, un système est décomposé en (i) un ensemble de composants rassemblés dans un dictionnaire qui stockent ou dissipent de l’énergie et (ii) un graph d’interconnexion conservative. Ceci garantit la passivité du système et la stabilité des simulations pour une méthode numérique spécialement développée [5], ce qui répond à la difficulté (D1). Finalement, la connexion de deux SHP est encore un SHP, ce qui répond à la difficulté (D2).

La donnée d’entrée de PyPHS est la description du graphe d'un système par une « netlist » (list de composants avec connections et paramètres). Ce graphe est automatiquement analysé pour produire formellement les équations allégro-différentielles qui régissent le système, dans le formalisme des SHP [6]. Les équations de mise à jour associées à la méthode numérique sont automatiquement produites, toujours formellement. Ceci permet d’optimiser le calcul, et de proposer plusieurs formats de sortie :
- Du code LaTeX qui décrit les équations du système (documentation automatique)
- Un objet Python et un un objet C++ pour la mise en oeuvre de la méthode numérique (code généré automatiquement)
- Du code FAUST et JUCE (pour la génération de plugins audio)

Présentation donnée en français. Support de présentation en anglais.


Tutoriel Hands on PyPHS

Ce tutoriel vise à introduire les objets et concepts basiques dans l’utilisation de PyPHS au travers d’applications audio :
- Oscillateurs linéaire et non-linéaire (Structure SHP, méthode numérique, simulation en Python)
- Filtre passif (netlist, graphe, paramètres de contrôle)
- Piano électromécanique (interconnexion)
- Ajout de composants au dictionnaire

Merci aux participants de :
A) Télécharger l'archive qui contient 5 dossiers :
A1. procédure d’installation
A2. quatre parties du tutoriel
B) IMPORTANT : installer la VERSION 0.2 PyPHS (cf. la procédure d’installation dans l’archive ou bien sur le site)



[1] Duindam, V., Macchelli, A., Stramigioli, S., & Bruyninckx, H. (Eds.). (2009). Modeling and control of complex physical systems: the port-Hamiltonian approach. Springer Science & Business Media.
[2] Falaize, A. (2016). Modélisation, simulation, génération de code et correction de systèmes multi-physiques audios: approche par réseau de composants et formulation Hamiltonienne à Ports (Doctoral dissertation, Université Pierre & Marie Curie-Paris 6).
[3] https://websites.isae-supaero.fr/infidhem/
[4] http://s3am.ircam.fr/
[5] Lopes, N., Hélie, T., & Falaize, A. (2015). Explicit second-order accurate method for the passive guaranteed simulation of port-Hamiltonian systems. IFAC-PapersOnLine, 48(13), 223-228.
[6Falaize, A., & Hélie, T. (2016). Passive guaranteed simulation of analog audio circuits: A port-Hamiltonian approach. Applied Sciences, 6(10), 273.

  • PyPHS  © Antoine Falaize
    PyPHS © Antoine Falaize
  • Antoine Falaize de l'équipe Méthodes Mathématiques et Numériques du Laboratoire des Sciences de l'Ingénieur pour l'Environnement (M2N, LaSIE, UMR CNRS 7356, Université de la Rochelle)
    Antoine Falaize de l'équipe Méthodes Mathématiques et Numériques du Laboratoire des Sciences de l'Ingénieur pour l'Environnement (M2N, LaSIE, UMR CNRS 7356, Université de la Rochelle)