Een inleiding tot scripting in Logic X

Een van de meer unieke en minder begrepen van de nieuwe functies binnen de Logica X upgrade van Logica 9 is de MIDI Scripter. Hoewel het wordt geleverd met een groot aantal kant en klare scripts, is een van de belangrijkste functies het schrijven van een eigen plug-in-programma van de grond af. 

In deze tutorial ga ik in op de kern van wat de Scripter precies is en ga ik door met het maken van een redelijk eenvoudige, maar toch gepersonaliseerde MIDI-delayplug-in.

The Scripter Explained

De Scripter is in feite een plug-in die draait op de JavaScript-codeertaal. Het is vóór het instrument ingevoegd om binnenkomende MIDI- en / of timingsgegevens te effectueren. Als zodanig is het in tegenstelling tot andere logische plug-ins, omdat het helemaal geen effect heeft op audio. 

Inkomende informatie gaat door de Scripter en pas nadat deze doorgegeven is, bereikt de informatie een ingebracht instrument dat vervolgens een audio-evenement creëert.

De MIDI-effecten zijn vooraf opgeslagen met een aantal bewerkbare opties, de Scripter-optie, en niet-bewerkbare voorinstellingen die geweldige startpunten zijn om de nieuwe mogelijkheden te verkennen. U krijgt toegang door op de bovenste insert in een instrumentkanaal te klikken - de MIDI FX-sleuf. 

 Het pop-upmenu bevat de niet-bewerkbare stock-MIDI-effecten samen met de bewerkbare scripter optie die op zijn beurt een groot aantal bewerkbare tutorial script presets bevat.

De interfaces alleen van de niet-bewerkbare programma's zijn voldoende bewijs om te begrijpen dat het behoorlijk geavanceerde programma's zijn, maar ze zijn allemaal haalbaar met de juiste hoeveelheid JavaScript-kennis binnen Scripter-minus de schone interface. 

 Een goed voorbeeld hiervan is de arpeggiator. De voorraad arpeggiator interface is erg schoon met een aantal opties, terwijl het selecteren van Eenvoudige Arpeggiator Pre-set van de Scripter zelf onthult een gedrongen interface met veel minder opties.

De zeer functionele Arpeggiator.De minder functionele Simple Arpeggiator-interface.Als u op de knop 'Script openen in editor' klikt, wordt het script weergegeven dat nodig is om de 'Simple Arpeggiator' te maken. Het is niet zo eenvoudig als de interface doet lijken. Dit is slechts een deel van de code.

Onder de motorkap

De scripter bestaat uit twee delen. Het bovenste gedeelte, de Code-editor, is waar ik de code zal schrijven terwijl het onderste gedeelte, Interactieve console, geeft mij informatie zoals fouten, uitvoerwaarden, over de code hierboven geschreven. 

De Code-editor, eenmaal geprogrammeerd, zal het zoeken naar inkomende MIDI- en / of timingsgegevens uit het transport, het op de een of andere manier manipuleren en het als tekst naar de Troosten of rechtstreeks naar de invoer van het geïnstantieerde instrument.

Linksboven bevindt zich het Voer het script uit knop die de geschreven code zal evalueren en nodig is om na elke code-update te raken om ze te integreren. 

Daarnaast, scripter is uitgerust met een automatische syntaxfoutcontrolefunctie die automatisch foutlijnen markeert, evenals een syntaxisaccentatiefunctie die relevante zoekwoorden onderscheidt met kleur.

Ermee beginnen

Diepgaand worden op een beginnersniveau van JavaScript valt echt buiten het bereik van een muziektutorial, dus ik zal ingaan op de vertraging die ik heb gebouwd / geschreven en een korte uitleg geven over wat er aan de hand is met de specifieke lijnen of blokken van code. 

 Voor meer informatie over JavaScript kan Envato natuurlijk worden gebruikt als een waardevol hulpmiddel. De Logic Effects Manual is ook boordevol Scripter-specifieke code en voorbeelden voor verder leren. 

De definitieve code. Ik heb de haakjes in de onderstaande uitleg weggelaten omwille van de indeling. Ze moeten wel aanwezig zijn om de code te laten werken.

