Musical information processing



Hasonló dokumentumok
Analóg digitális átalakítók ELEKTRONIKA_2

Analóg-digitális átalakítás. Rencz Márta/ Ress S. Elektronikus Eszközök Tanszék

A digitális jelek időben és értékben elkülönülő, diszkrét mintákból állnak. Ezek a jelek diszkrét értékűek és idejűek.

2. gyakorlat Mintavételezés, kvantálás

Digitális jelfeldolgozás

Mintavételezés és AD átalakítók

Digitális jelfeldolgozás

ANTAL Margit. Sapientia - Erdélyi Magyar Tudományegyetem. Jelfeldolgozás. ANTAL Margit. Adminisztratív. Bevezetés. Matematikai alapismeretek.

Informatika Rendszerek Alapjai

X. ANALÓG JELEK ILLESZTÉSE DIGITÁLIS ESZKÖZÖKHÖZ

Iványi László ARM programozás. Szabó Béla 6. Óra ADC és DAC elmélete és használata

Informatika Rendszerek Alapjai

Az Informatika Elméleti Alapjai

Elektronika Előadás. Modulátorok, demodulátorok, lock-in erősítők

Villamos jelek mintavételezése, feldolgozása. LabVIEW 7.1

Gyakorló többnyire régebbi zh feladatok. Intelligens orvosi műszerek október 2.

A PC vagyis a személyi számítógép

Villamos jelek mintavételezése, feldolgozása. LabVIEW előadás

Hangtechnika. Médiatechnológus asszisztens

A digitális analóg és az analóg digitális átalakító áramkör

Számítógépes Grafika SZIE YMÉK

Akusztikus MEMS szenzor vizsgálata. Sós Bence JB2BP7

Elektronika Előadás. Digitális-analóg és analóg-digitális átalakítók

Jelek és rendszerek 1. 10/9/2011 Dr. Buchman Attila Informatikai Rendszerek és Hálózatok Tanszék

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 0. TANTÁRGY ISMERTETŐ

Beszédinformációs rendszerek 5. gyakorlat Mintavételezés, kvantálás, beszédkódolás. Csapó Tamás Gábor

2. Elméleti összefoglaló

Jel, adat, információ

Orvosi Fizika és Statisztika

Mérés és adatgyűjtés

A/D és D/A konverterek vezérlése számítógéppel

Az összetett munkához szükséges eszközkészlet kiválasztása és a digitalizáló eszközök megismerése

Gingl Zoltán, Szeged, :14 Elektronika - Alapok

A mintavételezéses mérések alapjai

Első egyéni feladat (Minta)

Digitális Fourier-analizátorok (DFT - FFT)

TÁVOKTATÁSI TANANYAGOK FEJLESZTÉSÉNEK MÓDSZERTANI KÉRDÉSEI

3.18. DIGITÁLIS JELFELDOLGOZÁS

Értékelés Összesen: 100 pont 100% = 100 pont A VIZSGAFELADAT MEGOLDÁSÁRA JAVASOLT %-OS EREDMÉNY: EBBEN A VIZSGARÉSZBEN A VIZSGAFELADAT ARÁNYA 15%.

Számítógép felépítése

Híradástechikai jelfeldolgozás

Informatika a valós világban: a számítógépek és környezetünk kapcsolódási lehetőségei

1. Digitális írástudás: a kőtáblától a számítógépig 2. Szedjük szét a számítógépet 1. örök 3. Szedjük szét a számítógépet 2.

A/D és D/A átalakítók gyakorlat

Mintavétel: szorzás az idő tartományban

Prievara Tibor Nádori Gergely. A 21. századi szülő

Elektromos nagybıgı megvalósítása DSP-vel

4. Fejezet : Az egész számok (integer) ábrázolása

Kommunikációs hálózatok 2 Analóg és digitális beszédátvitel

ÉRZÉKELŐK ÉS BEAVATKOZÓK I. 6. A MINTAVÉTELI TÖRVÉNY

2.3. Soros adatkommunikációs rendszerek CAN (Harmadik rész alapfogalmak II.)

Analóg elektronika - laboratóriumi gyakorlatok

Egyetemi adatbázis nyilvántartása és weben

ÁRAMKÖRÖK SZIMULÁCIÓJA

I. A DIGITÁLIS ÁRAMKÖRÖK ELMÉLETI ALAPJAI

SC Surround Sound Card (714DX 7.1 SOUND EXPERT)... A 7.1 hangszórók bekötése. 2

1. ábra. Repülő eszköz matematikai modellje ( fekete doboz )

