En introduksjon til skripting i logikk X

En av de mer unike og mindre forstått av de nye funksjonene i Logikk X oppgradere fra Logikk 9 er MIDI Scripter. Selv om det kommer med en rekke ferdige skript, er en av de viktigste funksjonene muligheten til å skrive sitt eget pluginprogram fra grunnen av. 

I denne opplæringen kommer jeg inn i mutter og bolter på nøyaktig hva Scripter er og fortsetter å lage en ganske grunnleggende, men personlig tilpasset MIDI-forsinkelses-plugin.

Skriptet forklart

Scripter er i utgangspunktet et plugin som kjører på JavaScript kodingsspråket. Det er satt inn pre-instrument for å påvirke innkommende MIDI- og / eller tidsdata. Som sådan er det ulikt noe annet Logisk plugin, da det ikke har noen effekt på lyd i det hele tatt. 

Innkommende informasjon går gjennom Scripter, og først etter å ha passert det, kommer informasjonen til et innstilt instrument som deretter skaper en lydhendelse.

MIDI-effektene kommer på lager med et antall redigerbare - Scripter-alternativet og ikke-redigerbare forhåndsinnstillinger som er gode å hoppe av poeng for å utforske de nye evnene. Den er tilgjengelig ved å klikke på den øverste innsatsen i en instrumentkanal - MIDI FX-sporet. 

 Menyen som dukker opp inneholder de ikke-redigerbare aksjens MIDI-effekter sammen med redigerbare scripter alternativ som i sin tur inneholder et godt antall redigerbare opplæringsskriptforhåndsinnstillinger.

Grensesnittene alene i de ikke-redigerbare programmene er nok bevis for å forstå at de er ganske sofistikerte programmer, men de er alle oppnåelige med riktig mengde JavaScript-kunnskap innen Scripter-minus det rene grensesnittet. 

 Et godt eksempel på dette er arpeggiator. Aksjen arpeggiator grensesnittet er veldig rent med en rekke alternativer, mens du velger Enkel Arpeggiator forhåndsinnstilt av Scripter selv avslører et slitent grensesnitt med langt færre alternativer.

Den svært funksjonelle Arpeggiator.Det mindre funksjonelle Simple Arpeggiator-grensesnittet.Ved å klikke på 'Open Script in Editor' -knappen avsløres skriptet som er nødvendig for å lage 'Simple Arpeggiator'. Det er ikke helt så enkelt som grensesnittet gjør det til å virke. Dette er bare en del av koden.

Under panseret

De scripter kommer i to seksjoner. Den øverste delen, den Kodeditor, er hvor jeg skal skrive koden mens den nederste delen er, Interaktiv konsoll, gir meg informasjon som feil, utdata verdier, om koden skrevet ovenfor. 

De Kodeditor, når den er programmert, vil se etter innkommende MIDI- og / eller tidsdata, fra Transport, manipulere den på en eller annen måte og enten sende den som tekst til Console eller direkte til det opprettede instrumentets inngang.

Øverst til venstre er Kjør skript knappen som vil evaluere den skrevne koden og er nødvendig for å treffe etter noen kodeoppdateringer for at de skal bli integrert. 

Dess, scripter er utstyrt med en automatisk syntaksfeilkontrollfunksjon som automatisk vil markere feillinjer, samt en syntaksuthevingsfunksjon som skiller relevante søkeord med farge.

Starter

Å komme i dybden på et nybegynnernivå av JavaScript er virkelig utenfor handlingsplanen for en musikkopplæring, så jeg hopper inn i forsinkelsen jeg bygget / skrev og gir en kort forklaring på hva som skjer med bestemte linjer eller blokker av kode. 

 For ytterligere informasjon om JavaScript, kan Envato-selvfølgelig brukes som et uvurderlig verktøy. Logic Effects Manual er også fullpakket med Scripter-spesifikk kode og eksempler for videre læring. 

