avr 252015
 

 

Le plugin MIDI scripter est un plugin de Logic Pro X qui permet de concevoir et de personnaliser ses propres modules, à l’aide du langage Javascript.

L'éditeur de script du plugin MIDI "Scripter"

L’éditeur de script du plugin MIDI « Scripter »

Son intérêt principal est très similaire à celui de l’éditeur d’environnement historique du Logic, avec notamment ses différents objets disponibles qui permettaient de créer un vrai circuit de traitement.

Objet "Transformer" de l'environnement Logic

Objet « Transformer » de l’environnement Logic

Les possibilités offertes par le module scripter sont très étendues, même si quelques fonctions lui manquent par rapport aux objets disponibles dans l’environnement : Sa sortie n’est par exemple pas librement assignable (il est notamment impossible de la router pour enregistrer ce qu’il génère sur une piste sans astuces particulieres).

Mais, au sein de Logic Pro X, il est le seul à permettre d’acceder directement aux commandes de volume et de pan standards d’un instrument virtuel, à savoir les control-change 7 et 10. En effet, dans Logic Pro, ces derniers sont d’habitude obligatoirement interceptés par le fader de la piste sur laquelle l’instrument se trouve… (C’est d’ailleurs un peu ce qui a rendu l’utilisation du mode multitimbral des instruments virtuels peu intuitive dans Logic, au niveau du mixage.)

 

L’idée est donc d’exploiter cettte possibilité propre au scripter de maniere utile !
Plusieurs projets m’étaient venus à l’esprit, dont par exemple un utilitaire qui permettrait de gérer plus simplement le mixage d’instruments virtuels multitimbraux. Mais j’ai trouvé quelque chose de plus « fun » :

Utiliser cet acces privilégié au controle de volume pour réaliser l’equivalent d’un effet de « triggered gate », sans interférer avec l’automation de niveau que propose Logic Pro.

Voilà donc le « MIDI gate trigger FX » que je propose :

 

le fichier à télécharger pour installer le MidiGateTriggerFX est une archive au format zip qui contient un fichier de preset de plugin à l’extension PST, ainsi qu’un fichier PDF rappelant les informations d’installation :

v1.0.150416
Titre : MidiGateTriggerFX v1.0.150416
Légende : Script "Midi Gate Trigger FX" pour le module scripter de Logic ProX
Nom du fichier : MidiGateTriggerFX1.0.150416.zip
Taille : 241 Ko

 

Le fichier à installer est un fichier de preset de plugin à l’extension .PST (c’est lui qui contient notamment les 500 lignes de programmation javascript nécessaires). Ce fichier est destiné au plugin MIDI «Scripter», uniquement disponible dans «Logic Pro X». Il doit être placé à un endroit précis pour être disponible dans le menu du plugin « Scripter »: (votre_dossier_utilisateur)/Musique/Audio Music Apps/Plug-In Settings/Scripter.

Voici la procédure à suivre pour l’installer au bon endroit à l’aide de Logic Pro X :

  1. Dans Logic, créer une piste d’instrument virtuel :
  2. Cliquer sur le slot « Effet MIDI » de l’instrument créé pour insérer le plugin scripter dans la chaine de traitement de la piste.
  3. Ensuite, à l’aide du menu principal du plug, cliquer sur l’item « Charger…. » et aller chercher le fichier « MidiGateTriggerFX 1.0.150416.pst » que vous avez préalablement obtenu en décompressant l’archive téléchargée. Apres avoir cliqué OK, celui-ci est chargé dans le scripter.
  4. Pour le conserver dans le menu pour une utilisation ultérieure, il faut le sauver à l’aide de l’item « Enregistrer » du menu principal du plug. Logic vous propose alors directement le bon emplacement, il n’y a plus qu’à cliquer « OK » pour confirmer…

 

