SHCdyna

Introduction

SHCdyna est une application dynamique et interactive pour la performance musicale. Elle permet de compiler et d’exécuter du code en langage de programmation Faust dynamiquement, d’interagir avec des capteurs de mouvement, et de créer des interfaces utilisateurs tactiles personnalisées.


Caractéristiques

Compilation Dynamique

  • Description: Compiler et exécuter le code Faust en temps réel pour une performance musicale dynamique et interactive.
  • Avantages: Passer facilement d’une pièce Faust à une autre depuis l’application, améliorer la flexibilité et la créativité de la composition et la performance musicale. Language Faust: Faust

Création d’interface utilisateur : « touchUI »

  • Description: Créer des interfaces utilisateurs basées sur l’écran tactile multitouch pour une expérience musicale personnalisée, intuitive et expressive.

Format de déclaration « touchUI »

Dans votre fichier .dsp, déclarez l’interface [touchUI] nécessaire via métadata, qui sera positionnée sur l’écran. Les types d’interfaces [touchUI] incluent des types standards et des fonctions spéciales.

Format de métadata [touchUI]:

[touchUI:TabTitle Type X Y W H R G B A]
  • TabTitle: [touchUI] peut être mis dans plusieurs onglets ou le même onglet s’ils ont le même titre.

  • X Y W H R G B A:

    X Y : position en % d’un point du rectangle ( haut et gauche);

    W H : lageure hauteure en % du rectangle;

    R G B A : couleur et transparence du rectangle [0-255]

  • Types disponibles « touchUI »:

    • UI standard:
      • button: appuyé-> envoie 1 et revient autamotiquement à 0
      • checkbox: bascule de l’état 0 ou 1
      • hslider: déplacement horizontal dans l’UI, échelle de MIN à MAX
      • vslider: déplacement vertical dans l’UI, échelle de MIN à MAX
    • UI spéciale:
      • trigCounter: déclencheur genre « button », incrément d’un compteur en boucle
      • pad: envoie 1 si touché et les coordonnées X Y de la position (coordonnées X et Y envoyées aux paramètres déclarés avec extension de chemin _x / _y)
      • setRef: type « button » pour une initialisation de coordonées angulaires « setRef » ( matrice de rotation )
    • UI Cue system:
    • touchCueManager: par défaut liste de cue de 1 à 10, modifiable.
      • trigCue: type « button », pour avancer dans la « touchCueManager » liste.

      • nextCue: type « button », pour avancer le positionnement dans la liste « touchCueManager » déclenchén au prochain « trigCue ».

      • prevCue: type « button », pour reculer le positionnement dans la liste « touchCueManager » déclenché au prochain « trigCue ».

      • initCue: type « button », pour initialiser le positionnement dans la liste « touchCueManager » instantanément.

// Example UI standard
  on_off = checkbox("[1]OnOff [touchUI:DEMO checkbox 0 0 50 50 255 0 255 255]");
// Example UI speciale
  touch01X = hslider("Pad1_X",0,0,1,0.001);
  touch01Y = hslider("Pad1_Y",0,0,1,0.001);
  touchGate01 = checkbox("Pad1 [touchUI: DEMO pad 0 0 50 50 0 255 255 200]");
// Example cue system
  select_sample = nentry("cue [touchUI:DEMO trigCue 50 0 50 30 255 0 0 255] [touchCueManager: {1:'Your sample1';2:'Your sample2';3:'Your sample3'}]", 1, 1, 3, 1);
  trigNextCue = button("goNext [touchUI: DEMO nextCue 50 30 50 30 255 255 0 150]");
  trigPrevCue = button("goPrev [touchUI: DEMO prevCue 0 30 50 30 255 255 0 150]");
  trigInitCue = button("initCue [touchUI: DEMO initCue 50 60 50 30 255 255 255 150]");

Captation de mouvement : « motion.lib »

  • Description: Créer des interactions via les capteurs de mouvement intégrés dans iOS. Ces descripteurs peuvent être utilisés pour moduler divers paramètres audio en fonction des mouvements de l’utilisateur.

  • Types disponibles « motion.lib »: Inclinaisons, shock, vitesse de rotation, captations angulaires…

Format de déclaration « motion.lib »

