O introducere în scrierea în logică X

Una dintre cele mai puțin cunoscute și mai puțin înțelese dintre noile caracteristici din cadrul Logică X upgrade de la Logica 9 este MIDI Scripter. Deși vine cu o serie de scripturi gata făcute, una dintre caracteristicile sale cheie este abilitatea de a scrie propriul program de plugin de la zero. 

În acest tutorial voi intra în nuci și bolțuri de ceea ce exact Scripter este și continuați pentru a crea un plugin destul de bază, dar personalizat MIDI întârziere.

Scriptorul a fost explicat

Scripterul este în esență un plugin care rulează pe limbajul de codare JavaScript. Este introdus pre-instrument pentru a efectua intrări MIDI și / sau date de sincronizare. Ca atare, este diferit de orice alt plugin Logic, deoarece nu are efect asupra sunetului deloc. 

Informațiile de intrare trec prin Scripter și numai după ce trec, informația ajunge la un instrument introdus, care apoi creează un eveniment audio.

Efectele MIDI sunt pre-stocate cu un număr de editabile - opțiunea Scripter - și pre-setări care nu pot fi editate, care reprezintă puncte excelente pentru a explora noile capabilități. Este accesată făcând clic pe cel mai de sus inserție dintr-un canal de instrumente - slotul MIDI FX. 

 Meniul care apare contine efecte MIDI stocate in mod nemodificabil, impreuna cu cele editabile Scripter opțiune care, la rândul său, conține un număr bun de presetări script script editable.

Numai interfețele programelor care nu pot fi editate sunt suficiente dovezi pentru a înțelege că acestea sunt programe destul de sofisticate, totuși acestea sunt toate realizabile cu nivelul corect de cunoștințe JavaScript din cadrul Scripter-minus interfața curată. 

 Un bun exemplu în acest sens este Arpeggiator. Stocul Arpeggiator interfața este foarte curată cu un număr de opțiuni, în timp ce selectați Arpeggiator simplu pre-set de Scripter în sine relevă o interfață stocky cu opțiuni mult mai puține.

Arpeggiatorul extrem de funcțional.Interfața Simple Arpeggiator mai puțin funcțională.Făcând clic pe butonul "Deschidere script în editor" dezvăluie scriptul necesar pentru a crea "Arpeggiator simplu". Nu este la fel de simplu ca interfața pare să pară. Aceasta este doar o parte a codului.

Sub capotă

Scripter vine în două secțiuni. Partea superioară, Editor de coduri, este locul în care voi scrie codul în timp ce secțiunea de jos, Consola Interactivă, dă-mi informații cum ar fi erori, valori de ieșire, despre codul scris mai sus. 

Editor de coduri, o dată programată, va căuta datele de intrare MIDI și / sau de sincronizare, de la Transport, manipulează-o într-un fel și fie o va scoate ca text la Consolă sau direct la intrarea instrumentului instanțiat.

În partea stângă sus este Rulați scriptul buton care va evalua codul scris și este necesar să fie lovit după orice actualizare a codului pentru a fi integrat. 

În plus,, Scripter este echipat cu o funcție de verificare a erorilor automate de sintaxă, care va evidenția automat linii de eroare, precum și o funcție de evidențiere a sintaxei care distinge cuvintele cheie relevante cu culoarea.

Noțiuni de bază

Noțiuni de bază în profunzime la un nivel începător de JavaScript este cu adevărat dincolo de competența unui tutorial muzical, așa că voi sari în întârziere am construit / scris și să dea o scurtă explicație cu privire la ceea ce se întâmplă cu linii sau blocuri speciale de cod. 

 Pentru informații suplimentare despre JavaScript, Envato poate fi, desigur, folosit ca un instrument neprețuit. Manualul de efecte logice este, de asemenea, plin de cod specific Scripter și exemple pentru învățarea ulterioară. 

Codul final. Am omis parantezele din explicația de mai jos din motive de formatare. Ei trebuie să fie prezenți pentru ca codul să funcționeze.