Informatikai eszközök fizikai alapjai Lovász Béla

Audacity. Nyissunk meg egy.wav hangállományt a Fájl / Megnyitás menüponttal.

Jel, adat, információ

11. Orthogonal Frequency Division Multiplexing ( OFDM)

2018, Diszkre t matematika. 10. elo ada s

2. Fejezet : Számrendszerek

Négyszög - Háromszög Oszcillátor Mérése Mérési Útmutató

JELÁTALAKÍTÁS ÉS KÓDOLÁS I.

Megoldás. Feladat 1. Statikus teszt Specifikáció felülvizsgálat

Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor

Kiegészítő kártya digitális bemenetei és kimenetei G1: Koaxiális kimenet G2: Koaxiális bemenet G3: Optikai kimenet G4: Optikai bemenet

Digitális tárolós oszcilloszkópok

Informatikai alapismeretek

Fourier transzformáció

Analóg-digitál átalakítók (A/D konverterek)

Ellenőrző kérdések a Jelanalízis és Jelfeldolgozás témakörökhöz

Objektum Orientált Szoftverfejlesztés (jegyzet)

Kamatos kamat II. Írta: dr. Majoros Mária

Mechanikai hullámok. Hullámhegyek és hullámvölgyek alakulnak ki.

A tanulók gyűjtsenek saját tapasztalatot az adott szenzorral mérhető tartomány határairól.

16. Tétel. Hangkártya szabványok. Hangállományok tömörítése, szabványok, kódolási módszerek Az MPEG Audio. Egyéb állományformátumok (PCM, WMA, OGG).

GPGPU. Hangfeldolgozás és hangszintézis

1.1 Számítógéppel irányított rendszerek

Wavelet transzformáció

Digitális hangszintmérő

Csomagok dróton, üvegen, éterben. Szent István Gimnázium, Budapest Tudományos nap Papp Jenő 2014 április 4

7. fejezet: Mutatók és tömbök

Jelfeldolgozás a közlekedésben. 2017/2018 II. félév. Analóg-digitális átalakítás ADC, DAC

Erősítő tanfolyam Keverők és előerősítők

Bevezetés a méréstechnikába és jelfeldolgozásba 7. mérés RC tag Bartha András, Dobránszky Márk

Jelfeldolgozás. Gyakorlat: A tantermi gyakorlatokon való részvétel kötelező! Kollokvium: csak gyakorlati jeggyel!

T E R M É K T Á J É K O Z TAT Ó

int azt az elõzõ részbõl megtudtuk, a rétegeknek az a feladatuk, hogy valamiféle feladatot végezzenek

Fehérzajhoz a konstans érték kell - megoldás a digitális szűrő Összegezési súlyok sin x/x szerint (ez akár analóg is lehet!!!)

A Szekszárdi I. Béla Gimnázium Helyi Tanterve

ADAT- ÉS INFORMÁCIÓFELDOLGOZÁS

U42S Felhasználási példák Gitárjáték rögzítése

5. Fejezet : Lebegőpontos számok

Automatikus beszédfelismerés Mérési Segédlet

Bevezetés a programozásba. 5. Előadás: Tömbök

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

Mérés és adatgyűjtés

Fourier térbeli analízis, inverz probléma. Orvosi képdiagnosztika 5-7. ea ősz

Átírás:

BABEŞ-BOLYAI UNIVERSITY CLUJ NAPOCA FACULTY OF MATHEMATICS AND INFORMATICS SPECIALIZATION: COMPUTER SCIENCE Diploma Thesis Musical information processing Abstract There will be a lot of citation from this book [Zölzer, 2008] This work is the result of my own activity. I have neither given nor received unauthorized assistance on this work. 2011 JUNE ALBERT CSANÁD - ISTVÁN ADVISOR: TEACHING ASSISTANT BODÓ ZALÁN-PÉTER, PHD.

UNIVERSITATEA BABEŞ-BOLYAI, CLUJ NAPOCA FACULTATEA DE MATEMATICÃ ŞI INFORMATICÃ SPECIALIZAREA INFORMATICÃ Lucrare de diplomă Procesarea informaţiei muzicale CONDUCĂTOR ŞTIINŢIFIC: ASISTENT UNIVERSITAR DR, BODÓ ZALÁN - PÉTER. ABSOLVENT: ALBERT CSANÁD - ISTVÁN IUNIE 2011