Ceci est la premiere version du MidiGateTrigger FX. Il est possible d’améliorer ce dernier, notamment au niveau des possibilités proposées pour la hauteur des notes de controle, pour l’action du sustain, ainsi que la gestion polyphonique des notes off.

  • Il est évidemment possible de creer un equivalent purement audio de cet effet, à l’aide d’un noise gate, voire d’un compresseur commandé par « side-chain », comme à l’ancienne, mais le controle par la hauteur des notes n’est alors pas possible…
  • Il est également possible de créer une macro dans l’environnement qui pourrait fonctionner de maniere similaire, mais l’accès aux CC7 et 10 de l’instrument virtuel concerné n’est pas possible.
  • On peut également utiliser un arpégiator pour reproduire le même effet dans certains cas, mais alors la modification du rythme n’est pas accessible par une partition MIDI ou un jeu en direct.

  18 réponses sur “Logic Pro X – Utilisation avancée du Plugin MIDI Scripter : un MIDI gate trigger effect en javascript”

  1. Salut, je suis tombé par hasard sur ton site, notamment sur cette
    page car je cherchais de l’aide par rapport à un problème très précis
    sur logic pro,
    et je pensais que peut être tu pourrais m’aider ?

    En fait, dans ton article, tu dis:  »
    Les possibilités offertes par le module scripter sont très
    étendues, même si quelques fonctions lui manquent par rapport aux
    objets disponibles dans l’environnement : Sa sortie n’est par
    exemple pas librement assignable (il est notamment impossible de la
    router pour enregistrer ce qu’il génère sur une piste sans astuces
    particulieres).
     »

    Et notamment je suis intéressé par ce que tu appelles « astuces
    particulières »:
    est-ce que tu as des idées précises en tête de comment cela est
    réalisable ?
    (je trouve aussi que c’est une limitation et si j’arrivais à trouver
    la solution ça serait énorme).

    Merci de m’avoir lu, à plus.

    • Bonjour Talfi,

      Il existe une astuce simple mais un peu tordue. Elle permet d’enregistrer le flux MIDI que génère le scripteur ou n’importe quel autre MIDI FX sur une nouvelle piste, une fois que la piste source (celle qui fait jouer le MIDI FX) a été elle-même enregistrée: c’est à dire que cette astuce n’est pas adaptée à un enregistrement en live…

      Comment faire:
      Il faut avoir créé en amont au moins 1 port MIDI « IAC » grâce à l’application « Audio MIDI Setup » ou « Configuration Audio et MIDI » (disponible dans le dossier Utilitaires).
      Tu peux en créer autant que tu veux à l’aide de la fenêtre qui apparait à la suite d’un double-clic sur le Driver IAC de ta fenêtre « MIDI Studio ». N’oublie pas de mettre le driver en marche (coche en haut de la fenêtre de propriété du Driver IAC).

      Le driver IAC permet de transférer du MIDI inter-application. En gros, on va se servir de ce port virtuel pour faire sortir le flux du MIDI FX à l’extérieur du LPX et pouvoir l’enregistrer comme s’il arrivait par une interface MIDI externe.

      De retour dans LPX et une fois que ta piste source A est préparée (donc avec une région enregistrée ou programmée qui « joue » le MIDI FX), tu crées une nouvelle piste B dans laquelle tu place le même instrument virtuel.
      Tu remplace l’instrument virtuel de la piste A qui joue le MIDI FX par l’instrument virtuel particulier « instrument externe » dans lequel tu indique ton fameux port IAC en tant que destination MIDI. C’est comme ça que le signal va virtuellement sortir du LPX.

      Si tu te mets maintenant en enregistrement sur la nouvelle piste B, tu vas bien recevoir les infos générées par le MIDI FX de la piste A qui transmet sur le port IAC car LPX reçoit ce port virtuel comme venant d’une interface externe. (Tu devrais d’ailleurs repérer ce port dans l’objet « physical input » de l’environnement.)

      Attention par contre aux boucles MIDI (sorte de Larsen MIDI) qui sont faciles à générer avec ce système si on ne fait pas gaffe !

      Voilà… Tordu mais simple et efficace une fois qu’on a compris le principe

      Bonne musique,
      Xavier.

  2. Bonjour Xavier,
    Tout d’abord, bravo pour votre script qui est très réussi !
    Je voudrais me lancer ( modestement ) dans la programmation javascript mais uniquement dans le but de faire mes propres scripts dans Scripter de Logic Pro X.
    On m’a conseillé d’apprendre le langage HTML et CSS au préalable et je dois dire que ça me rebute un peu… Qu’en pensez-vous ? Auriez-vous une formation à me conseiller ( tutoriel vidéo ou autres ) ?
    Merci et encore bravo !

    • Bonjour Thierry,

      Merci pour ce compliment !
      Il n’est pas nécessaire d’apprendre le langage HTML et CSS pour programmer des scripts pour Logic Pro X. Pourtant, il n’est pas rare d’entendre cette recommandation de la part des programmeurs qui ne connaissent pas le module Scripter de Logic Pro.

      En effet, il se trouve que l’utilisation principale du langage javascript est liée à internet car c’est un langage que tout les navigateurs savent interpréter. Il permettait notamment de mettre un peu de mouvement sur les pages web avant le HTML5, sans faire appel à un autre langage bien connu et qui était, lui, « propriétaire » (le fameux Flash d’Adobe pour lequel il fallait installer une extension spécifique, le « player »).
      Un exemple de script javascript qui apporte du mouvement à une page est justement le carrousel que j’ai programmé en bas de ma page d’accueil. L’affichage de ce dernier est en mouvement constant, et il réagit aux mouvements de survol de la souris.

      Or effectivement, lorsqu’on parle de programmation sur internet, tout commence par le HTML et le CSS qui sont la base de l’affichage des pages…
      Par contre, sur Logic Pro, ce n’est pas du tout le cas, le javascript est juste une sorte de « calculette programmable », et il n’est même pas nécessaire d’en maitriser tout les aspects pour pouvoir l’utiliser.

      Les deux seuls langages à connaitre pour pouvoir programmer des scripts pour LPX sont donc le Javascript et le langage… …MIDI!
      Le javascript nécessite de connaitre un peu les principes de base de tout langage informatique comme les opérations logiques, les boucles et les tests conditionnels, les variables, les fonctions, le concept d’algorithme, l’importance de la syntaxe, et dans le cas du javascript la notion d’objet.
      Le MIDI lui est un simple dictionnaire des éléments que l’on va manipuler (comment sont codées les notes, les molette de contrôles, etc…).
      En effet, le javascript est ce qu’on appelle un langage Objet, et lorsqu’il est utilisé par LPX, les fameux évènements MIDI sont justement un des types d’objets en question !

      Les exemples disponibles dans les presets du Scripter de Logic sont de très bons points de départ, et l’analyse de scripts disponibles sur internet est très enrichissante également. Je n’ai pas répertorié de tutoriel, mais voici quelques pistes de lecture intéressantes (en anglais…):
      An Introduction to Scripting in Logic X
      https://manuals.info.apple.com/MANUALS/1000/MA1651/en_US/logic_pro_x_effects.pdf (pages 185 à 194)
      Feels So Good on LinnStrument with Logic Pro Scripter
      Messages MIDI (Wikipédia)
      Summary of MIDI Messages (MIDI Association)

      Bonne programmation et n’hésitez pas à me partager vos créations !

  3. Bonsoir Xavier,

    Merci pour votre réponse .
    Je vais donc essayer de creuser un peu Javascript. Vous m’avez rassuré concernant le HTML et le CSS pas forcément nécessaires à maitriser. Je pense que Scripter est l’avenir midi de Logic Pro X car l’environnement tel qu’il est commence à dater .
    Encore merci.
    Thierry

    • En réalité, l’environnement est surtout ancien par son esthétique, mais il reste très puissant (les objets « transformers » peuvent aller très loin) et certaines fonctions qu’il propose ne sont pas envisageables pour le scripter dont la position dans le flux est invariable… Pour ma part, j’espère pouvoir bénéficier des 2 encore longtemps !

      • Je suis d’accord avec vous. Un peu de relooking serait le bienvenu. ( Le mixer de l’environnement se comporte de façon étrange quelquefois, et l’entrée physique pourrait être améliorée ne serait-ce qu’au niveau de la taille des triangles pour tirer les cables )
        Les « transformers » sont mes objets préférés dans l’environnement.
        Je m’étais amusé avec eux à simuler un Theremin avec l’Es1 et un V-Meter :
        https://www.dropbox.com/s/jn6jxd2lm7uqf1k/Vmeter%20Transformer%20%3E%20ES1.MOV?dl=1

        • ;-)
          J’avais essayé le même genre de simulation, mais avec 2 axes grâce à une manette de Wii, mais le résultat n’était pas assez concluant pour que je le filme: la wiimote ne m’a pas semblé assez précise pour cette utilisation, ou alors c’était une certaine latence du système…

  4. Bonjour Xavier,

    J’avance à pas de tortue dans la programmation javascript mais je ne me décourage pas. Il est vrai que les “tutorial scripts” fournis sont très instructifs.
    Je voulais partager, suite au message de Talfi, une petite application qui permet d’éviter la manip un peu tordue comme vous le dites justement, utilisant le port IAC pour récupérer le midi.
    Je trouve cette application très pratique qui a de plus l’avantage d’être gratuite.

    musicalement,

    Thierry

    http://www.audiocr.com/midi-fx-freeze/

  5. Bonjour,

    Je suis tombé sur votre site en cherchant des informations sur la création de plug in pour LogicPro.

    Mon idée de base est : Peut on générer directement des compositions dans LogicPro à partir de plug in ?

    J’aimerai pouvoir créer automatiquement des pistes et ensuite définir l’instrument pour chacune et ensuite les notes.

    Je suis dévelopeur Javascript et je veux faire des musiques pour des jeux ou musique d’ambiance.

    De ce que j’ai lu, le Scripter ne s’applique qu’à une piste. Donc même avec cette limitation, comment serait il possible de générer directement toutes les notes ?

    Cordialement
    Arnaud

    • Bonjour Arnaud

      Il est possible d’accéder à 16 canaux midi différents sur une seule piste. Donc en y insérant un instrument multicanal, il est possible de lui faire jouer 16 sons différents simultanément. Cela répond-t-il à la question ?

      Cordialement
      Xavier.

      • Merci pour la réponse.

        Mon idée est de pouvoir déléguer la création d’un morceau directement à un programme. Il ferait le choix des instruments, donc en créant une piste par instrument et ensuite générer les notes pour chaque instrument.

        J’ai regardé depuis le dépôt de ma question la possibilité de créer un fichier MIDI, multi instrument et ensuite le lire dans Logic Pro X. Une piste à suivre car hors Logic Pro et donc possibilité de faire en Java au lieu de Javascript meme si j’aurai aimé avoir un Plug in Logic Pro qui soit suffisant.

        Cordialement
        Arnaud

        • Effectivement, de plus un fichier MIDI sera compatible avec de nombreux autres logiciels…
          Je suis curieux de voir votre programme, n’hésitez pas à m’informer de son avancement !

          Bonne semaine,
          Xavier.

  6. Bonjour,
    J’essaie d’utiliser le MidiGateTriggerFX qui m’a l’air génial, mais je n’y arrive pas, bien que j’aie fait ce qui est expliqué dans la vidéo et dans les explications ci-dessus.
    Avez-vous une idée de ce que qui est problématique ?
    A bientôt
    Denis

    • Bonjour denis,
      Merci de votre intérêt.
      Pour que je puisse comprendre votre problème, pouvez-vous être plus précis sur ce que vous n’arrivez pas à faire ? Est-ce l’installation du script, son insertion dans une piste, son réglage, etc…
      A bientôt,
      Xavier.

  7. Bonjour Xavier,

    merci pour votre réponse.
    Comme je l’ai écrit, j’ai tout fait comme vous l’expliquez : Installation du script, insertion dans une piste, etc comme sur votre vidéo et tout à l’air correct, mais il n’y a pas d’effets audibles. En ce qui concerne les réglages, je ne sais pas ce qu’il faut faire pour trouver les bons réglages.
    A bientôt.
    Denis