Den endelige koden. Jeg har utelatt brakettene i den følgende forklaringen for formateringens skyld. De trenger å være tilstede for at koden skal fungere.

Kodelinjen funksjon HandleMIDI (hendelse) er den første linjen i dette spesielle eksempelet og er linjen som forteller scripter å søke etter en MIDI-hendelse og sende den informasjonen gjennom scripter kode. 

 Neste linje event.send (); forteller scripter å passere MIDI-arrangementet gjennom scripter urørt. Dette vil fungere som det tørre signalet mens første linjen vil fungere som våt / forsinkelse.

hvis (forekomst forekomst av notat)

event.sendAfterMilliseconds (delayTime);

Dette forteller scripter at en innkommende notathendelse må sendes etter en angitt forsinkelsestid i millisekunder. De forsinkelsestid er en variabel verdi bestemt av en skyveknapp som vil bli bygget senere. Denne verdien kan også endres fra forsinkelsestid til en bestemt numerisk verdi dersom en ikke-variabel forsinkelsestid er ønsket (for eksempel 100 i stedet for forsinkelsestid for et sett på 100 ms forsinkelse).

var delayTime;  

var PluginParameters =  

navn: 'Delay Time', type: 'lin', enhet: 'ms',

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

Denne koden av kode skaper en fader for scripter grensesnitt og navngir sin utgang forsinkelsestidfor intern ruting. I dette tilfellet vil glidebryteren bli navngitt Forsinkelsestid i scripter grensesnitt, vil det være en lineær fader, lin, og utgangsenhetene vil være millisekunder, ms. Den vil gi minst 0 ms, maksimalt 1200 og vil ha en oppløsning på 120 trinn eller 10 millisekunder.

funksjon ParameterChanged (param, verdi)

var timeInMilliseconds = verdi;

hvis (param == 0) delayTime = timeInMilliseconds;

Denne koden kobler til glidebryteren ('0' indikerer at den er den første faderen til pluginet) og hva den sender ut internt til den første forsinkelsestid verdi. 

I hovedsak, hvis glidebryteren er flyttet, går det en gang i millisekunder, og tiden sendes til sendAfterMilliseconds (delayTime);.

Det endelige forsinkelsesgrensesnittet

Hvordan det høres ut

Jeg har satt opp scripter med den fullførte koden, Logic's B3 Organ, en MIDI-sekvens og en skifer kompressor, bare for å få ting til å høres litt bedre ut. 

Som du kan høre nedenfor, er denne forsinkelsen mye annerledes enn en tradisjonell lydforsinkelse, fordi det ikke er noe amplitudeforfall eller andre varianter gjennom forsinkelsen. Det er rett og slett å sende det samme MIDI-signalet to ganger, uansett skyveverdien er valgt. Den eneste grunnen til at forsinkelsene lyder litt annerledes er at de sendes på forskjellige tidspunkter til B3, som har en intern modulasjonseffekt.

I det nedenstående lydeksemplet har jeg startet med en 750 millisekond verdi - det høres best ut for meg med dette spesielle eksempelet - og deretter glides opp og tilbake ned gjennom alle mulige parametere, lander på null for å vise tørrløkken.

Kanalen

outro

De scripter og ovennevnte kode åpner opp for muligheter både for koding og viderebehandling. Man kan bruke dette foran et foreldet hi-hat mønster til intuitivt og improvisationaly skyve gjennom et stort antall unthought av mønstre der visse treff er accentuert med automatisering. 

Man kan også utvide på kodingen og foran et toneinstrument opprette forsinkede akkordprogresjoner eller akkorder der notathendelsene ikke skjer samtidig og har timing uregelmessigheter i henhold til skyveposisjoner.

De scripter, til min tenkning, er sannsynlig Logikksvar på Max til Bo og en roman en som Bo kan allerede bli integrert i Logikk siden noen år tidligere. Evnen til å kode egne programmer innenfor en frittstående DAW er en unik en og en jeg håper du kan lære av og bli inspirert av.