BABEŞ-BOLYAI TUDOMÁNYEGYETEM KOLOZSVÁR MATEMATIKA ÉS INFORMATIKA KAR INFORMATIKA SZAK Diplomadolgozat Zenei információ feldolgozása TÉMAVEZETŐ: DR. BODÓ ZALÁN - PÉTER, EGYETEMI TANÁRSEGÉD. SZERZŐ: ALBERT CSANÁD - ISTVÁN 2011 JÚNIUS

Tartalomjegyzék 1. Digitális jelfeldolgozás 3 1.1. DSP............................................. 3 1.1.1. Jel.......................................... 3 1.1.2. Jelfeldolgozás.................................... 3 1.2. Analóg-Digitális konvertálás................................ 4 1.2.1. Mintavételezés................................... 4 1.2.2. Kvantálás...................................... 5 1.2.3. Kódolás....................................... 6 1.3. Digitális hangfeldolgozás.................................. 6 1.4. Fast Fourier transzformáció................................. 7 2. Alkalmazási terület 8 2.1. Alkalmazási terület, célközönség.............................. 8 2.2. Motiváció.......................................... 8 3. Technológiák, API-k 10 3.1. A Java TM Sound API.................................... 10 3.1.1. javax.sound.sampled................................ 10 3.1.2. javax.sound.midi.................................. 11 3.2. Fast fourier Transzformáció (FFT)............................. 12 4. Dokumentáció amíg jobb cím nem jut az eszembe... 13 4.1. Célok............................................ 13 2

1. fejezet Digitális jelfeldolgozás Összefoglaló: Ebben a fejezetben általánosságban fogjuk tárgyalni a digitális jelfeldolgozást, az analóg jelnek digitálissá való átalakítását, a digitális hangfeldolgozást és a fast Fourier transzformációt. 1.1. DSP A digitális jelfeldolgozás már az 1960-as években elkezdett rohamosan fejlődni, majd a processzoroknak a gyors fejlődése tette lehetővé, hogy a digitális jelfeldolgozásra kifejlesztett algoritmusok igazán használhatóak legyenek.[hayes, 1999] A digitális jelfeldolgozásnak az egyik fő célja az analóg jelnek a digitális formában való tárolása, értelmezése és feldogozása. 1.1.1. Jel A jel [Proakis és Manolakis, 1995] az idő, tér vagy más független változónak a függvényében változó fizikai mennyiség. Ezeket a jeleket le lehet írni pontosan függvények segítségével (pl.: f(t) = t 2 ), bár általában ez nem lehetséges, mert vagy nem ismerünk függvényt, ami leírná, vagy ha ismerünk, akkor túl komplikált, hogy használható legyen valamire. Például a beszédet nem lehet leírni egyszerű függvények segítségével, de le lehet írni különböző (frekvenciájú, amplitúdójú) szinuszoid függvények összegeként. 1.1.2. Jelfeldolgozás A jeleket fel tudjuk dolgozni analóg úton: szűrhetjük, megnövelhetjük a frekvenciáját és az amplitúdóját. Ugyanezeket a műveleteket, más komplexebb műveleteket és olyan műveleteket is elvégezhetünk digitálisan, amikre nem érdemes áramkört tervezni, illetve gyártani, ehhez a jelet át kell alakítani digitálissá, majd általában vissza analóggá, ezeket analog-to-digital konverterrel (ADC) illetve digital-to-analog konverterrel (DAC) valósítják meg [Proakis és Manolakis, 1995]. A digitális jelfeldolgozásnak rengeteg előnye van az analóg jelfeldolgozással szemben, ezek közül talán a legfontosabb, hogy sokkal összetettebb műveleteket lehet végezni a jelen. Egy másik fontos előnye, hogy sokkal költséghatékonyabb, ha egy analóg jelfeldolgozót más célra szeretnénk átalakítani, akkor általában az egész áramkört újra kell tervezni és építeni, míg a digitálisnál csak a szoftvert kell kicserélni. Egy másik nagy előnye, hogy míg az analóg feldogozás során a jelnek a pontosságát nagyon nehéz megőrizni, szinte lehetetlen, addig a digitális jelfeldolgozásnál, miután megtörtént a digitális jellé való átalakítás, gyakorlatilag nem veszít a jel a pontosságából. 3

