Istoria teoriei muzicale în lumea occidentală se pierde în antichitatea greacă și este asociată cu geometria și metafizica. Nu este deci surprinzător că acest domeniu de manifestare a creativității a beneficiat mult de pe urma computerelor și algoritmilor.
Sunetul e creat prin vibrația unei corzi, suprafețe etc., ceea ce cauzează schimbări în presiunea aerului și prin intermediul vibrației rezultate în ureche, ne determină să "auzim" sunetele. Instrumentele muzicale pur electronice (sintetizatoarele ca generatoare de sunet folosind oscilatoare electronice, bazate pe circuite analogice, digitale, mai apoi software, etc.) datează de la începutul secolului trecut. În acest articol mă voi referi strict la partea de software ca suport al creației și producției muzicale (generarea de sunete (sinteză) și producție/înregistrare audio), dincolo de produsele de masă cu care mulți suntem familiari - GarageBand sau ProTools. Dată fiind audiența Today Software Magazine, am considerat că ar fi interesant să acord atenție în special unor medii de programare și creație algoritmică.
Pentru mulți europeni, din Est în special, prima expunere la software-ul de creație muzicală a fost un program pentru Spectrum-ul anilor '80 numit Wham The Music Box, produs de Melbourne House în 1985.
Era un produs pentru end consumers: procesorul Z80 și lipsa co-procesorului muzical limitau sever capacitățile muzicale ale Spectrum-ului 48k. Cine a auzit sunetele produse de un procesor de 8 biți rulând la 2-4 MHz nu va uita prea curând calitatea lor.
Produse similare au existat și pentru Commodore-ul 64 contemporan, care beneficia de un procesor muzical specializat (faimosul MOS6581 - Sound Interface Device, oferind un sintetizator cu trei canale, ADSR per canal (detalii în Terminologie), de fapt un sintetizator cu capabilități apropiate de sisteme mult mai complexe și scumpe, de proveniență Moog sau Roland; dată fiind importanța chip-ului, merită să reamintim numele designerului, Bob Yannes. Arhitectura cu trei canale permitea re-crearea unui ansamblu melodic tradițional incluzând melodie/armonie/bass/percuție). De aceea, performanțele sonore ale platformei erau superioare celei ale micului computer creat de Sir Clive Sinclair. Spectrumul va primi procesorul muzical (AY-3-8912) ceva mai târziu.
Chiar și așa, programarea profesionistă a sunetelor (pentru jocuri în principal) nu era simplă pentru că toolseturile vremii nu erau suficient de performante. În condițiile limitate ale procesoarelor anilor '80 au existat creatori remarcabili precum Rob Hubbard, Martin Galway sau Ben Daglish, care erau mai mult programatori decât compozitori, scriind sountrackurile în Assembler 6510. Chiar și azi există o întreagă subcultură a creatorilor de "chiptunes", în paralel cu o cultură mai generală a pasionaților de computerele și tehnologia anilor '80.
Atari ST beneficia de un coprocesor sonor mai puțin performant decât SID, dar fiind dotat cu porturi MIDI, a devenit imediat popular in industria muzicală și a permis apariția primului produs software profesionist pentru computere personale de producție muzicală (DAW = Digital Audio Workstation): Cubase al companiei germane Steinberg (fondată în anii '80) și încă un produs de vârf in ziua de azi. Produsul inițial se numea Pro 24 (un sequencer MIDI, creat inițial pentru Commodore), iar succesorul Cubase a fost dezvoltat începând cu 1989. Cubase a introdus workflowul care se utilizează și la ora actuală în multe produse: timeline, tracks, instrumente și un aranjament similar cu o consolă de mixaj din studio. Instrumentele se puteau înregistra live din keyboard sau de la o claviatură externă și puteau fi editate cut/copy/paste.
Cubase a fost folosit de Liam Howlett de la Prodigy (care a trecut între timp pe Propellerhead Reason - un produs pentru laptop).
Fondată în anii '90, cu utilizatori incluzând Maroon 5 și Jean Michel Jarre, este una din companiile de vârf în industrie (dominată de firme germane sau suedeze). Produc și componente hardware cum ar fi Maschine (care controlează software-ul la care mă voi referi prin protocolul MIDI), dar aici mă voi opri doar asupra câtorva produse software.
Massive este un software synth, deci un generator de sunet, nu foarte diferit conceptual de vechiul SID, deși principiile de sintetizare sunt diferite (wavetable comparat cu subtractiv, pentru discuție). După cum se vede în imagine, oferă trei oscilatoare + un generator de noise, filtre și efecte sonore. O claviatură electronică sau alt sistem de control poate fi atașată la desktop sau laptop și va permite controlul diverselor knoburi prin intermediul protocolului MIDI.
Aplicația oferă un toolkit pentru crearea de synthuri folosind componente pre-existente care oferă samplere, drum machines, filtre, efecte etc. Deci, e posibil să se re-creeze instrumente existente sau unele complet noi fără corespondent fizic.
Un studio integrat re-creează funcționalitatea unui studio. Workflowul va fi în linii mari acesta:
Un sintetizator digital (VST) sau mai multe sunt adăugate la canvas pentru generarea de sunete, care sunt în general create prin combinarea diverselor surse (oscilatoare, de obicei trei canale/sintetizator + noise, fiecare cu ADSR-ul propriu).
Sau, sunetele provin de la un sampler (înregistrare a unui instrument real).
Acestor sunete li se aplică efecte (volum, delay, echo, low pass, hi pass - la nivelul fiecărui oscilator și global).
În imagine, două sintetizatoare sunt disponibile pentru percuție și claviaturi. În partea dreapta sus, sunt înregistrate "notele" iar în stânga jos sunt parametrii de control ADSR (vezi Terminologie), filtrele etc. disponibile pentru synthul respectiv.
Pentru o paradigmă de creație sonor-muzicală diferită trebuie să ne îndreptăm spre mediul academic. Începuturile muzicii algoritmice datează din anii '50 - cu toate că ideea unui proces formal de compoziție muzicală provine de la Pitagora, aici ne vom limita la software- când Max Matthews (printre alții) de la Bell Labs a dezvoltat familia de limbaje specifice pe domeniu muzical MUSIC-N. MUSIC genera sunet prin sinteza audio digitală a undelor sonore. Limbajele pe care le vom discuta mai jos își au aici originea.
Miller Puckette este profesor la University of California, San Diego, un muzician din lumea academică, care se consideră ca fiind continuatorul lui Stockhausen sau Xenakis, compozitori europeni (ultimul, la rândul lui folosind programarea pentru a crea muzică, dar doar pentru a ajuta procesul de compoziție, fără a crea sunete prin intermediul computerului) care, la rândul lor, se considerau a fi continuatorii tradiției clasice europene.
Max - numit în onoarea lui Max Matthews, a fost inițial dezvoltat pentru procesorul Motorola 68000, ulterior îmbunătățit cu MSP și cu versiunea open source Pure Data. Acesta a fost dezvoltat de Puckette în anii '80, un sistem vizual de programare, cu o influență în software depășind domeniul muzical (iterația curentă a paradigmei fiind RPA și low code tools), a cărui intenție era de a permite artiștilor nefamiliarizați cu programarea în C să creeze sunete + muzică. Max/MSP este la ora actuală produs de compania Cycling '74, la rândul ei deținută de Ableton, una din firmele de renume în industrie.
Max/MSP și PD oferă librării de obiecte cu diverse funcționalități (oscilatoare/generatoare de semnal, signal input, audio output, scriptare procedurală etc.) care sunt conectate în IDE prin intermediul unor "cabluri" (patchcords) și care sunt controlate prin diferite UI widgets (care pot fi folosite pentru a modifica diverși parametri ai obiectelor). Max/MSP și PD oferă, de asemenea, obiecte care prezintă capabilități de sinteză vizuală similar cu TouchDesigner, dar acesta este subiectul unui alt articol.
Produse din familia Max/MSP au fost folosite de artiști precum Autechre, Monolake și Radiohead.
În paradigma pură text-based, SuperCollider este un limbaj specializat pe domeniu și o platformă de sinteză audio și compoziție algoritmică creată de James McCartney, care printre altele a fost unul dintre arhitecții CoreAudio la Apple (set de frameworks care formează infrastructura audio digitală din iOS și OS X).
Sistemul este folosit într-o serie largă de contexte, de la cercetare în acustică, în educație, și până la livecoding pentru algoraves. Am încercat să folosesc livecoding într-o sesiune experiment and learn la una din firmele de software la care am lucrat, cu rezultate interesante.
SuperCollider are următoarele componente
server audio (scsynth);
limbaj de programare specializat (sclang: limbaj dinamic, interpretat, funcțional, inspirat de SmallTalk/LISP);
Clientul comunică cu serverul print UDP sau TCP folosind protocolul de aplicație OSC, o alternativă la MIDI, descris pe scurt în final. Programarea în sclang presupune inițializarea unui server și trimiterea de mesaje în mod imediat (similar cu REPL) sau prin programe mai complexe cu suport OOP.
Exemplu de programare în sclang - cunoscătorii vor recunoaște similaritățile sintactice cu limbaje din familia LISP. În mod REPL:
// run this code to get ready
Server.default= s = Server.local;
s.boot;
// selectați fragmentul de mai sus in IDE, apoi Cmd+Enter pentru execuție
// la fel cu fiecare fragment de mai jos (notă RP)
// run this line
a = Pbind.new.play(quant:1.0);
a.stop; // Or stop it with cmd+.;
// now run this line
Pbind(\freq, 440).play(quant:1.0);
// run this, go back and run some of the others at the same time
(
Pbind(
\dur,0.125,
\midinote, Pseq([0, 4, 0, 7, 4, 0, 0] + 60,inf),
\amp, Prand([0.125, 0.2, 0.25],inf)
).play(quant:1.0)
)
// ( ) mai sus definește un code block (RP)
SuperCollider permite ca sunetele generate să fie copiate într-un fișier pentru prelucrare ulterioară în Audacity sau editoare similare.
James McCartney a scris un articol academic (menționat la final) în care discută necesitatea unui limbaj specializat pe domeniu, generare de sunete/muzică în cazul de față, care ar putea fi de interes și pentru cei interesați de teoria limbajelor în general, nu neapărat doar de muzică, și în care analizează abstracțiile folosite și expresivitatea oferită de diversele limbaje inclusiv cele discutate aici.
Una dintre problemele sistemului e technical debt: fiind dezvoltat inițial în epoca single processor, nu folosește avantajele oferite de arhitecturile moderne - GPU, multi processor etc. Există alternative moderne (Nyquist, Overtone, Sonic Pi, TidalCycles), doar că, deocamdată, nu au aceeași popularitate.
Ca notă, compoziția algoritmică folosind AI e un subiect curent de cercetare, cu toate complexitățile care decurg când domenii atât de diferite precum AI și artele se intersectează.
Unele sintetizatoare (mă refer la cele "fizice") sunt construite din componente modulare; fiecare componentă hardware are o funcție (generare semnal, filtrare, mixare etc.) iar componentele sunt conectate prin cabluri prin care se transmite semnalul. Comparativ cu sintetizatoarele platformă fixă, cu un număr limitat de oscilatoare, surse de modulare, filtre, sintetizatoarele modulare permit obținerea unor sunete unice.
Unele modele sunt deosebit de complexe și necesită cunoștințe serioase de teoria sunetelor pentru a fi folosite; un model simplu dar ilustrativ contemporan este Korg Volca Modular. Cei pe care cablurile îi intimidează și care doresc să experimenteze cu fizica pe care se bazează generarea de sunet pot încerca cu un simulator software precum open-source-ul VCV Rack.
În imagine, semnalul MIDI e generat de la tastatură (un nivel de "voltaj" corespunzând unei note) și transmis de modulul MIDI-CV pentru procesare ulterioară în modulele generatoare de frecvențe, mixat, vizualizat în modulul "osciloscop" și redat sonor de modulul audio.
Module adiționale pot fi scrise în C++ [^8]. Este un instrument serios, respectat în industrie care doar în câțiva ani de existență a dobândit o comunitate activă în spațiul maker.
Sunetul, ca subset al domeniului DSP (digital signal processing), se pretează foarte bine la prelucrarea digitală. Recent, inclusiv creativitatea muzicală a devenit un domeniu în care AI-ul are ceva de spus; dar aceasta e o discuție separată. Până atunci, sper că am oferit suficiente informații fanilor Kraftwerk (sau ai lui Brian Eno, Depeche Mode, Nine Inch Nails, Alva Noto…lista e lungă) din comunitatea software, care vor să își încerce creativitatea și în acest domeniu.
Spațiul limitat nu ne permite să discutăm toate aspectele tehnice ale producției muzicale în detaliu. Aici sunt doar câteva concepte importante.
ADSR - unul din aspectele fundamentale ale sunetului, folosit pe larg de sintetizatoarele software or hardware. Descrie evoluția undei sonore în timp (Attack Decay Sustain Release). Profilul ADSR al sunetului curent determină cum va reacționa o orgă electronică, de exemplu, când este apăsată o clapă, și forma semnalului generat de sintetizator (sinusoidal, "sawtooth" etc., determină genul de sunet produs, de exemplu percuție sau bass).
Drum machine - de obicei, un device care combină sunete pre-înregistrate de percuție (dar nu numai) cu un sampler pentru înregistrarea unei partituri de percuție. De notat că sampler, sequencer, drum machine etc. sunt adesea combinate într-un singur device eventual complementat de DAW pe partea software. Un drum machine poate apoi reproduce o secvență pre-înregistrată. Roland TR-808 și 909 din anii '80 sunt considerate legendare și au avut o influență remarcabilă în industria muzicală. Un drum machine modern care se inspiră din tradiție este Volca Beats de la Korg:
MIDI - Musical Instrument Digital Interface este un protocol de comunicații între sisteme muzicale care permite transferul "evenimentelor" (apăsarea unei clape, de exemplu) de la un sistem la altul prin mesaje transportate prin network, fișiere etc. O compoziție muzicală poate fi considerată, așadar, o serie de evenimente. De asemenea, permite sincronizarea diferitelor sisteme.
Mai multe detalii aici, inclusiv decizia Atari de a include porturi MIDI în Atari ST (procesorul sound nu era atât de eficient ca SID-ul Commodore).
Un tutorial pentru programatori cu formatele mesajelor
OSC - dezvoltat începând cu 1997 pentru a aborda unele din deficiențele protocolului MIDI (serial, încet, valori integer în anumite cazuri), permite comunicarea între sisteme diferite sau software-uri diferite pe același host.
PureData, Csound, Max/MSP, SuperCollider, Reaktor discutate mai sus oferă suport pentru OSC.
Sampler - device (sau component software) care înregistrează un sunet care poate fi apoi redat la altă frecvență, mapată de exemplu pe o notă transmisă prin MIDI. Filtrele, oscilatoarele și restul componentelor pot modifica și mai mult sample-ul inițial.
Sequencer - device care înregistrează o secvență de evenimente (execuția unei partituri de pian, de exemplu) care poate fi reprodusă ulterior de un sampler sau drum machine.
VST - Virtual Studio Technology, o specificație și un SDK dezvoltate de Steinberg cu începere din 1996, pentru plug-in-uri care oferă instrumente și efecte adiționale care pot fi folosite într-un host DAW, cum ar fi Ableton Live, Max MSP, Native Instruments Maschine, Steinberg Cubase. Exemple de instrumente.
Nu sunt un profesionist în domeniu, însă sunt pasionat de tehnologia muzicală și am colecționat de-a lungul timpului câteva sintetizatoare și drum machines, iar mai nou, software-ul aferent (mult mai ușor de depozitat!). Mai jos sunt câteva resurse pentru cei care doresc să continue cu subiectul.
Mai multe informații:
Despre limbaje de programare și muzică:
James McCartney. (2002) Rethinking the computer music language: SuperCollider. Computer Music Journal, 26(4): 61-8,
Alternative:
de Kiss Tibor
de Ovidiu Mățan