De coderegel functie HandleMIDI (evenement) is de eerste regel in dit specifieke voorbeeld en is de regel die vertelt scripter om een ​​MIDI-gebeurtenis te zoeken en die informatie door te geven via de scripter code. 

 De volgende regel event.send (); vertelt het scripter om de MIDI-gebeurtenis door te geven scripter onaangeroerd. Dit zal als het droge signaal dienen, terwijl de eerste regel als nat / vertraging zal dienen.

if (event instanceof Note)

event.sendAfterMilliseconds (DELAYTIME);

Dit vertelt scripter dat een binnenkomende nootgebeurtenis moet worden verzonden na een gespecificeerde vertragingstijd in milliseconden. De vertragingstijd is een variabele waarde die wordt bepaald door een schuifregelaar die later wordt gebouwd. Deze waarde kan ook worden gewijzigd van vertragingstijd tot een specifieke numerieke waarde als een niet-variabele vertragingstijd gewenst is (bijvoorbeeld 100 in plaats van vertragingstijd voor een ingestelde vertraging van 100 ms).

var delayTime;  

var PluginParameters =  

name: 'Delay Time', type: 'lin', eenheid: 'ms',

minValue: 0, maxValue: 1200, defaultValue: 1, numberOfSteps: 120,

Dit codeblok creëert een fader voor de scripter interface en benoemt de uitvoer ervan vertragingstijdvoor interne routing. In dit geval krijgt de schuifregelaar een naam Vertragingstijd in de scripter interface, het zal een lineaire fader, lin zijn, en de uitvoereenheden zullen milliseconden zijn, ms. Er wordt minimaal 0 ms, maximaal 1200 uitgevoerd en heeft een resolutie van 120 stappen of 10 milliseconden.

functie Parameter Veranderd (param, waarde)

var timeInMilliseconds = waarde;

if (param == 0) delayTime = timeInMilliseconds;

Dit codeblok verbindt de schuifregelaar ('0' geeft aan dat het de eerste fader van de plug-in is) en wat het intern naar de initiële uitgangen uitvoert vertragingstijd waarde. 

Als de schuifregelaar wordt verplaatst, wordt in feite een tijd in milliseconden uitgevoerd en naar die tijd gestuurd sendAfterMilliseconds (DELAYTIME);.

De laatste vertragingsinterface

Hoe het klinkt

Ik heb de scripter met de voltooide code, Logic's B3-orgel, een MIDI-sequentie en een Slate Compressor, alleen om de dingen een beetje beter te laten klinken. 

Zoals je hieronder kunt horen, is deze vertraging veel anders dan bij een traditionele audiovertraging, omdat er tijdens de vertraging geen amplitude-verval of andere variaties optreden. Het verzendt eenvoudig hetzelfde MIDI-signaal tweemaal naar de waarde van de schuifregelaar. De enige reden waarom de vertragingen enigszins afwijken, is dat ze op verschillende tijdstippen naar de B3 worden gestuurd, die een intern modulatie-effect heeft.

In het onderstaande geluidsvoorbeeld, ben ik begonnen met een waarde van 750 milliseconden - dat klinkt het beste voor mij met dit specifieke voorbeeld - en vervolgens verschoven en terug naar beneden door alle mogelijke parameters, landing op nul om de droge lus te tonen.

Het kanaal

Outro

De scripter en de bovenstaande code opent een wereld van mogelijkheden, zowel voor codering als voor verdere verwerking. Je zou dit kunnen gebruiken voor een oud hi-hatpatroon om intuïtief en improvisationaly door een groot aantal patronen te schuiven, waarbij bepaalde hits worden geaccentueerd met automatisering. 

Men zou ook kunnen uitbreiden met de codering en voor een tooninstrument vertraagde akkoordprogressies of akkoorden kunnen maken waarbij de nootgebeurtenissen niet tegelijkertijd plaatsvinden en timing-onregelmatigheden hebben volgens schuifregelaarposities.

De scripter, naar mijn mening is waarschijnlijk Logica's antwoord op Max voor Leven en een roman als Leven kan al worden geïntegreerd in Logica sinds enkele jaren geleden. De mogelijkheid om eigen programma's te coderen in een zelfstandige DAW is uniek en ik hoop dat je hiervan kunt leren en geïnspireerd kunt zijn door.