1. FEJEZET: DIGITÁLIS JELFELDOLGOZÁS A digitális jelfeldolgozásnak megvannak a hátrányai is az analóggal szemben: ha egy nagyon egyszerű műveletet akarunk végezni a jelen, akkor sokkal drágább a digitális megoldás, mint az analóg. Ha olyan jeleket szeretnénk feldolgozni, amelyeknek nagyon magas a frekvenciájuk, vagy nagyon nagy a sávszélességük, akkor olyan ADC-re van szükségünk, amelynek nagyon magas a mintavételezési frekvenciája, ami nagyon költséges, de egy bizonyos szint fölött már lehetetlen megfelelő konvertert készíteni, ilyenkor maradnak az analóg megoldások. 1.2. Analóg-Digitális konvertálás A digitális jelfeldolgozás egyik kulcsfontosságú része az analóg adatok digitálissá való alakítása, mivel a digitális jelek nagy részét analóg jelekből nyerjük (hang, rádió, videó), nagyon kevés kivétellel, ilyen például a valutaárfolyam. Ezt általában analog-to-digital konverterekkel (ADC) szoktuk elérni. A ma használatban levő asztali számítógépek többsége rendelkezik legalább egy ilyen konverterrel, mégpedig a hangkártyán található mikrofonbemenettel, ami a hangot alakítja át digitális jellé. Az átalakítás folyamata három fő részből áll: a mintavételezésből, a kvantálásból és a kódolásból. 1.2.1. Mintavételezés A mintavételezés folyamán megmérjük a bemenő folytonos jelet. Ha x a (t) a bemenő jel, akkor x a (nt ) x(n), ahol T a mintavételezési idő [Proakis és Manolakis, 1995]. A mintavételezés mikéntjére rengeteg megoldás ismeretes, ezekből a legelterjedtebb az egyenlő időközönként való mintavételezés (periodikus), aminek a lényege, hogy T időközönként veszi a mintát, ahogy ez a 1.1 ábrán is látszik. A T -t mintavételi 1.1. ábra. Analóg jelnek periodikus mintavételezése. [Proakis és Manolakis, 1995] 4

1. FEJEZET: DIGITÁLIS JELFELDOLGOZÁS időnek nevezzük és ennek a fordítottját ( 1/T = F s ) mintavételi frekvenciának nevezzük, az angol nyelvű szakirodalomban sampling rate vagy sampling frequency néven ismert. Ennek a mintavételi frekvenciának a helyes kiválasztására érdemes odafigyelni, különben előfordulhat a 1.2 ábrán megfigyelhető aliasing jelenség, ahol túl kicsinek van megválasztva a mintavételezési frekvencia (1Hz), és így a 7/8Hz-es jelből 1/8Hz-es jel fog látszani a digitalizálás után. Ha ugyanezt a 7/8Hz-es jelet 7/8Hz-es mintavételezési frekvenciával próbálnánk digitalizálni, akkor egy nulla amplitúdójú jelet kapnánk, ami bizonyos esetekben még rosszabb, mint az előző esetben kapott 1/8Hz-es jel. 1.2. ábra. Aliasing Ennek a jelenségnek az elkerülésére az általános megoldás, hogy minimum kétszer akkorára választjuk meg a mintavételezési frekvenciát, mint a digitalizálni kívánt analóg jelnek a maximális frekvenciája. Tehát ha az analóg jelünk 30Hz és 50Hz között mozog, akkor másodpercenként minimum 100 alkalommal kell mintát vegyünk a jelből, hogy ugyanazt a frekvenciájú jelet tudjuk majd visszanyerni, ami volt. 1.2.2. Kvantálás A kvantálás folyamán a folytonos értékkészletet diszkrétté alakítjuk, minden mintának egy értéket feleltetünk meg egy véges értékkészletből. x q (n) = Q[x(n)] A kvantálási folyamat során felosztjuk a bejövő x(n) analóg jelnek az amplitúdóját L intervallumra. Ha egy x(n) érték beleesik egy ilyen [x(k), x(k + 1)] intervallumba, akkor egy x q (k) értéket rendelünk hozzá ebből az intervallumból. 5

