Tema proiectului meu este un sampler. Un sampler este un instrument muzical, asemanator cu un sintetizator, cu diferenta ca nu genereaza sunete, ci reproduce sunete inregistrate (sampleuri) incarcate (in format wav).
Sample-urile au castigat popularitate odata cu nasterea hip hopului, in anii '70. DJ remixau live bucati din melodii rock, blues sau jazz de pe viniluri, ca fundal muzical pentru MC (cei care cantau partea de rap). In timp, mai ales dupa ce folosirea de sampleuri a ajuns comuna si in alte stiluri muzical (cum ar fi muzica electronica), au fost introduse instrumente speciale, care sa faciliteze folosirea live sau inregistrarea de sampleuri. Un astfel de instrument e denumit sampler. Una dintre cele mai cunoscute producatoare de samplere este Akai, cu linia sa de instrumente MPC, introduse in 1988.
Pasiunea mea pentru astfel de instrumente porneste de la folosirea lor din ce in ce mai deasa in toate genurile muzicale (nu doar hip hop, dar si electro sau chiar rock), dar mai ales datorita artistilor care reusesc sa creeze melodii complexe si “pline”, desi au in fata doar o cutie cu butoane.
Totusi, pe masura capacitatilor impresionante, samplerurile sunt niste instrumente scumpe. De exemplu, unul dintre cele mai populare, Akai MPC500, costa in jura de 550$. Stiind ca nu voi ajunge sa investesc atata in cariera mea muzicala prea curand, am decis ca proiectul de la PM este momentul perfect pentru a folosi un sampler, pe care am decis sa il denumesc MONA (nu este un acronim).
Este evident ca un astfel de proiect nu se va putea apropia de performantele unui instrument profesionist, insa va putea imita cateva dintre functiile de baza, fiind potrivit pentru un amator care vrea sa vada cam ce inseamna sa folosesti sampleuri pentru a creea noi melodii.
Schema bloc a modulelor principale:
Sunetele vor fi alese cu ajutorul a 6 butoane, conectate pe 6 pini de pe portul D. Reproducerea sunetelor se va face prin boxe/casti, placuta avand iesirea printr-un jack socket RCA.
Pentru ca microcontrollerul are un disk capacity infim, pentru a retine sampleurile (care pot fi parti destul de extinse din melodii, deci pot avea chiar si cativa MB) este nevoie de folosirea unui card SD, care va fi interfatat cu ATMega16.
In mod ideal, samplerului ii va fi adaugata prin software capacitatea de a reproduce mai multe sampleuri simultan si de a inregistra loopuri (bucle de sampleuri).
Schema hardware completa a placutei:
Pentru ca schema completa este foarte mare si cuprinde multe module din etapa 1, voi detalia schemele celor trei module implementate pentru proiect, alaturi de descrierea lor si de componentele folosite.
Pentru interfatarea cu card SD, am folosit schema din laborator [1]. Pentru soclu piesa se numeste MMC-SD [2]. In plus, ma folosit trei rezistente 3.3K si trei de 1.8K si doua diode de 1N4004 (de 0.7V) pentru a reduce tensiunea de intrare.
Pentru iesirea prin boxe am folosit in primul rand un jack socket/jack mama RCA. Pentru a obtine o calitate mai buna a sunetelor, am adaugat un amplificator si un filtru. Pentru amplificator am folosit un LM386 [3]. Datasheetul acestuia prezinta cateva variante de folosire; dintre acestea, am folosit cea cu gain 20. Pentru aceasta am mai avut nevoie de un condensator de 250nF si unul de 50nF, o rezistenta de 10 ohmi si un potentiometru de 10K, pentru ajustarea volumului. Pentru filtru am folosit o rezistenta de 10K si un condensator de 100nF.
Pentru programarea microcontrollerului am folosit WinAVR, dupa ce am generat un driver pentru placuta folosind libusb.
Pe microcontroller, limbajul folosit este C.
Principala parte a proiectului este reproducerea unor sunete de pe cardul SD, deci seamana in acest sens cu o aplicatie pentru Player Audio, facuta in laboratorul 4. De aceea, principalele surse folosite in cadrul proiectului sunt cele oferite in acel laborator, care se ocupa cu adaugarea unui sistem de fisiere (Petit FatFs) si interfatarea cu un card SD.
In rest, este nevoie de module care sa se ocupe de legarea butoanelor de sampleuri si oferirea altor facilitati ale samplerului, cum ar fi producerea simultana de mai multe sunete.
In plus o aplicatie Java faciliteaza incarcarea de noi sampleuri pe cardul SD al placutei conectate.
Am reusit sa termin in totalitate partea hardware, insa nu si pe cea software.
Poze cu placuta terminata (jack socketul nu este conectat):
Din punct de vedere hardware nu a fost un proiect asa de simplu si am intampinat destul de multe probleme.
Principala problema a fost alegerea unei placute de test (nu una printata). Aceasta alegere a dus timpul de lucru la prima etapa pe la 24 de ore si pentru a doua etapa pe la 10 ore. Totusi nu timpul efectiv petrecut pe proiect a fost principala problema (desi este considerabil mai mult decat pentru o placuta printata), ci faptul ca trebuia gasit cu atentie un loc pe placa pentru fiecare componenta si, mai ales, toate conexiunile au trebuit facute manual, in general cu fire UTP (pastrarea culorilor, albastru pentru masa si rosu pentru VCC, este foarte folositoare). Singurul motiv pe care il vad pentru alegerea unei placute de test este satisfactia de a fi asamblat toata placa manual.
O alta problema, destul de neasteptata, care a incetinit foarte mult lucrul la partea hardware a fost lipsa unor letconuri care sa functioneze multumitor. Am cumparat 4 letconuri de-a lungul proiectului, pentru ca dupa cateva ore de functionare (sau nici macar atat) varfurile nu mai functionau cum trebuie si nu se mai putea lipi decat cu marginile, ceea ce nu este deloc potrivit pentru lipituri delicate. Varfurile de schimb cumparate au fost si mai proaste. In plus, catre finalul semestrului, niciunul dintre letconurile din laborator nu mai functiona. In final singurele solutii fiabile s-au dovedit pilirea varfurilor si folosirea marginilor (mai usoara odata cu acumularea de dexteritate).
Cea de-a treia problema legata de hardware este legata de achizitionarea componentelor. Este foarte important sa se stie cat mai multe detalii despre componente inainte de a le cumpara, pentru ca vanzatorii nu sunt atat de cunoscatori pe cat s-ar putea crede. De exemplu, pentru achizitionarea unui jack mama am avut 2 incercari esuate, desi am descris cat mai clar ce doresc: prima data, fiind neatent, am primit un jack tata, iar a doua oara unul mama, insa care nu avea mufa propriu-zisa, ci doar locuri pentru cele doua fire.
In ceea ce priveste softwareul, pentru realizarea functionalitatii de baza, proiectul nu este prea greu, existand deja sursele din laboratorul 4. Totusi, problemele serioase incep sa apara atunci cand se doreste extinderea functionalitatilor.
Datasheetul ATMega16: ATMEga16
1. Schema pentru carduri SD, laboratorul 4: http://elf.cs.pub.ro/pm/wiki/lab/lab4#filesystem
2. Datasheet MCC-SD: mcc-sd.pdf
3. Datasheet LM386: lm386.pdf