Linia de cod funcție HandleMIDI (eveniment) este prima linie din acest exemplu și este linia care spune Scripter să caute un eveniment MIDI și să transmită aceste informații prin Scripter cod. 

 Următorul rând event.send (); spune Scripter pentru a trece prin evenimentul MIDI Scripter neatins. Acest lucru va servi ca semnal uscat în timp ce prima linie va servi ca ud / întârziere.

dacă (eveniment exemplu de Notă)

event.sendAfterMilliseconds (delayTime);

Acest lucru spune Scripter că un eveniment de notă de intrare trebuie trimis după un timp de întârziere specificat în milisecunde. timp de intarziere este o valoare variabilă determinată de un cursor care va fi construit ulterior. De asemenea, această valoare poate fi modificată timp de intarziere la o valoare numerică specifică dacă se dorește un timp de întârziere non-variabilă (de exemplu, 100 în loc de timp de intarziere pentru o întârziere setată de 100 ms).

var delayTime;  

var PluginParameters =  

name: 'Timp de întârziere', tip: 'lin', unitate: 'ms',

minValue: 0, maxValue: 1200, valoare implicită: 1, numărOfSteps: 120,

Acest bloc de cod creează un fader pentru Scripter și numește ieșirea timp de intarzierepentru rutare internă. În acest caz, glisorul va fi numit Timp de intarziere în Scripter interfață, va fi un fader liniar, lin, iar unitățile de ieșire vor fi milisecunde, ms. Va emite un minim de 0 ms, un maxim de 1200 și va avea o rezoluție de 120 de pași sau 10 milisecunde.

Funcție ParametruChanged (param, valoare)

var timeInMilliseconds = valoare;

dacă (param == 0) delayTime = timeInMilliseconds;

Acest bloc de cod conectează cursorul ("0" indică faptul că acesta este primul fader al pluginului) și ceea ce se transmite intern la inițial timp de intarziere valoare. 

În esență, dacă glisorul este mutat, se emite un timp în milisecunde și timpul este trimis la sendAfterMilliseconds (delayTime);.

Interfața finală de întârziere

Cum pare

Am înființat Scripter cu codul completat, organul B3 Logic, o secvență MIDI și un compresor de ardezie, doar pentru ca lucrurile să sune mai bine. 

După cum puteți auzi mai jos, această întârziere este mult mai diferită decât o întârziere audio tradițională prin faptul că nu există decalaj de amplitudine sau alte variații de-a lungul întârzierii. Este pur și simplu trimite același semnal MIDI de două ori la orice valoare cursor este selectat. Singurul motiv pentru care întârzierile sună puțin diferit sunt faptul că acestea sunt trimise la momente diferite la B3, care are un efect de modulație internă.

În exemplul de sunet de mai jos, am început cu o valoare de 750 de milisecunde, ceea ce mi se pare cel mai bine pentru exemplul respectiv și apoi a alunecat în sus și înapoi prin toți parametrii posibili, aterizând la zero pentru a arăta buclele uscate.

Canalul

outro

Scripter iar codul de mai sus deschide un domeniu de posibilități, atât pentru codificare, cât și pentru prelucrare ulterioară. S-ar putea folosi acest lucru în fața unui model de șah învechit, pentru a intuitiv și improvizational alunecă printr-un număr mare de modele necluse în care anumite hituri sunt accentuate cu automatizarea. 

S-ar putea extinde, de asemenea, codificarea și în fața unui instrument înclinat să creeze progresii sau acorduri întârziate ale coardei în cazul în care evenimentele note nu se întâmplă simultan și au neregularități de sincronizare în funcție de pozițiile cursorului.

Scripter, la gândirea mea, este probabil Logicărăspunsul lui Max pentru Trăi și una nouă ca Trăi pot fi deja integrate Logică de cativa ani trecut. Abilitatea de a codifica propriile programe în cadrul unui DAW independent este unul unic și sperăm că puteți învăța și fi inspirat de.