1. FEJEZET: DIGITÁLIS JELFELDOLGOZÁS 1.3. ábra. Kvantálás. [Hayes, 1999] A véges értékkészletből kifolyólag a még nem kvantált érték és a kvantált érték kis eltérést fog mutatni, ezt kvantálási hibának, kvantálási zajnak nevezzük. e q (n) = x q (n) x(n) Gyakorlatban ezt a hibát minimálisra, elhanyagolható szintre le lehet csökkenteni, de ennek ellenére az átalakítással mindig fog elvesztődni információ, mert mindig lesz két (vagy sokszor több száz) analóg érték, amihez a kvantáló ugyanazt a kvantált értéket fogja rendelni, emiatt a kvantálás vissza nem fordítható folyamat, a kvantált jelből csak egy bizonyos pontossággal lehet visszaállítani az eredetit. 1.2.3. Kódolás A kódolás folyamán minden kvantálási szinthez egy egyedi bináris számot rendelünk. Ha L intervallumra osztottuk fel az analóg jel amplitúdóját a kvantálási folyamatban, akkor b log 2 L bites szóhosszúságú számokra lesz szükség a kódoláshoz. 1.3. Digitális hangfeldolgozás A digitális jelfeldolgozás egy nagyon ágas-bogas tudományággá nőtte ki magát, rengeteg területen alkalmazható, ezek közül az egyik terület a hangfeldolgozás. A hangfeldolgozás a digitális jelfeldolgozás azon területe, amellyel majdnem minden ember találkozott már, hiszen ott van a számítógépeinkben, a mobiltelefonjainkban és az mp3-lejátszóinkban. Egy zenefájlnak a stúdiótól, addig a pontig, amíg mi halljuk, rengeteg feldolgozáson megy keresztül. Az első lépés a stúdióban a felvétel, ahol a hangot mikrofonok segítségével analóg elektronikus jellé alakítják, majd ezt ADC segítségével digitalizálják, ezzel a digitalizált jellel a stúdióban gyakorlatilag bármit el tudnak végezni, hogy élvezhetőbb, tetszetősebb legyen: visszhang hozzáadása, zajszűrés, több külön felvett sáv összekeverése stb. Majd miután a üzletekből a számítógépünkbe vagy lejátszónkba kerül, megint egy sor digitális jelfeldolgozáson megy keresztül, mielőtt megint analóg, számunkra hallható hang lesz belőle: gondoljunk itt arra, amikor a kedvenc zenelejátszónknak a hangszínszabályzójában (equalizer) felhúzzuk a basszust, ami tulajdonképpen a 40Hz körüli frekvenciák amplitúdóját növeli meg, vagy az mp3-lejátszónkon beállítjuk 6

1. FEJEZET: DIGITÁLIS JELFELDOLGOZÁS a zenestílust, amit hallgatunk, és máris sokkal élvezhetőbb lesz a zene. A fizikai hangmagasságnak nincsenek korlátai, azonban az emberi hallásnak vannak (16 25000Hz), és ennek a tartománynak is a felső határa már fülsértő, fájdalmat okoz az ember számára [Kesztler, 2000]. Ezért a digitális hangfeldolgozásban a vizsgált frekvenciatartomány lényegesen leszűkül, így viszonylag olcsó berendezésekkel már előállíthatjuk az analóg jelből a pontos digitális jelet. Ha tovább szeretnénk a berendezésen spórolni, akkor érdemes megnézni, hogy a hang milyen célt fog szolgálni. Egy telefonbeszélgetésnél elégséges csak 3200Hz alatti tartományt vizsgálni, így egy általában 8000Hz-es mintavételezési frekvenciát használunk a telekommunikációban, ugyanez a 3200Hz az ember számára hallható frekvenciatartomány körülbelül 16%-a, mégis a hasznos információnak körülbelül 90%-át tartalmazza. Viszont ha zenéről van szó, akkor legalább 20000Hz-ig kell vizsgálni, amire általában 44100Hz-es mintavételezési frekvenciát használhatunk. Ezen kívül a vételezett mintákat is más hosszúságú szavakban tárolhatjuk: egyszerű beszédnél elég egy 8 bites szó, míg ha zenéről van szó, akkor legalább egy 16 bites szó kell a tároláshoz. Ezeket figyelembe véve, sokkal kisebb számítási kapacitással kell rendelkeznie egy egyszerű beszédet feldolgozó rendszernek ( 64kbit/s), mint egy zenére kifejlesztett rendszernek ( 706kbit/s) [Smith, 1997]. 1.4. Fast Fourier transzformáció A diszkrét Fourier transzformációk alapja, hogy minden jelet fel tudunk írni szinuszoid függvények sorozataként. A diszkrét Fourier transzformációk átviszi a jelet az idő tartományából a frekvencia tartományba, így lehetővé teszi számtalan műveletet elvégzését a jellel, amelyek nem lennének lehetségesek az idő tartományában, például spektrumanalízis vagy egy rendszer frekvenciaválaszának az elemzése. A diszkrét Fourier transzformációnak egyik megoldási módszere a fast Fourier (gyors Fourier) transzformáció. Amint a neve is mutatja, az egyik fő tulajdonsága az, hogy gyors, ezzel az algoritmussal ugyanolyan pontos eredményt lehet elérni, mint más diszkrét Fourier transzformációt számoló algoritmusokkal, csak sokkal hatékonyabban. A fast Fourier transzformáció tette lehetővé a digitális jelfeldolgozásban ma használt módszereknek a kialakulását. A fast Fourier transzformáció nagyon rövid, de nagyon bonyolult algoritmus, egyike a legbonyolultabbaknak, amit használ a digitális jelfeldolgozás. 1 A fast Fourier transzformáció kiszámítására több algoritmus is ismert: Radix-2 (Cooley-Turkey): 2 n méretű mintákra, oszd meg és uralkodj módszeren alapszik, a legelterjedtebb. Prim factor: N méretű mintákra, ahol N felírható N = N 1 N 2 formában, ahol N 1 és N 1 relatív prímek. Bővebben a pontos algoritmusokat megtalálhatjuk a [Hayes, 1999] könyvben. 1. Részlet Smith [1997] könyvéből: While the FFT only requires a few dozen lines of code, it is one of the most complicated algorithms in DSP. 7