Dans votre fichier .dsp, déclarez les contrôleurs de mouvement dont vous avez besoin, comme suit:

//Support de «motion.lib»
  titi = hslider("titi[motion:ixp]",0,0,1,0.01);
  toto = hslider("toto[motion:totalMotion]",0,0,1,0.01);
  tata = hslider("tata[motion:totalaccel]",0,0,1,0.01);

Configuration des paramètres de «motion.lib»

Double-cliquez sur « Setting » pour configurer les paramètres «motion.lib» depuis l’application.

Gestion de communication : « osc »

  • Description: Permettre une interaction et un contrôle à distance des paramètres audio depuis d’autres applications musicales ou vice versa. Le protocole OSC (Open Sound Control) est utilisé pour la communication réseau entre les applications musicales.

Format de déclaration « osc »

Dans votre fichier .dsp, déclarez l’interface [osc:] nécessaire dans les métadata: Site Faust OSC

//Support de « osc »
touchGate = checkbox("SHC_Pad [touchUI: DEMO pad 0 0 100 100 0 255 0 200] [osc:/touchgate]");

Cofiguration « osc »

Assurez-vous que votre appareil iOS est connecté au même réseau que votre ordinateur par example. Double-cliquez sur « Setting » pour configurer les paramètres OSC depuis l’application.

Affichage supplémentaire des paramètres : « showName »

  • Description: Affichage pour ajuster certains paramètres via l’interface utilisateur setting.

Format de déclaration « showName »

Dans votre fichier .dsp, déclarez l’interface [showName:] nécessaire dans les métadata:

//Support de « showName »
parameter = nentry("UIparamName [showName:paramName]", def, min, max, step);

Configuration « showName »

Double-cliquez sur « Setting » pour configurer les paramètres depuis l’application.


Installation

Téléchargez et installez l’application SHCdyna depuis l’App Store. App Strore: App Strore _ SHCdyna


Utilisation

Pièces intégrées

  1. Double-cliquez sur « Piece ».
  2. Double-cliquez sur la pièce SmartFaust pour la sélectionner et jouer.

Nota:

  • Vous ne pouvez pas supprimer les pièces intégrées.

Créer votre instrument

  1. Préparez votre “yourInstrument.dsp” programmé en language Faust.
  2. Compressez directement tous les fichiers sources (sons, bibliothèques) dans un fichier .zip
  3. Renommez ce fichier en « yourInstrument.FaustPiece »
  4. Utilisez AirDrop pour transférer le fichier.
  5. Double-cliquez sur « Load » pour rechercher et charger votre .FaustPiece depuis SHCdyna.
  6. Double-cliquez sur la pièce dans le menu pour jouer ou supprimer.

Nota:

  • Assurez-vous que votre .FaustPiece contient au moins un fichier « yourInstrument.dsp » portant le même nom que le fichier .zip
  • Pas d’espace dans le nom de votre .FaustPiece, les noms des pièces intégrées ne sont pas authorisés.
  • Soyez attentif à maintenir une cohérence dans les noms lorsque vous conservez d’anciens fichiers.
  • L’application vous notifiera des éventuels problèmes rencontrés lors de la vérification du fichier.

Demo

  • Example_1 sinusoide:

    • 2 Sinusoides: « freq » et « vol » controllé par SHCdyna motion et touchUI
    • video: DEMO
    • code FAUST complet: sinusoide.dsp
    •  Screenshot of Example_1
  • Example_2 SoloDemo_touchUI_Cue:

    • 3 sound generators(Sinusoide, Wind, Rain): controllé par SHCdyna Cue System et touchUI
    • code FAUST complet: SoloDemo_touchUI_Cue.dsp
    •  Screenshot of Example_2_1 Screenshot of Example_2_2

Plus d’info

L’application SHCdyna est la suite du projet Open Source ‘faust2smartphone’. ‘faust2smartphone’ permet de générer des applications iOS/Android autonomes pour Smart Hand Computer à partir d’un même code utilisé pour SHCdyna.

SHCdyna n’est actuellement pas disponible pour Android.

Site Github faust2smartphone: faust2smartphone

Contact: Pour toute question ou support technique, veuillez contacter l’équipe de développement LiSiLoG

Développeurs: Allen Weng & Christophe Lebreton