2. fejezet Alkalmazási terület Összefoglaló: Ebben a fejezetben a programnak a célcsoportjáról, alkalmazási területéről, megírásának a motivációjáról lesz szó. 2.1. Alkalmazási terület, célközönség Az előző fejezetben láthattuk, hogy a digitális jelfeldolgozás nagyon nagy tudományág, ezen belül a digitális hangfeldolgozás szintén külön tudományágnak tekinthető. A program ebből a nagy tudományágból egy kis részt ragad ki, ezzel kíván foglalkozni, mégpedig hogy hogyan lehet kinyerni egy audiofájlból a zeneileg fontos információkat, valamint, hogy ezekkel az információkkal mit lehet kezdeni, hogyan lehet feldolgozni ezeket. A program elsősorban otthoni használatra készült, a célcsoportjába olyan kreatív, alkotni vágyó emberek tartoznak, akiknek van minimális zenei ismeretük, tudják értelmezni, amit a képernyőn látnak, tehát tisztában vannak a hangmagasságokkal, az akkordokkal. Ez utóbbinak a hiánya viszont nem jelenthet nagy akadályt, hiszen ez hamar pótolható, például [Kesztler, 2000] könyvéből vagy a [Muszty és Dobay, 2005] könyvből. Az első, az alkotni vágyás, az nem szerezhető be sajnos könyvekből. Egy másik potenciális célcsoportba tartoznak a már komolyabb zenei ismeretekkel rendelkező emberek, akik a hangjukat szeretnék képezni. De ha valaki ezekből egyikre sem akarja használni, akkor akár metronómként is használható, vagy egyszerűen hangfelvevésre, illetve lejátszására. A programnak nem célja, hogy a zeneszerzők munkáját elvegye, inkább pályakezdőknek, amatőröknek kedvcsináló, hogy szorgalmazza az alkotást. Nem tudja helyettesíteni a zenetanárt, aki megmondja, hogyan formáljuk a hangot, tehát ez a program segédeszköz lehet az alkotáshoz, de önmagában nem garancia sem a fejlődésre, sem az igazi, egyedi zene készítésére. 2.2. Motiváció A program megírásául szolgáló fő motiváció talán az volt, hogy elkezdtem gitározni tanulni, így elkerülhetetlenül, ezzel párhuzamosan, elkezdtem gondolkodni azon, hogyan lehetne elősegíteni, megkönnyíteni számítógép segítségével akár a tanulást, akár a zenealkotást. Ennek eredményeként született meg ez a program is. A megírás másik mozgatórugója az volt, hogy hasonló program jelenleg a piacon nem túl sok van, és ezek közül, ami ingyenes, az nem versenyképes, ami meg versenyképes, annak 40$ körüli ára van. 8

2. FEJEZET: ALKALMAZÁSI TERÜLET Egy hasonló programot említenék meg: a Microsoftnak a SongSmith nevű programját. A SongSmithszel véleményem szerint az a legnagyobb baj, hogy azért az árért, amiért árulják, viszonylag keveset nyújt, akinek csak azok a funkciók kellenek, amiket a SongSmith nyújt, az nem feltétlenül fog kifizetni érte 40$-t. Aki viszont zenével keresi a kenyerét, tehát megéri neki, hogy belefektessen, annak nem nyújt eleget a program. A programnak a kinézete is azt sugallja, hogy inkább egy játék, mint komoly alkalmazás. Egy ilyen jellegű programnál a minimális elvárás, hogy tudja felvenni a hangokat mikrofonon keresztül, tudja lementeni azt, tudja lejátszani, és hogy ajánljon akkordokat a felvett éneknek a függvényében. A program ezeken az alapfunkciókon kívül még képes más programban felvett audiofájloknak a megnyitására is 1 és ezt ugyanúgy tudja kezelni megnyitás után, mintha most vettük volna fel. Valamint nemcsak akkordokat ajánl a felvett hangok függvényében, hanem még ki is írja, hogy milyen hangokat énekeltünk. Ez a funkció szerintem nagyon lényeges, hiszen így nyomon tudjuk követni, hogy tényleg azt énekeltük-e amit szerettünk volna, vagy elcsúsztunk egy félhanggal, netán egy egész hanggal, és akkor tudjuk, hogy a hangunkon még van, amit csiszolni. 1. Amennyiben a megfelelő audioformátumban volt lementve. 9

3. fejezet Technológiák, API-k Összefoglaló: Ebben a fejezetben a programban használt API kerül bemutatásra, illetve a hangmagasság detektálásra használt FFT. 3.1. A Java TM Sound API A program, mivel hangokkal dolgozik, fel kell vennie a hangokat, le kell játszania a hangokat. Ezt a Java TM Sound API-nak a használatával valósítottam meg. A Java TM Sound API alsó szintű támogatást nyújt audio és MIDI adatok lejátszásához, felvevéséhez és feldolgozásához.[oracle, 2001] Az alapimplementáció támogatja: Az AIFF, AU és WAV audiofájl formátumokat, ezekből a programban a WAV fájlformátum van használva. A lineáris, az a-law és a mu-law kódolásait a fent felsorolt fájlformátumoknak. Az RMF, MIDI 0 és 1-es típusú zenefájl formátumokat. A 8 és 16 bites, a mono és sztereó, 8000 Hz és 48000 Hz közötti mintavételezési frekvenciájú hangformátumokat. A MIDI hardverekhez való hozzáférést. Hangszintézist szoftverből. A program szempontjából az API-nak 2 csomagja érdekes (ezeken kívül még kettő van, de ezek az API-nak a kibővítésére szolgálnak): javax.sound.sampled javax.sound.midi 3.1.1. javax.sound.sampled Ahhoz, hogy a Java TM Sound API segítségével letudjunk játszani, vagy fel tudjunk venni egy hangot legalább három dologra van szükségünk: formázott audioadatra, keverőre és egy sávra. A formázott audioadatot nem szabad összekeverni az audiofájlnak a formátumával. Az audioadat formátuma tartalmazza az összes információt, ami az audioadatnak a lejátszásához, vagy rögzítéséhez szükséges. Ezek az információk: 10

3. FEJEZET: TECHNOLÓGIÁK, API-K encoding: lineáris, vagy valamelyik nemlineáris kvantálási algoritmus volt használva (lineáris: PCM, nemlineáris: a-law, mu-law) samplerate: mintavételezési frekvencia samplesizeinbits: hány bites egy minta channels: mono vagy sztereó hang framesize: általában: chanels samplesizeinbytes, de tartalmazhat plusz információkat is, ilyenkor másképpen kell számolni framerate: ez általában egyenlő a samplerate-el, de ha a frame tartalmaz más információt akkor nem bigendian: big-endian vagy little-endian sorrendben vannak egy mintán belül a byte-ok, csak ha nagyobb a minta mint 8 bit akkor releváns A keverő (mixer) lényegileg hasonlít a fizikai keverőkhöz, amiket koncerteken, hangosításoknál használnak. A Java TM Sound API-ban minden fizikai audio eszköznek (pl.: hangkártya) megfelel egy keverő, valamint fordítva: több bemenetet szétválasztani, vagy összekeverni audiofolyamokba. A sávot (line) egy fizikai keverőnek a ki és bemeneti csatlakozóihoz lehet hasonlítani. A sávok segítségével küldhetünk adatokat a keverőnek, vagy kaphat adatokat a keverőből. Leegyszerűsítve a hang lejátszása így néz ki a Java TM Sound API segítségével: 1 public void play(audioinputstream playbackinputstream) { AudioFormat format = playbackinputstream.getformat(); DataLine.Info info = new DataLine.Info(SourceDataLine.class, format); SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info); line.open(format, bufsize); 6 byte[] data = new byte[bufferlengthinbytes]; int numbytesread = 0; line.start(); while (true) { if ((numbytesread = playbackinputstream.read(data)) == 1) { 11 break; } int numbytesremaining = numbytesread; while (numbytesremaining > 0) { numbytesremaining = line.write(data, 0, numbytesremaining); 16 } } line.drain(); line.stop(); line.close(); 21 } 3.1.2. javax.sound.midi A MIDI (Musical Instrument Digital Interface) a számítógépek és az elektronikus hangszerek közti kommunikációra fogalmaz meg egy protokollt. A program szempontjából ez annyiban érdekes, hogy a segítségével könnyedén tudjuk utánozni majdnem bármilyen hangszernek a hangját. Ehhez a csomagból fontos: 11

3. FEJEZET: TECHNOLÓGIÁK, API-K Synthesizer: a csomagnak ez az objektuma állítja elő (szintetizálja) a hangszereknek a hangját. midiüzenetek (ShortMessages, SysexMessages, MetaMessages) segítségével lehet kommunikálni vele. Az objektum audioadattá alakítja a midiüzeneteket. programchange(): ennek a metódusnak a segítségével adhatjuk meg, hogy milyen hangszernek a hangján szeretnék utánozni. noteon(int notenumber, int velocity): ez egy ShortMessages, ennek a metódusnak a segítségével mondhatjuk meg a Synthesizernek, hogy melyik hangot, és milyen hangerővel szeretnénk lejátszani. Analógia állítható fel a metódus között és a zongorának a billentyűi között: note megfelel a lenyomott billentyűnek, a velocity a lenyomásnak a gyorsaságával 3.1. noteoff(int notenumber, int velocity): hasonló a noteon-hoz, csak ez elhallgattat egy hangot. 3.1. ábra. MIDI, zongora analógia. http://en.wikipedia.org/wiki/musical_instrument_digital_interface Egy hangnak a lejátszása a Java TM Sound API segítségével: public void playmidi(int note, int volume, int duration) throws Exception{ Synthesizer synth = MidiSystem.getSynthesizer(); synth.open(); 4 Soundbank soundbank = synth.getdefaultsoundbank(); synth.loadallinstruments(soundbank); MidiChannel[] channels = synth.getchannels(); MidiChannel channel = channels[0]; channel.programchange(46); //Hárfa 9 channel.noteon(note, volume); Thread.currentThread().sleep(duration); channel.noteoff(note, volume); } Bővebben lehet olvasni a Java TM Sound API-ról a [Oracle, 2001] weboldalán. 3.2. Fast fourier Transzformáció (FFT) Ezt nem tudom, hogy ide kéne-e írjam, vagy a fontosabb algoritmusok bemutatásához... 12

4. fejezet Dokumentáció amíg jobb cím nem jut az eszembe... Összefoglaló: Ebben a fejezetben a projektnek a specifikációja kerül tárgyalásra, illetve még néhány fontosabb dokumentum. 4.1. Célok A projekt fő célja egy olyan platformfüggetlen, ingyenes szoftvernek az elkészítése, amely zenei kíséretet készít a felhasználó énekére. 4.1.1. Felhasználói követelmények Biztosítson lehetőséget a felhasználónak, hogy egy mikrofon segítségével fel tudjon venni egy éneket. Biztosítson metronómot a felvételhez. A metronómnak lehessen állítani a tempót és az ütemet. A felvételt lehessen lementeni, illetve betölteni. A szoftver jelenítse meg a felvételt hanghullám formájában. A hanghullámon jelenítse meg az ütemeket. Minden ütemre ajánljon egy akkordot (kíséretet), amit a hanghullám fölött jelenítsen meg. Adjon lehetőséget a kíséret stílusának a megválasztására. Adjon lehetőséget a stílus, tempó és az ütemnek utólagos módosítására. 13

Irodalomjegyzék Hayes, M. H. Schaum s Outline of Theory and Problems of Digital Signal Processing. Schaum s Outline series. The McGraw-Hill Companies, 1999. Kesztler, L. Zenei alapismeretek. Lyceum könyvek. Atheneum 2000 Kiadó, 2 edition, 2000. Muszty, B. és Dobay, A. Új Gitáriskola és daloskönyv. Muszty-Dobay Bt., 2005. Oracle,. Java tm sound programmer guide. http://download.oracle.com/javase/1.5.0/docs/guide/ sound/programmer_guide/, October 2001. Proakis, J. G. és Manolakis, D. G.. Digital Signal Processing - Principles, Algorithmi, Applications. PRENTICE-HALLINTERNATIONAL, 3 edition, 1995. Smith, S. W. The Scientist and Engineer s Guide to Digital Signal Processing. California Technical Publishing, 1997. Zölzer, U. Digital Audio Signal Processing. John Wiley & Sons, 2 edition, 2008. 14