ZVUKOVÝ EFEKT CHORUS S POUŽITÍM DSP

Similar documents
Kapitola S5. Skrutkovica na rotačnej ploche

Tvarovač riadiacich signálov: poznámka k voľbe periódy vzorkovania a minimalizácia chýb spôsobených kvantovaním času.

Teória grafov. RNDr. Milan Stacho, PhD.

Ing. Tomasz Kanik. doc. RNDr. Štefan Peško, CSc.

Metódy vol nej optimalizácie

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY REKURENTNÉ POSTUPNOSTI

Obsah. 2 Určenie objemu valčeka Teoretický úvod Postup merania a spracovanie výsledkov... 10

Od zmiešavacieho kalorimetra k ultra citlivej modulovanej kalorimetrii. Jozef Kačmarčík

Maticové algoritmy I maticová algebra operácie nad maticami súčin matíc

1 Matice a ich vlastnosti

Kľúčové slová: SAR, šum spekl noise, evolučná PDR, lineárna difúzia, Perona-Malikova rovnica, štatistickéfiltre, Leeho filter

NASTAVOVÁNÍ REGULÁTORŮ PID TYPU VARIANTAMI PRVNÍ A DRUHÉ METODY ZIEGLERA-NICHOLSE.

Introduction to Digital Signal Processing

ADM a logika. 4. prednáška. Výroková logika II, logický a sémantický dôsledok, teória a model, korektnosť a úplnosť

Elektrický prúd a náboj. Elektrické napätie. Indukčnosť. Kapacita. Meranie v elektronike a telekomunikáciách. Odpor

TERMINOLÓGIA A JEDNOTKY OPTICKÉHO ŽIARENIA

Matematická analýza II.

E : Lecture 1 Introduction

Kybernetika. Peter Hudzovič Súčasná kontrola stability a kvality impulznej regulácie. Terms of use:

Review of Discrete-Time System

Discrete Time Systems

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

PSEUDOINVERZNÁ MATICA

DHANALAKSHMI COLLEGE OF ENGINEERING DEPARTMENT OF ELECTRICAL AND ELECTRONICS ENGINEERING EC2314- DIGITAL SIGNAL PROCESSING UNIT I INTRODUCTION PART A

Odhady veľkosti pokrytí náhodne indukovaných podgrafov n-rozmernej hyperkocky

Určenie hodnoty Value at Risk využitím simulačnej metódy Monte Carlo v neživotnom poistení

Komunikačná akustika L03: Reproduktory prof. Ing. Jozef Juhár, PhD.

MODELOVANIE A RIADENIE SYSTÉMOV POMOCOU NEURÓNOVÝCH SIETÍ S ORTOGONÁLNYMI FUNKCIAMI V PROSTREDÍ MATLAB

Dokonalé a spriatelené čísla

Discrete-time signals and systems

Discrete-Time David Johns and Ken Martin University of Toronto

METRICKÉ ÚLOHY V PRIESTORE

Analýza multispektrálnych dát z konfokálnej mikroskopie. DIPLOMOVÁ PRÁCA

ESE 531: Digital Signal Processing

EE 224 Signals and Systems I Review 1/10

A l g o r i t m i c k y n e r i e š i t e ľ n é p r o b l é m y

Multimedia Signals and Systems - Audio and Video. Signal, Image, Video Processing Review-Introduction, MP3 and MPEG2

Errors-in-variables models

Chap 2. Discrete-Time Signals and Systems

ENVIRONMENTÁLNE FAKTORY V HODNOTENÍ EFEKTÍVNOSTI V POĽNOHOSPODÁRSTVE ENVIRONMENTAL FACTORS IN EFFICIENCY ASSESMENT IN AGRICULTURE.

DSP Algorithm Original PowerPoint slides prepared by S. K. Mitra

EEL3135: Homework #4

The Golden Ratio and Signal Quantization

Signals and Systems. Problem Set: The z-transform and DT Fourier Transform

Digital Signal Processing Lecture 10 - Discrete Fourier Transform

Fakulta Matematiky, Fyziky a Informatiky Univerzita Komenského, Bratislava THEILOVA REGRESIA

Digital Filters Ying Sun

Štatisticky tolerančný interval nazýva ISO Statistics. Vocabulary and symbols. Part 1: Probability and general statistical terms ako štatistick

EE482: Digital Signal Processing Applications

The influence of input data design on terrain morphometric parameters quality and accuracy

DEA modely a meranie eko-efektívnosti

Matematika 17. a 18. storočia

ECSE 512 Digital Signal Processing I Fall 2010 FINAL EXAMINATION

ESE 531: Digital Signal Processing

Prednáška 3. Optimalizačné metódy pre funkcie n-premenných. Študujme reálnu funkciu n-premenných. f: R R

SLOVENSKÁ TECHNICKÁ UNIVERZITA V BRATISLAVE FAKULTA CHEMICKEJ A POTRAVINÁRSKEJ TECHNOLÓGIE ÚSTAV INFORMATIZÁCIE, AUTOMATIZÁCIE A MATEMATIKY

Lecture 2 OKAN UNIVERSITY FACULTY OF ENGINEERING AND ARCHITECTURE

Radka Sabolová Znaménkový test

DFT & Fast Fourier Transform PART-A. 7. Calculate the number of multiplications needed in the calculation of DFT and FFT with 64 point sequence.

EE 521: Instrumentation and Measurements

ŠTEFAN GUBO. Riešenie úloh nelineárnej regresie pomocou tabuľkového kalkulátora. Solution of nonlinear regression tasks using spredsheet application

Modely, metódy a algoritmy pre analýzu longitudinálnych dát

FIRE PROTECTION & SAFETY Scientific Journal 12(1): 17 32, 2018 ISSN:

Discrete Time Systems

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY PREČO CHODÍ ČLOVEK V KRUHU JÁN DZÚRIK

Sistemas de Aquisição de Dados. Mestrado Integrado em Eng. Física Tecnológica 2015/16 Aula 6-26 de Outubro

Elektroakustika. pojmy. L01: Základné. doc. Ing. Jozef Juhár, PhD február

Chapter 5 Frequency Domain Analysis of Systems

MODELOVANIE TECHNOLOGICKEJ ČASTI POCÍNOVACEJ LINKY NA BÁZE UMELÝCH NEURÓNOVÝCH SIETÍ

Súťaž PALMA junior a programovanie v jazyku Python

Discrete Time Fourier Transform

Univerzita Karlova v Praze Matematicko-fyzikální fakulta. Michal Kesely. Katedra matematické analýzy. Studijní program: Obecná matematika

ZBORNÍK VEDECKÝCH PRÁC

Question Bank. UNIT 1 Part-A

2. CONVOLUTION. Convolution sum. Response of d.t. LTI systems at a certain input signal

/ (2π) X(e jω ) dω. 4. An 8 point sequence is given by x(n) = {2,2,2,2,1,1,1,1}. Compute 8 point DFT of x(n) by

Kompresia dát a jej použitie

Chapter 5 Frequency Domain Analysis of Systems

x[n] = x a (nt ) x a (t)e jωt dt while the discrete time signal x[n] has the discrete-time Fourier transform x[n]e jωn

Lecture 5 - Assembly Programming(II), Intro to Digital Filters

Lucia Fuchsová Charakteristiky pravděpodobnostních

Like bilateral Laplace transforms, ROC must be used to determine a unique inverse z-transform.

Lecture 19 IIR Filters

CITY UNIVERSITY LONDON. MSc in Information Engineering DIGITAL SIGNAL PROCESSING EPM746

EE 225D LECTURE ON DIGITAL FILTERS. University of California Berkeley

Modelovanie a simulácia logických systémov - proces návrhu íslicových systémov - CAD nástroje

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY

2. Typical Discrete-Time Systems All-Pass Systems (5.5) 2.2. Minimum-Phase Systems (5.6) 2.3. Generalized Linear-Phase Systems (5.

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY. Robustné metódy vo faktorovej analýze

Platforma průmyslové spolupráce

FUZZY-NEURO ALGORITMY MODELOVANIA NELINEÁRNYCH PROCESOV V DOPRAVE

EECE 301 Signals & Systems Prof. Mark Fowler

Lecture 7 Discrete Systems

Solution Methods for Beam and Frames on Elastic Foundation Using the Finite Element Method

RIEŠENIE PROBLÉMOV METÓDOU MONTE CARLO V TABUĽKOVOM KALKULÁTORE MS EXCEL ÚVOD

Univerzita Karlova v Praze. Matematicko-fyzikální fakulta DIPLOMOVÁ PRÁCE. Matúš Kepič

UNIVERZITA KOMENSKÉHO V BRATISLAVE FAKULTA MATEMATIKY, FYZIKY A INFORMATIKY MODELOVANIE VEKU ÁUT V PREVÁDZKE

3.1 TEÓRIA FEI TU V KOŠICIACH P3 - KOMBINAČNÉ OBVODY LIST Č.1

ODHAD PARAMETROV VŠEOBECNÉHO PARETOVHO ROZDELENIA SOFTVÉROM EVA V PROSTREDÍ JAZYKA R.

The Johns Hopkins University Department of Electrical and Computer Engineering Introduction to Linear Systems Fall 2002.

Transcription:

FAKULTA ELEKTROTECHNIKY A INFORMATIKY STU V BRATISLAVE Bc. Milan Slama ZVUKOVÝ EFEKT CHORUS S POUŽITÍM DSP Diplomová práca FEI-5404-22390 Študijný program: Rádioelektronika Pracovisko: Katedra rádioelektroniky Vedúci diplomovej práce: Ing. Peter Kubinec Bratislava, máj 2010

ANOTÁCIA Slovenská technická univerzita v Bratislave FAKULTA ELEKTROTECHNIKY A INFORMATIKY Študijný program: RÁDIOELEKTRONIKA Autor: Bc. Milan Slama Názov diplomovej práce: Zvukový efekt chorus s použitím DSP Vedúci diplomovej práce: Ing. Peter Kubinec Termín odovzdania: máj, 2010 Táto práca sa zaoberá analýzou a simuláciou efektu chorus, ktorý vzniká pri speve viacerých hlasov unisono. Spomenieme tu základné fakty o ľudskom hlase a zborovom speve. Taktiež popíšeme nástroje na frekvenčnú a časovo-frekvenčnú analýzu zvukového signálu, ako sú fourierova transformácia a spektrogram. Pre účely analýzy sme realizovali záznam jednotlivých hlasov zboru a pomocou algoritmu v programe Matlab sme analyzovali odchýlky intonácie zaznamenaných hlasov. Efektívna implementácia efektu chorus je vo väčšine prípadov založená na viacerých oneskorovacích linkách, ktoré patria do kategórie lineárnych, časovo invariantných (LDI) sústav. Oneskorenie týchto oneskorovacích liniek je riadené pseudonáhodným priebehom generovaným pomocou generátora MLS signálu a filtrovaným pomocou sústavy IIR filtrov. V práci teda uvedieme základné vlastnosti LDI sústav a IIR filtrov a princípy generovania MLS signálu. Navrhnutý algoritmus efektu chorus je založený na jednom kruhovom bufferi, po ktorom sa pohybujú jeden zapisovací a dva nezávislé čítacie smerníky. Poloha čítacích smerníkov sa počíta z polohy zapisovacieho smerníka v každom cykle a závisí od hodnoty riadiaceho signálu z MLS generátora. V práci taktiež uvádzame vzťah medzi odchýlkou intonácie (frekvenčným posunom) a zmenou veľkosti oneskorenia oneskorovacej linky. Pri implementácii riadenia oneskorenia efektu chorus sme teda použili parametre riadiaceho signálu, ktoré sme získali z analýzy intonácie v programe Matlab. Funkčnosť navrhnutého riešenia sme overili meraním a posluchom.

ANNOTATION Slovak University of Technology in Bratislava FACULTY OF ELECTRICAL ENGINEERING AND INFORMATION TECHNOLOGY Degree Course: RADIOELECTRONICS... Author: Bc. Milan Slama... Title of the diploma theses: Sound Effect Chorus Based on DSP... Supervisor: Ing. Peter Kubinec Submission time: May 2010 This work deals with the analysis and simulation of chorus effect which occurs when the number of voices are singing in unison. The basic facts about the human voice and choir singing are mentioned in this work. Tools for frequency and time-frequency analysis of the audio signal, such as Fourier transform and spectrogram are described. For purposes of analysis, we made a record of individual voices in the choir. Using the algorithm in Matlab, we analyzed the intonation deviations of the recorded voice. Effective implementation of the chorus effect is mostly based on several delay lines, which belong to the category of linear time-invariant (LTI) systems. The delay of the delay line is controlled by pseudorandom signal generated by the MLS generator and filtered by IIR filters. In this work we will therefore mention essential characteristics of LTI systems and IIR filters and principles of MLS signal generation. The proposed chorus effect algorithm is based on a single circular buffer with one writing and two independent reading pointers. Position of the reading pointer is calculated from the writer pointer location in each cycle and depends on the value of the control signal from the MLS generator. This paper also indicates the relationship between intonation deviation (frequency shift) and change of the delay size of the delay line. In the implementation of chorus effect, we used the parameters of the control signal which we obtained from the analysis of intonation in Matlab. The functionality of the proposed solution was verified by measurement and listening.

Čestné vyhlásenie Vyhlasujem, že som diplomovú prácu vypracoval samostatne s využitím uvedených zdrojov literatúry.... vlastnoručný podpis V Bratislave, dňa...

Poďakovanie Touto cestou chcem poďakovať Ing. Petrovi Kubincovi za trpezlivosť a za cenné rady, návrhy a pripomienky k diplomovej práci.

Obsah Obsah...7 Zoznam obrázkov...9 Zoznam tabuliek...11 Zoznam použitých skratiek a symbolov...12 1 Úvod...14 2 Vlastnosti zborového spevu...15 2.1 Vzťah dvoch tónov a intonácia...15 2.2 Niektoré vlastnosti zborového spevu...16 3 Zvukový efekt Chorus...18 3.1 Spôsoby realizácie zvukového efektu Chorus...18 3.2 Charakteristické parametre zvukového efektu chorus...19 3.2.1 Delay...19 3.2.2 Šírka modulácie (Sweep Depth/Width, Modulation Range)...20 3.2.3 Tvar priebehu LFO...20 3.2.4 Rýchlosť (Speed,Rate)...21 3.2.5 Počet hlasov...21 3.3 Vzťah medzi frekvenčným posunom a zmenou oneskorenia oneskorovacej linky.22 4 Lineárne diskrétne sústavy...26 4.1 Diferenčná rovnica LDI sústavy...26 4.2 Prenosová funkcia a frekvenčná charakteristika LDI sústavy...27 4.3 Časové charakteristiky LDI sústavy...29 4.4 Modelovanie LDI sústav...31 4.4.1 FIR sústavy...33 4.4.2 IIR sústavy...34 5 Nástroje na frekvenčnú a časovo-frekvenčnú analýzu zvukového signálu...35 5.1 Fourierove transformácie pre spojitý/diskrétny čas/frekvenciu...35 5.2 Použitie okien...38 5.3 Časovo-frekvenčná analýza spektrogram...39 6 Generovanie pseudonáhodného signálu...41 6.1 Postupnosti s maximálnou dĺžkou (MLS)...41 7 Analýza intonácie záznamu ľudského spevu...43 7.1 Hudobný materiál pre analýzu intonácie...43 7.1.1 Viacstopý záznam jednotlivých hlasov speváckeho zboru...44 7.1.2 Jednostopý záznam spevu...44 7.1.3 Úprava zaznamenaného materiálu v programe Cool Edit...45 7.2 Analýza intonácie v programe Matlab...48 7

8 Simulácia efektu chorus na starterkite so signálovým procesorom TMS320C26...55 8.1 Architektúra signálového procesora TMS320C26...55 8.1.1 Centrálna aritmeticko-logická jednotka (CALU)...55 8.1.2 Pomocná aritmetická jednotka (ARAU)...57 8.1.3 Organizácia pamäte...58 8.1.4 Pamäťovo mapované registre...59 8.1.5 Obvod analógového rozhrania TLC32040...59 8.2 Implementácia oneskorovacích liniek na TMS320C26...62 8.2.1 Matematický opis a modely oneskorovacích liniek...62 8.2.2 Implementácia viacerých oneskorovacích liniek...66 8.3 Implementácia variabilného oneskorenia na TMS320C26...70 8.3.1 Generátor MLS signálu...70 8.3.2 Filtrácia signálu MLS...73 9 Meranie navrhnutého zvukového efektu chorus...80 9.1 Namerané frekvenčné charakteristiky navrhnutého zvukového efektu Chorus...80 9.2 Subjektívne zhodnotenie navrhnutého zvukového efektu...84 10 Záver...85 11 Zoznam použitej literatúry...86 12 Zoznam príloh...88 13 Príloha A: Výpis programu intonation.m...89 14 Príloha B: Výpis programu ch_mls.asm...92 8

Zoznam obrázkov Obr. 3.1 Základná bloková schéma efektu Chorus Obr. 3.2 Vzťah časových parametrov efektu Chorus Obr. 3.3 Vybrané priebehy LFO Obr. 3.4 Bloková schéma Chorusu s dvoma hlasmi Obr. 3.5 Kruhový buffer s naznačením pohybu čítacieho smerníka Obr. 4.1 Lineárna diskrétna časovo invariantná sústava Obr. 4.2 Impulzová charakteristika LDI sústavy Obr. 4.3 Prepojenie blokov: a) kaskádne b) paralelné c) spätnoväzobné Obr. 4.4 Priamy model FIR filtra Obr. 4.5 Priamy model IIR filtra N-tého rádu Obr. 6.1 Posuvný register dĺžky m = 7 so spätnou väzbou Obr. 7.1 Kánon Laudate Dominum Michaela Praetoria Obr. 7.2 Štvorstopý záznam zborového spevu Obr. 7.3 Spektrogram zaznamenaného spevu a jeho detail Obr. 7.4 Časový priebeh zaznamenaného signálu s vyznačenými časťami s rôznou filtráciou Obr. 7.5 Nastavenie použitých FFT filtrov a) f1 = 240 Hz, b) f2 = 320 Hz Obr. 7.6 Spektrogram záznamu ľudského hlasu s odfiltrovanými vyššími harmonickými zložkami Obr. 7.7 Vývojový diagram programu na analýzu intonácie v prostredí Matlab Obr. 7.8 Rez spektrogramom v čase t = 4 s Obr. 7.9 Testovanie chýb vzniknutých nehudobnými zvukmi v nahrávke Obr. 7.10 Zaznamenaná a referenčná výška tónu s vyznačenými chybami Obr. 7.11 Notový záznam skladby a zaznamenaná a referenčná výška tónu po ošetrení chýb Obr. 7.12 Odchýlky zaznamenaných tónov od základných frekvencií v centoch Obr. 8.1 Bloková schéma TMS320C26 Obr. 8.2 Bloková schéma obvodu TLC 32040 Obr. 8.3 Simulácia modulovej frekvenčnej charakteristiky jednej oneskorovacej linky Obr. 8.4 Štruktúra oneskorovacej linky Obr. 8.5 Simulácia modulovej frekvenčnej charakteristiky dvoch oneskorovacích liniek Obr. 8.6 Štruktúra dvoch oneskorovacích liniek Obr. 8.7 Simulácia frekvenčnej charakteristiky pre konkrétne hodnoty oneskorení 9

Obr. 8.8 Detail simulácie frekvenčnej charakteristiky pre konkrétne hodnoty oneskorení Obr. 8.9 Princíp činnosti jedného kruhového buffera s viacerými smerníkmi Obr. 8.10 Výpočet adresy prvého čítacieho smerníka Obr. 8.11 Čítanie vzorky z vypočítanej adresy čítacieho smerníka Obr. 8.12 Zápis najnovšej vzorky z prevodníka a testovanie konca buffera Obr. 8.13 Násobenie pomocou inštrukcie MAC Obr. 8.14 Zdrojový kód generátora MLS signálu Obr. 8.15 Detail nameraného priebehu z výstupu realizovaného generátora MLS signálu Obr. 8.16 Model dvoch IIR filtrov prvého rádu zapojených do kaskády Obr. 8.17 Implementácia IIR filtra prvého rádu Obr. 8.18 Nameraný priebeh z výstupu sústavy IIR filtrov s použitím a) 16 x 16 bitového násobenia; b)16 x 32 bitového násobenia Obr. 8.19 Princíp 16 x 32 bitového násobenia Obr. 8.20 Implementácia IIR filtra prvého rádu s použitím 16 x 32 bitového násobenia Obr. 8.21 Detail nameraného signálu z výstupu IIR filtra Obr. 8.22 Úprava riadiaceho signálu pre riadenie veľkosti oneskorenia oneskorovacej linky Obr. 8.23 Bloková schéma odvodenia riadiacich signálov pre riadenie oneskorenia oneskorovacích liniek zo signálu MLS Obr. 9.1 Bloková schéma merania Obr. 9.2 Nameraná modulová frekvenčná charakteristika pre oneskorenia M1 = 358 a M2 = 537 vzoriek Obr. 9.3 Detail nameranej modulovej frekvenčnej charakteristiky z obr. 9.2 Obr. 9.4 Nameraná modulová frekvenčná charakteristika pre oneskorenia M1 = 390 a M2 = 450 vzoriek Obr. 9.5 Detail nameranej modulovej frekvenčnej charakteristiky z obr. 9.4 10

Zoznam tabuliek Tab. 4.1 Základné funkčné bloky LDI sústavy 11

Zoznam použitých skratiek a symbolov ACC Accumulator, akumulátor A/D, D/A analógovo-digitálny, digitálno analógový AIC Analog Interface Circuit, obvod analógového rozhrania ALU Arithmetic Logic Unit, aritmeticko-logická jednotka AR Auxiliary Register, pomocný register ARAU Auxiliary Register Arithmetic Unit, pomocná aritmetická jednotka bpm Beats Per Minute, úderov za minútu c 0 rýchlosť šírenia sa zvuku CALU Central Arithmetic Logic Unit, centrálna aritmeticko-logická jednotka DFT diskrétna fourierova transformácia dma Data Memory Address, dátová pamäťová adresa DP Data Page Pointer, smerník dátovej stránky DP filter typu dolný priepust DRR Data Recieve Register, prijímací register DSP digitálny signálový procesor DXR Data Transmit Register, vysielací register F 0 Fundamental Frequency, základná frekvencia F S Sampling Frequency, vzorkovacia frekvencia FFT Fast Fourier Transform, rýchla fourierova transformácia FIR Finite Impulse Response, filter s konečnou impulzovou odozvou FT fourierova transformácia Hz Herz, jednotka frekvencie IIR Infinite Impulse Response, filter s nekonečnou impulzovou odozvou LDI lineárna časovo invariantná sústava LSB Least Significant Bit, bit s najmenšou váhou MLS Maximum Length Sequence, postupnosť s maximálnou dĺžkou MSB Most Significant Bit, bit s najväčšou váhou PP filter typu pásmový priepust pma Program Memory Address, programová pamäťová adresa PR Product Register, výsledkový register RAM Random Access Memory 12

SPL Sound Pressure Level, úroveň akustického tlaku TR Temporary Register, dočasný register T S vzorkovacia perióda 13

1 Úvod V dnešnej dobe existuje mnoho aplikácií využívajúcich digitálne signálové procesory (DSP). Dôvodom častého využívania digitálneho spracovania signálov sú mnohé výhody oproti analógovému spracovaniu. Sú to hlavne vysoká flexibilita pri návrhu a vývoji aplikácií, menšie rozmery súčiastok, stabilita parametrov, nižšia cena, atď. V hudobných a akustických aplikáciách sa DSP využívajú hlavne na záznam a úpravu zvuku, komprimáciu a na realizáciu rôznych zvukových efektov. V tejto práci sa budeme zaoberať simuláciou efektu chorus, ktorý vzniká pri zborovom speve, s použitím Starterkitu so signálovým procesorom TMS320C26. Pri návrhu algoritmu efektu chorus budeme vychádzať z analýzy zvukového záznamu ľudského spevu, ktorého nahrávanie budeme sami realizovať. V druhej kapitole popíšeme efekt chorus ako jav, ktorý vzniká pri zborovom speve. Taktiež tu uvedieme a vysvetlíme základné pojmy týkajúce sa ľudského spevu a niektoré pojmy z hudobnej teórie, ktoré budeme ďalej v našej práci používať. V tretej kapitole popíšeme možnosti simulácie efektu chorus, popíšeme základné parametre tohto efektu a odvodíme vzťah medzi frekvenčným posunom signálu a zmenou veľkosti oneskorenia oneskorovacej linky. Na realizáciu zvukového efektu chorus musíme vedieť tento efekt najprv matematicky opísať. Preto v štvrtej kapitole uvádzame poznatky o lineárnych diskrétnych sústavách (LDI), ktoré pri matematickom opise efektu Chorus využijeme. Ďalej popíšeme nástroje na frekvenčnú a časovo frekvenčnú analýzu zvukového signálu, ktoré použijeme na analýzu zaznamenaného spevu. V šiestej kapitole popíšeme, akým spôsobom budeme generovať pseudonáhodný priebeh, ktorým budeme riadiť zmenu oneskorenia navrhovaného efektu chorus. Prvou praktickou kapitolou tejto práce bude siedma kapitola, v ktorej popíšeme akým spôsobom sme zaznamenali, spracovali a analyzovali zvukový záznam reálneho ľudského spevu. V nasledujúcej časti uvedieme akým spôsobom sme implementovali algoritmus efektu chorus do prostredia Starterkitu so signálovým procesorom TMS320C26 od firmy TEXAS INSTRUMENTS. V poslednej kapitole uvedieme a zhodnotíme výsledky meraní navrhnutého zvukového efektu. 14

2 Vlastnosti zborového spevu V tejto kapitole zhrnieme poznatky o ľudskom speve, pričom sa zameriame predovšetkým na vlastnosti zborového spevu. Najskôr si však vysvetlíme základné pojmy súvisiace so spevom a pojmy z hudobnej teórie, ktoré budeme ďalej v našej práci používať. 2.1 Vzťah dvoch tónov a intonácia V hudobnej teórii sa vzťah dvoch tónov označuje ako interval. Jednotlivé intervaly sú dané pomerom frekvencií daných tónov. Základné intervaly sú prima (alebo unisono) s pomerom frekvencií 1:1 a oktáva s pomerom frekvencií 2:1. Oktáva sa delí na dvanásť rovnakých častí poltónov. Pri temperovanom ladení (equal temperament) má každý poltón (dve susedné klávesy na klavíri) presne 100 centov. Jeden cent zodpovedá pomeru dvoch frekvencií f 1 a f 2 f f 1 2 = 2 1 1200. (1.1) Všeobecne, ak poznáme frekvencie f 1 a f 2 dvoch tónov, potom veľkosť intervalu v centoch ct medzi týmito tónmi môžeme vyjadriť vzťahom: f1 ct = 1200 log 2. (1.2) f 2 Ak pomer frekvencií je 2:1 (teda oktáva), potom: 2 f 2 ct = 1200 log 2 = 1200 log 2 2 = 1200 centov. (1.2) f 2 Je známe, že ľudský hlas ako hudobný nástroj, podobne ako bezpražcové strunové nástroje, nie je viazaný na konkrétny systém ladenia a teda výška tónu sa môže meniť vždy 15

keď tón zaznie. Schopnosť spievať bez intonačných chýb sa považuje za jednu z najdôležitejších zručností profesionálneho speváka. Spievanie bez chýb znamená, že poslucháč vníma spievané tóny ako súčasti hudobnej stupnice, na ktorej je predvádzané hudobné dielo založené. Avšak, v závislosti od hudobného kontextu môžu aj skúsení poslucháči niekedy označiť za správnu intonáciu tónov ak sú v rozmedzí do ±30 centov [11]. Vo všeobecnosti, väčšina expertov vníma tóny ako presne intonované, ak odchýlka neprekročí ±7 centov [11]. 2.2 Niektoré vlastnosti zborového spevu Ľudský hlas je zložitý nástroj, ktorý závisí od mnohých fyziologických a psychologických aspektov. Mechanické a akustické vlastnosti hlasu ponúkajú mnoho možností na výskum. Tieto možnosti sú ešte znásobené, keď sa individuálny hlas spojí s ďalšími spevákmi a vytvorí spevácky zbor. Pri speváckom zbore vzniká kombináciou a vzájomnou interakciou mechanických a akustických vlastností jednotlivých sólových hlasov tzv. zborový zvuk. V tejto časti zhrnieme výsledky z rôznych štúdií, ktoré sa zaoberali rôznymi parametrami zborového zvuku [11]. Zborový zvuk (choral blend) Na rozdiel od sólového spevu, keď hlas sólistu musí vyniknúť nad doprovodnou hudbou, pri zborovom speve je dôležité aby spev jednotlivca splynul s ostatnými hlasmi a vytvorili tak jednotný zborový zvuk. Definície zborového zvuku sa však líšia a často obsahujú v podstate všetky aspekty kvalitného zborového spevu. Súčasní zboroví dirigenti sa nakláňajú skôr k takému štýlu skúšania, ktorý sa usiluje dosiahnuť dostatočnú úroveň zborového zvuku bez obetovania zdravej vokálnej techniky. Tento spôsob skúšania znamená, že dirigenti sa nesnažia potlačiť to osobité v každom individuálnom hlase a úplne zjetnotiť hlasy spevákov. Intonačná presnosť Intonačná presnosť zborových spevákov závisí od niekoľkých faktorov [11]. Prvým faktorom je rozdiel v úrovni akustického tlaku (SPL) medzi zvukom, ktorý spevák počuje zo svojho vlastného hlasu (spätná väzba) a od ostatných spevákov (referencia). Intonačná 16

presnosť tiež závisí od spektrálnej charakteristiky zvuku, ktorý speváci počujú. Prítomnosť spoločných harmonických v intervaloch tvorí vodidlo k intonácii tým, že pri nepresnom ladení vznikajú rázy. Naviac, prítomnosť vyšších harmonických zložiek zlepšuje intonačnú presnosť, pravdepodobne kvôli tomu, že nižšie harmonické sú viac maskované spevákovým vlastným hlasom. Prítomnosť vibráta redukuje intonačnú presnosť, pravdepodobne tým, že eliminuje možnosť použiť ako vodidlo k intonácii rázy medzi spoločnými harmonickými. Ternström (1993) skúmal tolerančné úrovne a preferencie skúsených poslucháčov na rozptyl základnej frekvencie F 0 (fundamental frequency), teda na kolísanie výšky tónu. Zistil, že maximálne tolerovateľné kolísanie výšky tónu malo priemerne štandardnú odchýlku 14 centov (to znamená, že 95% spevákov produkovalo priemernú základnú frekvenciu v rozmedzí ±28 centov od skupinovej priemernej základnej frekvencie). Preferované kolísanie výšky tónu má štandardnú odchýlku 0 5 centov. Intenzita spevu Zborový speváci majú tendenciu zvyšovať intenzitu spevu, ak sa zvyšuje intenzita okolitého zvuku (referencie). Táto tendencia je známa ako Lombardov efekt [11]. Výskum naznačuje, že speváci sa dokážu naučiť potlačiť tento efekt a vedome regulovať intenzitu spevu aj v prítomnosti maskovacieho zvuku. Existuje množstvo ďalších aspektov, ktoré je možné pri zborovom speve sledovať. Sú to napr. vyváženie jednotlivých hlasov, rozmiestnenie spevákov, akustické vlastnosti priestorov, atď. Týmito aspektmi sa však v našej práci nebudeme zaoberať a preto ich tu neuvádzame. 17

3 Zvukový efekt Chorus V tejto časti sa budeme zaoberať vlastnosťami a parametrami efektu chorus, ako zariadenia, ktoré simuluje reálny zborový efekt, ktorý vzniká pri speve viacerých hlasov unisono. Keďže prednes unisono nie je nikdy úplne presný, efekt chorus simuluje túto vlastnosť vytváraním nezávisle modifikovaných kópii vstupného signálu. Modifikácia môže zahŕňať oneskorenie, frekvenčný posun a zmenu amplitúdy. Oneskorenie ľahko dosiahneme použitím oneskorovacej linky. Frekvenčný posun (efekt rozladenia ) dosiahneme zavedením premenlivej doby oneskorenia oneskorovacej linky. Doba oneskorenia pri efekte chorus sa pohybuje od 20 ms do 30 ms [7]. Spätná väzba sa väčšinou nepoužíva. Typický chorus je založený na niekoľkých časovo premenných oneskorovacích linkách. Pred zavedením digitálnych oneskorovacích liniek boli používane siete LC členov počnúc v štyridsiatych rokoch 20. storočia organom Hammond [7]. 3.1 Spôsoby realizácie zvukového efektu Chorus Efektívna implementácia efektu chorus by mala byť založená na viacerých oneskorovacích linkách s premenlivými hodnotami oneskorenia. Doba oneskorenia osciluje okolo hodnoty, ktorú by mala pri implementácii oneskorovača s fixnou dobou oneskorenia. V prípade stereo chorusu môžu byť jednotlivé hlasy rôzne umiestnené na stereo báze. Teraz popíšeme realizáciu variabilného (časovo-premenlivého) oneskorenia oneskorovacej linky. Najjednoduchším riešením je použitie nejakého periodického priebehu, napríklad sínusového, ktorý nám bude veľkosť oneskorenia riadiť. Vo všeobecnosti sa používa pomalobežný oscilátor( Low Frequency Oscillator LFO), ktorého frekvencia zvyčajne nepresahuje 3 Hz [7]. Charakter zvuku efektu chorus môžeme potom riadiť zmenou frekvencie, amplitúdy a tvaru tohto periodického priebehu. Základnú blokovú schému efektu chorus s použitím LFO môžeme vidieť na obr. 3.1. 18

Obr. 3.1 Základná bloková schéma efektu chorus. Variabilné oneskorenie môžeme realizovať aj inými spôsobmi. Napríklad namiesto LFO môžeme použiť náhodné zmeny hodnoty oneskorenia. Takýto priebeh môžeme generovať pomocou generátora pseudonáhodného signálu. Tento spôsob sa môže viac približovať reálnemu efektu chorus, ktorý vzniká pri speve viacerých hlasov unisono. Pri spievaní unisono taktiež vznikajú medzi spevákmi rozdiely v hlasitosti spievaných tónov. Ďalším priblížením reálnemu chorusu teda môže byť zmena amplitúdy oneskoreného signálu. Tento parameter môžeme riadiť ďalším LFO. 3.2 Charakteristické parametre zvukového efektu chorus V tejto časti opíšeme charakteristické parametre zvukového efektu chorus tak, ako ich vo väčšine prípadov interpretujú výrobcovia bežne dostupných efektových zariadení [8]. 3.2.1 Delay Parameter delay riadi veľkosť hodnoty oneskorenia. Vo väčšine prípadov udáva strednú hodnotu oneskorenia, okolo ktorej okamžitá hodnota oneskorenia osciluje. Ak zvolíme delay veľmi malý, chorus sa bude správať ako efekt flanger. Typické hodnoty oneskorenia bývajú 20 až 30 ms [8]. Tento parameter predstavuje veľkosť jednosmernej zložky signálu z LFO. 19

3.2.2 Šírka modulácie (Sweep Depth/Width, Modulation Range) Týmto parametrom riadime rozsah hodnôt oneskorenia. Vyjadruje sa zvyčajne v percentách, alebo v milisekundách. Šírka modulácie nám vlastne predstavuje amplitúdu LFO riadiaceho veľkosť oneskorenia. Vzťah parametra delay a šírky modulácie môžeme vidieť na obr. 3.2. Šírka modulácie tiež ovplyvňuje frekvenčný posun, ktorý vzniká pri časovo premenných oneskoreniach a spôsobuje moduláciu výšky tónu. Čím väčší je rozsah oneskorení (teda šírka modulácie), tým zreteľnejšie sa prejaví modulácia výšky tónu na výslednom zvuku. Obr. 3.2 Vzťah časových parametrov efektu chorus [8] 3.2.3 Tvar priebehu LFO Tvar priebehu LFO nám ukazuje akým spôsobom sa bude oneskorenie meniť. Keď priebeh dosiahne maximum, oneskorenie efektu má maximálnu hodnotu. Zároveň, keď priebeh klesá, výška tónu sa znižuje. Niektoré bežne používané priebehy veľkosti oneskorenia (frekvencia LFO je 2Hz, šírka modulácie je 10 ms) sú na obr. 3.3. Množstvo modulácie výšky tónu je spojené s rýchlosťou zmien priebehu LFO. Strmšie zmeny priebehu vytvárajú väčšiu moduláciu, zatiaľ čo plochý priebeh má na výšku tónu iba zanedbateľný vplyv. 20

Obr. 3.3 Vybrané priebehy LFO 3.2.4 Rýchlosť (Speed,Rate) Tento parameter určuje rýchlosť, s akou sa priebeh LFO opakuje. Je to teda perióda (resp. frekvencia) LFO. Rovnako ako predchádzajúce parametre má rýchlosť vplyv na moduláciu výšky tónu. Zvýšenie rýchlosti vlastne zodpovedá stlačeniu priebehu LFO, čím sa priebeh stáva strmším a dochádza k väčšiemu frekvenčnému posunu výstupného signálu. 3.2.5 Počet hlasov Až doteraz sme uvažovali chorus len s jedným hlasom, teda s jednou oneskorovacou linkou. V praxi sa však používajú efekty s viacerými paralelne zapojenými oneskorovacími linkami. Takýto efekt modeluje situáciu, keď hrá viacero nástrojov to isté, pričom každá oneskorovacia linka predstavuje jeden hlas.. Vo väčšine prípadov využíva viachlasý chorus jeden priebeh LFO pre všetky hlasy, avšak každý hlas má inú fázu. To znamená, že v určitom časovom okamžiku sa každý hlas nachádza v inom bode priebehu, teda majú rozdielne oneskorenia. Samozrejme je možné realizovať chorus, kde každý hlas používa vlastný priebeh LFO a dokonca aj vlastnú rýchlosť. Veľa hlasov a ich parametrov však kladie vyššie nároky na obsluhu efektu a tiež na výpočtovú náročnosť použitého algoritmu. 21

Blokovú schému Chorusu s dvoma hlasmi (s dvoma oneskorovacími linkami) môžeme vidieť na obr. 3.4. Obr. 3.4 Bloková schéma Chorusu s dvoma hlasmi 3.3 Vzťah medzi frekvenčným posunom a zmenou oneskorenia oneskorovacej linky V tejto časti popíšeme vzťah medzi frekvenčným posunom signálu a zmenou veľkosti oneskorenia oneskorovacej linky. Je známe, že pri oneskorovacích linkách s v čase sa meniacim oneskorením vzniká frekvenčný posun[6]. Z tohto dôvodu sa takéto oneskorovacie linky využívajú taktiež pri simulácii frekvenčného posunu u Dopplerovho javu. Túto analógiu využijeme na popísanie vzťahu medzi frekvenčným posunom a časovou zmenou oneskorenia oneskorovacej linky. Dopplerov jav spôsobuje, že pri vzájomnom pohybe zdroja zvuku a/alebo poslucháča sa výška tónu zvuku zdroja javí ako klesajúca, resp. stúpajúca. Ak sa zdroj zvuku približuje k poslucháčovi, výška tónu, ktorý poslucháč počuje stúpa, keď sa zdroj zvuku vzďaľuje, výška počutého tónu klesá. Z [6] vieme, že dopplerov frekvenčný posun je daný ako v 1+ c = ω 1 c ls 0 ω l s, (3.1) vsl 0 22

kde ω s je kruhová frekvencia signálu vysielaného zdrojom, ω l je frekvencia signálu prijatého poslucháčom, v ls označuje rýchlosť poslucháča vzhľadom na prenosové médium v smere zdroja, v sl označuje rýchlosť zdroja vzhľadom na prenosové médium v smere poslucháča a c 0 označuje rýchlosť šírenia sa zvuku. Ak uvažujeme iba s pohybom poslucháča, potom po dosadení v sl = 0 do (3.1) dostaneme v ls c 0 ω l = ωs (1 + ). (3.2) Za analógiu ku vzduchu, ako prenosovému médiu, môžeme považovať oneskorovaciu linku tvorenú kruhovým bufferom, kde sa zapisovací a čítací smerník (adresa) pohybujú určitou rýchlosťou zodpovedajúcou rýchlosti c 0 (obr. 3.5). Analógiou ku zdroju zvuku je zapisovací smerník a analógiou k poslucháčovi je smerník čítací. Ak sa smerníky pohybujú rovnakou rýchlosťou, potom čítací smerník číta presne to isté, čo zapisovací smerník zapíše. V tomto prípade budú oba smerníky inkrementované s každou novou prijatou vzorkou o jedno pamäťové miesto. Ak sa čítací smerník pohybuje vzhľadom na zapisovací, potom vzniká Dopplerov frekvenčný posun podľa (3.2). V tejto analógii, zmena inkrementovania čítacieho smerníka z 1 na poslucháča vzhľadom na zdroj zvuku rýchlosťou v ls. v 1 + ls zodpovedá pohybu c 0 Obr. 3.5 Kruhový buffer s naznačením pohybu čítacieho smerníka Ak označíme x(t) vstupný signál oneskorovacej linky s premenlivým oneskorením, potom výstupný signál môžeme označiť y t) = x( t D D ), (3.3) ( t 23

kde D označuje fixné oneskorenie v sekundách a D t označuje časovo premenlivé oneskorenie (kladné alebo záporné). Pre účely analýzy frekvenčného posunu spôsobeného premenlivou hodnotou oneskorenia dosadíme za x(t) komplexný sínusový signál s frekvenciou ω s x( t) = e jωst. (3.4) Výstup teraz bude s t y( t) = x( t D D t ) = e jω ( t D D ). (3.5) Okamžitá fáza tohto signálu je Θ t) = y( t) = ω ( t D D ). (3.6) ( S t Deriváciou okamžitej fázy dostaneme okamžitú kruhovú frekvenciu výstupného signálu ω = ω ( 1 t ), (3.7) l s D kde ω l predstavuje frekvenciu výstupného signálu a Dt d dt D t predstavuje časovú deriváciu oneskorenia D t, teda rýchlosť časovej zmeny oneskorenia. Z (3.7) môžeme napísať: ωs ωl ωl Dt = = 1, (3.8) ωs ωs čo zodpovedá relatívnemu frekvenčnému posunu. Ak za ω l dosadíme z (3.2) vidíme, že časovo premenlivé oneskorenie prirodzene simuluje Dopplerov jav, pričom vls t = c 0 D. (3.9) Aby sme časovo premenlivé oneskorenie implementovali do oneskorovacej linky, musíme zaviesť parameter zmeny oneskorenia g, a zmeniť inkrementáciu čítacieho smerníka z 1 na 1 g. Keď g = 0, potom máme oneskorovaciu linku s fixným oneskorením, a v (3.7) 24

bude D t = 0. Ak g > 0, potom oneskorenie narastá o g vzoriek za vzorku, čo môžeme tiež interpretovať ako sekúnd za sekundu, t.j. Dt = g. Z (3.8) teda dostaneme g ω l = 1. (3.10) ω s 25

4 Lineárne diskrétne sústavy Efekt chorus pozostáva z oneskorovacích liniek, ktoré môžeme zaradiť medzi LDI sústavy. Preto sa v tejto kapitole budeme venovať charakteristikám a modelovaniu lineárnych diskrétnych časovo invariantných (LDI) sústav. Uvedieme opis lineárnej diskrétnej sústavy pomocou lineárnej diferenčnej rovnice, časovými a frekvenčnými charakteristikami, pomocou rozloženia nulových bodov a pólov v z-rovine. Ďalej ukážeme, že LDI sústavy charakterizované lineárnou diferenčnou rovnicou s konštantnými koeficientmi možno opísať pomocou blokových zapojení a štruktúr zložených zo základných operácií ako je súčet, násobenie konštantou a oneskorenie. 4.1 Diferenčná rovnica LDI sústavy Budeme uvažovať prvky LDI sústavy len s jedným vstupom a jedným výstupom (obr. 4.1) [2]. Pre vstupný (budiaci) signál x[n] a výstupný signál y[n], t.j. odozvu, pričom n je celočíselná premenná, platí vzájomný vzťah, ktorý môžeme symbolicky zapísať: [ n] y[ n] x a. (4.1) Obr. 4.1 Lineárna diskrétna časovo invariantná sústava Diferenčná rovnica predstavuje matematický zápis pre výpočet výstupnej vzorky v čase n založený na predchádzajúcich a súčasných vzorkách vstupného signálu a predchádzajúcich vzorkách výstupného signálu v časovej oblasti. Všeobecnú diferenčnú rovnicu kauzálnej LDI sústavy môžeme napísať ako: y [] n = b x[ n] + b x[ n 1] +... + b x[ n M ] a y[ n 1] a y[ 0 1 M 1... = M k = 0 b k x N [ n k] ak y[ n k] k = 1 N n N ]=, (4.2) 26

kde x je vstupný signál, y je výstupný signál a čísla b k, k = 0,1,2,...,M a a k, k = 1,2,...,N sa nazývajú koeficienty diferenčnej rovnice. Ak sú koeficienty diferenčnej rovnice reálne čísla, filter označujeme ako reálny. V opačnom prípade je filter komplexný. Ako si môžeme všimnúť, na výpočet súčasného výstupu y[n] v (4.2) môžeme použiť aj predchádzajúce výstupné vzorky (ako napríklad y[n-1]). Použitie predchádzajúcich výstupných vzoriek označujeme ako spätná väzba. Každý filter, ktorý obsahuje jednu alebo viac spätných väzieb (N > 0) označujeme ako rekurzívny. Filter môžeme považovať za rekurzívny vtedy a len vtedy ak a k 0 pre niektoré k > 0. Rekurzívne filtre sa tiež nazývajú filtre s nekonečnou impulzovou odozvou (IIR Infinite Impulse Response). Ak nie je prítomná spätná väzba (a k = 0, pre všetky k > 0) filter sa nazýva nerekurzívny alebo filter s konečnou impulzovou odozvou (FIR Finite Impulse Response). 4.2 Prenosová funkcia a frekvenčná charakteristika LDI sústavy Prenosová funkcia poskytuje algebraickú reprezentáciu LDI sústavy. Prenosová funkcia lineárneho časovo invariantného diskrétneho filtra je definovaná ako: Y ( z) H ( z) = X ( z), (4.3) kde Y(z) označuje Z transformáciu výstupného signálu filtra y[n] a X(z) označuje Z transformáciu vstupného signálu filtra x[n]. Aplikujeme transformáciu Z na diferenčnú rovnicu (4.2): M k = 0 [ n k] } Z{ ak y[ Z{ y[ n]} = Z{ b x n k] }. (4.4) k N k = 1 Na základe vlastností transformácie Z môžeme urobiť nasledovné úpravy: N k = 0 a k Z M k k { y[ n k] } = bk Z{ x[ n k] } ak z Y ( z) = bk z X ( z) k = 0 N k = 0 M k = 0. (4.5) 27

Potom pre prenosovú funkciu LDI sústavy môžeme napísať: H () z Y ( z) X ( z) M k= 0 = = N K = 0 b a k k z z k k. (4.6) Tento vzťah môžeme upraviť ako: M 1 (1 ck z ) k = 1 H ( z) = H 0 N, (4.7) 1 (1 d z ) k = 1 k kde b 0 H 0 = je konštanta a c k, d k sú komplexne združené alebo reálne koeficienty. a0 Z (4.7) vyplýva, že ak položíme z = c k, dostaneme tzv. nulové body a ak z = d k, dostaneme zasa póly prenosovej funkcie H(z). Frekvenčnú charakteristiku (odozvu) LDI sústavy by sme mohli definovať ako frekvenčné spektrum výstupného signálu podelené spektrom signálu vstupného. Môžeme dokázať [5], že frekvenčná charakteristika LDI filtra sa rovná prenosovej funkcii H(z) vypočítanej na j T jednotkovej kružnici, t.j. ( e S ) H ω. V tomto výraze ω predstavuje kruhovú frekvenciu a T S je vzorkovacia perióda. Frekvenčná charakteristika špecifikuje zosilnenie a fázový posun, ktoré filter spôsobuje, pri každej frekvencii. Keďže T S je konštanta, frekvenčná j T charakteristika ( e S ) H ω je iba funkciou kruhovej frekvencie ω. Pretože ω je reálne číslo, môžeme frekvenčnú charakteristiku považovať za komplexnú funkciu reálnej premennej. Dosadením j T e ω S frekvenčnú charakteristiku sústavy: za z do rovnice prenosovej funkcie (4.6) dostaneme vzťah pre H jωts ( e ) Y(e X (e M jωts k= 0 = = jωt N S ) ) k= 0 b a k k e e -jkωt S -jkωt S. (4.8) 28

Keďže každé reálne číslo z môžeme reprezentovať jeho amplitúdou r a fázou Θ, t.j. z = re jθ, rovnako aj frekvenčnú charakteristiku môžeme rozdeliť na dve reálne funkcie, amplitúdovú frekvenčnú charakteristiku H(ωT S ) a fázovú frekvenčnú charakteristiku ϕ(ω T S ). Teda: H jωts jϕ( ωts ) ( e ) = H ( ωt S ). e. (4.9) Amplitúdová frekvenčná charakteristika LDI sústavy je definovaná ako amplitúda (modul) jωts komplexnej frekvenčnej charakteristiky H ( e ) filtra: jωts H ( ωts ) = H (e ). (4.10) Amplitúdová frekvenčná charakteristika predstavuje zosilnenie, ktoré filter poskytuje pri každej frekvencii ω T [ π, π ] S. Fázová frekvenčná charakteristika LDI sústavy je definovaná ako fáza (argument) jωts komplexnej frekvenčnej charakteristiky H ( e ) ϕ filtra: S ( ω T S jωt ) = H (e ). (4.11) Fázová frekvenčná charakteristika predstavuje fázový posun výstupného signálu filtra oproti vstupnému. 4.3 Časové charakteristiky LDI sústavy Pomocou prenosovej funkcie H(z) a frekvenčnej charakteristiky prenosovej funkcie môžeme opísať vlastnosti LDI sústavy vo frekvenčnej oblasti. Ďalšie vlastnosti LDI sústav môžeme opísať aj v časovej oblasti. Pri vytváraní časovej charakteristiky je vhodné využiť odozvu sústavy na jednotkový Kroneckerov impulz δ[n] alebo jednotkovú skokovú postupnosť σ[n]. U LDI sústav je vhodnejšia odozva h[n] na jednotkový impulz δ[n] nazývaná ako impulzová charakteristika sústavy (obr. 4.2). 29

Obr. 4.2 Impulzová charakteristika LDI sústavy ôžeme dokázať[5], že aplikovaním diskrétnej fourierovej transformácie na impulzovú j T charakteristiku h[n] získame frekvenčnú charakteristiku sústavy ( e S ) jω H ( e T S ) = FTD{ h[ n]} H ω :. (4.12) Pomocou takejto impulznej charakteristiky h[n] môžeme rozhodnúť o kauzálnosti sústavy. Kauzálna sústava je sústava, v ktorej zmeny výstupnej odozvy nepredbiehajú zmenu vstupného signálu a teda jej výstupná charakteristika y[n] je nulová pre všetky hodnoty n < 0. Zároveň môžeme rozhodnúť o konečnosti počtu členov postupnosti. V prípade, že impulzná charakteristika h[n] má konečný počet členov postupnosti hovoríme o sústavách typu FIR. V opačnom prípade hovoríme o sústavách typu IIR, ktoré majú nekonečnú impulzovú charakteristiku. 30

4.4 Modelovanie LDI sústav Pre implementáciu LDI sústavy je potrebné previesť jej matematické vyjadrenie pomocou diferenčnej rovnice (4.2) alebo prenosovej funkcie (4.6) do štruktúry, ktorá zodpovedá požadovanej realizácii. Takúto štruktúru vytvárame pomocou sústav, ktoré sú zložené z navzájom prepojených jednoduchých blokov. Prenosovej funkcie H(z) alebo diferenčná rovnica LDI sústavy obsahujú prvky, ktoré tvoria základné funkčné bloky pre účely modelovania. Tieto funkčné bloky môžeme vidieť v tabuľke 4.1.[2] Tab. 4.1 Základné funkčné bloky LDI sústavy Opis Symbolické označenie Rozvetvenie (uzol) Sumátor Násobička Posuvný register (oneskorovací člen) 31

Pre vytváranie zložitejších štruktúr z blokov existujú tri základné prepojenia medzi jednotlivými blokmi: a) kaskádne - bloky sa zapájajú za sebou v poradí (obr. 4.3a), čo umožňuje rozklad výslednej prenosovej funkcie H(z) na jednotlivé parciálne prenosové funkcie H j (z). H(z) je daná vzťahom: = = = k j j k z H z H z H z H z H 1 2 1 ) ( ) ( )... ( ) ( ) (, (4.13) b) paralelné - bloky sa zapájajú vedľa seba (obr. 4.3b), čo umožňuje rozklad výslednej prenosovej funkcie H(z) na jednotlivé čiastkové zlomky a je daná vzťahom: = + = + + + + = k j j k z H H z H z H z H H z H 1 0 2 1 0 ) ( ) (... ) ( ) ( ) (, (4.14) c) spätnoväzobné - (obr.4.3c), pričom výsledná prenosová funkcia má tvar: ) ( ) ( 1 ) ( ) ( 2 1 1 z H z H z H z H m =. (4.15) Obr. 4.3 Prepojenie blokov: a) kaskádne b) paralelné c) spätnoväzobné 32

4.4.1 FIR sústavy Sústavu FIR možno vyjadriť aj ako sústavu bez zavedenej spätnej väzby. To znamená, že výstupný signál y[n] závisí len od M + 1 vzoriek vstupného signálu x[n] Premenná M predstavuje rád LDI sústavy, ktorej dĺžka je (M + 1). FIR sústava je teda opísaná pre časovú oblasť diferenčnou rovnicou: y M [] n = bk x[ n k] k = 0 pre a 0 = 1, (4.16) s váhovacím koeficientom b k a oneskorenou vzorkou pre vstupný signál x[n-k]. Následne jeho prenosová funkcia bude mať tvar: H M k ( z) = b k z. (4.17) k = 0 Frekvenčná charakteristika FIR filtra bude: H M jωts jkωt ( e ) = bk e k= 0 S. (4.18) Na zostrojenie FIR filtra sa využijú funkčné bloky v tabuľke 4.1, ktoré opisujú vzťahy (4.16) a (4.17). Takto zostrojený model FIR filtra je znázornený na obr. 4.4 Obr. 4.4 Priamy model FIR filtra 33

4.4.2 IIR sústavy Vstupný signál pri IIR sústavách závisí ako od vstupného signálu x[n], tak aj od predchádzajúcich vzoriek výstupného signálu y[n-k]. Diferenčná rovnica IIR sústavy má tvar pre N > 0: y M [ n] = bk x[ n k] ak y[ k = 0 N k = 1 n k] pre a 0 = 1, (4.19) kde oneskorené vzorky sú vyjadrené pre vstupný signál x[n-k] a výstupný signál y[n-k], s váhovacími koeficientmi vstupného signálu b k a výstupného signálu a k. Prenosová funkcia IIR sústavy následne nadobudne pre M = N tvar: M k bk z k = 0 H ( z) = N. (4.20) 1+ k a z k = 1 k Pri modelovaní IIR filtra opísaného vzťahmi (4.19) a (4.20) využijeme funkčné bloky z tabuľky 4.1, pričom najprv modelujeme priamu časť IIR filtra a následne až spätnoväzobnú časť IIR filtra, ktorého zobrazenie je na obr. 4.5 (M = N). Obr. 4.5 Priamy model IIR filtra N-tého rádu 34

5 Nástroje na frekvenčnú a časovo-frekvenčnú analýzu zvukového signálu V tejto kapitole sa budeme venovať nástrojom na frekvenčnú a časovo frekvenčnú analýzu zvukového signálu, ktoré využijeme pri spracovaní a analýze zvukového záznamu reálneho ľudského spevu. Popíšeme základné vlastnosti Fourierovej transformácie (FT), Fourierovej transformácie diskrétnych signálov (FTD), diskrétnej Fourierovej transformácie (DFT) a spektrogramu. 5.1 Fourierove transformácie pre spojitý/diskrétny čas/frekvenciu Fourierova transformácia je operácia, ktorá signálu v časovej rovine priradí jeho obraz vo frekvenčnej rovine. Jej výsledkom je súbor komplexných koeficientov, ktoré hovoria o zastúpení frekvenčných zložiek v analyzovanom signáli, teda o veľkosti amplitúdy zložky a jej fázovom posune. Fourierova transformácia signálu x( t) C, t (, ) je definovaná ako [9] jωt X ( ω ) = x( t) e dt, (5.1) a inverzná transformácia je definovaná ako 1 j = ω ω t x( t) X ( ) e dω. [6] (5.2) 2π Pre existenciu Fourierovej transformácie signálu x(t) musí platiť podmienka x ( t) dt = M <. (5.3) 35

To znamená, že signál x(t) musí byť absolútne integrovateľný, čiže integrál (5.3) musí byť konvergentný [1]. Fourierova transformácia môže byť definovaná pre signály, ktoré sú diskrétne alebo spojité v čase a trvajúce konečne alebo nekonečne dlho. Výsledkom sú štyri podobné prípady vo frekvenčnej rovine: spektrum môže byť diskrétne alebo spojité vo frekvencii a šírka pásma môže byť konečná alebo nekonečná. Podmienku (5.3) nespĺňajú nekonečne dlhé periodické signály. Preto transformačný vzťah (5.1) platí iba pre spojité neperiodické priebehy. Výsledné frekvenčné spektrum je potom tiež spojité s nekonečnou šírkou pásma. Spojitý periodický signál x(t) s periódou T sekúnd môžeme rozložiť do Fourierovho radu, ktorého koeficienty budú dané ako X ( T 1 jωkt ω k ) = x( t) e dt, = 0, ± 1, ± 2,... T 0 k (5.4) kde ω = 2πk T je k-ta harmonická frekvencia. Vo všeobecnosti sa komplexná hodnota k / X(ω k ) nazýva k-ty koeficient Fourierovho radu. Normalizácia výrazom 1/T sa používa na to, aby boli koeficienty Fourierovho radu nezávislé od základnej frekvencie 1/T a teda závislé len od tvaru jednej periódy časového priebehu. Frekvenčné spektrum vypočítané týmto spôsobom je diskrétne s nekonečnou šírkou pásma. Podobne ako spojité signály môžeme pomocou Fourierovej transformácie vo frekvenčnej oblasti opísať aj diskrétne deterministické signály. Fourierova transformácia diskrétneho signálu x[n] (FTD) je definovaná ako X ( e j Θ = jnθ ) x[ n] e, (5.5) kde Θ = ωt je normovaná frekvencia[2]. Inverzná Fourierova transformácia (IFTD) je daná vzťahom π 1 jθ jnθ [ ]. (5.6) x n = 2π π X ( e ) e dθ 36

Ako vidíme, rozdiely oproti FT spojitých signálov sú: integrál nahradený sumou a frekvenčná premenná ω nahradená premennou e jθ. Teda frekvenčné spektrum je spojité a periodické s periódou 2π. Spektrum teda stačí zobraziť na intervale π Θ π. V prípade, že priebeh analógového signálu x(t) máme interpretovaný konečnou diskrétnou postupnosťou x[nt], kde T je perióda vzorkovania, môžeme na výpočet spektra použiť diskrétnu Fourierovu transformáciu (DFT).[2] Predpokladajme, že spojitý signál x(t) je konečný s dĺžkou trvania T 0 a jeho spektrum je frekvenčne zhora ohraničené kruhovou frekvenciou ω m, napríklad po filtrácii ideálnym DP filtrom s medznou frekvenciou ω m. Tento spojitý priebeh budeme vzorkovať so vzorkovacou periódou T S, pričom vytvoríme diskrétnu postupnosť vzoriek x[n] x[nt], kde n = 0, 1,..., N - 1. Celkový počet vzoriek na časovom intervale T 0 potom bude N T0 = (5.7) T S Spektrum takéhoto vzorkovaného signálu X S (ω) bude spojité a periodické s periódou T S = 2πω S. Ďalej vytvoríme s uvažovaného konečného spojitého priebehu x(t) periodický priebeh s periódou T 0. Spektrum takéhoto signálu bude diskrétne so šírkou pásma 2ω m. Ak tento periodický priebeh navzorkujeme so vzorkovacou frekvenciou ω S, dostaneme vzorkovaný periodický priebeh, ktorého spektrum bude periodické s periódou zodpovedajúcou vzorkovacej frekvencii ω S a diskrétne s frekvenciami nω 0, pričom platí ωs = Nω 0 (5.8) Pre jednotkový interval vzorkovania T S = 1 dostaneme zo vzťahov (5.7) a (5.8) 2π 2π 2π ω0 = = = (5.9) T NT N 0 S 37

Výsledné vzťahy DFT majú tvar [2]: X N 1 n= 0 [] k = x[] n e 2π j nk N pre k = 0, 1,..., N 1, (5.10) x 1 1 N N k = 0 [] n = X [] k e 2π j nk N, pre n = 0, 1,..., N 1. (5.11) Jednotlivé koeficienty spektra X[k] udávajú váhy, s ktorými sa jednotlivé harmonické zložky s frekvenciami kω 0 uplatňujú v pôvodnom signáli. Spektrum signálu x[n], ktoré pozostáva z N vzoriek vyskytujúcich sa v periodických intervaloch nt 0, je vyjadrené N spektrálnymi čiarami X[k], ktorých vzdialenosť je ω 0. Často potrebujeme pri frekvenčnej analýze signálu zvýšiť frekvenčné rozlíšenie spektra signálu. Toto dosiahneme vložením nulových bodov v časovej oblasti. Potrebujeme vypočítať frekvenčnú odozvu v M frekvenčných bodoch, pričom M > N. Na koniec danej postupnosti pridáme M N nulových bodov a týmto spôsobom vytvoríme postupnosť dĺžky M. DFT novej postupnosti má potom M frekvenčných bodov. Praktická implementácia DFT je zvyčajne založená na jednom z Cooley-Tukeyho algoritmov rýchlej fourierovej transformácie (Fast Fourier Transform, FFT)[9]. Najrýchlejšie FFT algoritmy dostaneme, keď dlžka transformácie N je mocninou 2. Aby sme túto výhodu mohli využiť, zvyčajne dopĺňame k signálu nuly v časovej oblasti, aby celková dĺžka signálu bola mocninou dvojky. Ako sme popísali vyššie, výhodou zvýšenia N je jemnejšie spektrálne vzorkovanie. 5.2 Použitie okien Niekedy potrebujeme z dlhého signálu analyzovať iba jeho časť. Vtedy sa používajú tzv. okná [2]. Povedzme, že máme nekonečne dlhú postupnosť y[n]. Z tejto postupnosti vyberieme krátky segment a označíme ho x[n] 38

(5.12) Operáciu získania x[n] z y[n] možno opísať ako násobenie y[n] pravouhlým oknom w r [n] kde x [ n] y[ n] w [ n] =, (5.13) r (5.14) Násobenie v časovej oblasti (5.13) predstavuje konvolúciu vo frekvenčnej oblasti X jθ 1 jθ jθ ( e ) = Y ( e ) W ( e ) 2π r (5.15) kde W r (e jθ ) je FTD pravouhlého okna. Pri aplikácii okna na signál vznikajú dva druhy skreslenia: a) skreslenie spôsobené konečnou šírkou hlavného laloku spektra, b) interferencie postranných lalokov. Okrem pravouhlého okna poznáme mnoho ďalších typov okien (Bartlettovo, Hannovo, Hammingovo, Blackmanovo, Kaiserovo okno a pod.). Výber okna poskytuje kompromis medzi šírkou hlavného laloku a úrovňou postranných lalokov. Vo všeobecnosti okno w[n] nemôže byť ľubovoľná funkcia. Musí mať konečnú dobu trvania, dĺžka N musí korešpondovať s požadovanou dĺžkou konečného segmentu a jednotlivé elementy w[n] by mali byť nezáporné. Metódou oknovania (windowing) teda dosiahneme skrátenie signálu y[n] na konečnú dĺžku N a zmenu tvaru spôsobenú násobením. [2] 5.3 Časovo-frekvenčná analýza spektrogram Spektrogram je základný nástroj pri spektrálnej analýze audio signálu, ktorý sa najviac používa pri spektrálnej analýze reči a spevu. Spektrogram môžeme definovať ako 39

intenzitné zobrazenie (zvyčajne v logaritmickej mierke, napr. db) amplitúdy short-time fourierovej transformácie (STFT). STFT je jednoducho sekvencia FFT oknovaných segmentov analyzovaného signálu, pričom okná sa môžu prekrývať v čase, zvyčajne o 25 až 50% [9]. Tento spôsob reprezentácie audio dát je veľmi dôležitý, pretože ľudský sluch je tiež istým spôsobom založený na real-time spektrograme kódovanom v slimáku vo vnútornom uchu [9]. Spektrogram sa často používa na poli počítačovej hudby ako pomôcka pri vývoji algoritmov zvukovej syntézy. Spektrogram sa zvyčajne zobrazuje ako dvojrozmerný graf: horizontálna os reprezentuje čas a vertikálna frekvenciu. Tretia dimenzia predstavujúca amplitúdu istej frekvencie v istom čase je reprezentovaná intenzitou, alebo farbou jednotlivých bodov v zobrazení. 40

6 Generovanie pseudonáhodného signálu V tejto kapitole popíšeme generovanie pseudonáhodného signálu pomocou generátora postupností s maximálnou dĺžkou (MLS). Takýto pseudonáhodný priebeh neskôr použijeme na riadenie veľkosti oneskorenia efektu chorus. 6.1 Postupnosti s maximálnou dĺžkou (MLS) Postupnosť s maximálnou dĺžkou je pseudonáhodný binárny signál, teda signál sa opakuje s určitou periódou. MLS signál pozostáva zo zdanlivo náhodnej postupnosti jednotiek a núl, ktorá má rovné frekvenčné spektrum pre všetky frekvencie až po Nyquistovu frekvenciu (okrem jednosmernej zložky). Generovanie tohto signálu pomocou DSP je výpočtovo efektívne a narozdiel od bieleho šumu je MLS signál deterministický a teda opakovateľný. Postupnosti s maximálnou dĺžkou môžeme generovať pomocou posuvného registra so spätnou väzbou. Posuvný register pozostáva z m za sebou zoradených binárnych pamäťových elementov. V každom kroku sa čísla uložené v pamäťových elementoch posúvajú o jedno miesto doprava a voľné miesto na ľavo sa generuje rekurzívnym vzťahom, ktorý zavisí od počtu pamäťových miest m a štruktúry spätnej väzby. Hodnoty, ktoré opúšťajú register na pravej strane potom vytvárajú výstupnú postupnosť, ktorá bude m mať periódu 2 1 [13]. Ako rekurzívne vzťahy na generovanie MLS sa využívajú irreducibilné polynómy. Ak máme posuvný register dĺžky m, potom pre výpočet novej hodnoty použijeme irreducibilný polynóm m-tého stupňa. V našom prípade budeme uvažovať posuvný register dĺžky m = 7. Použitý rekurzívny vzťah priamo súvisí s primitívnym polynómom siedmeho stupňa 7 m ( x) = x + x + 1. (6.1) 41

Pamäťové miesta zodpovedajúce termom polynómu m(x) sa sčítajú modulo 2 a výsledok je vstupom v nasledujúcom kroku. Ako vidíme na obr.6.1, term 1 z m(x) zodpovedá hodnote uloženej v elemente P0 term x zodpovedá elementu P1 term x 7 nie je súčasťou sumy, pretože máme iba sedem pamäťových elementov. Primitívny polynóm (6.1) teda korešponduje s rekurzívnym vzťahom P 7 = P1 + P0. (6.2) Obr.6.1 Posuvný register dĺžky m = 7 so spätnou väzbou Ako počiatočné hodnoty do posuvného registra môžeme použiť ľubovoľnú postupnosť okrem nulovej, pretože by nikdy nebola vygenerovaná jednotka. 42

7 Analýza intonácie záznamu ľudského spevu V tejto kapitole sa budeme zaoberať analýzou intonácie individuálne zaznamenaných hlasov. Najprv uvedieme, akým spôsobom sme zaznamenali a spracovali hudobný materiál vhodný na analýzu intonácie. Potom popíšeme softvérové prostredie, v ktorom budeme pracovať, teda prostredie programu Matlab a na záver sa budeme zaoberať samotnou analýzou uvedeného materiálu v prostredí Matlab. 7.1 Hudobný materiál pre analýzu intonácie Analýzu intonácie spevu budeme realizovať na nahrávkach individuálnych hlasov. Hudobný materiál musí mať známe všetky parametre, ako technické, tak aj hudobné. Preto sme sa rozhodli sami zrealizovať záznam potrebného materiálu. Pre účel analýzy sme realizovali dve nahrávky jednotlivých hlasov speváckeho zboru. V oboch prípadoch sme ako hudobný materiál použili 8-taktový kánon od Michaela Praetoria Laudate Dominum (viď obr.7.1). Tónový rozsah vybraného úryvku je pohodlný pre všetky hlasové skupiny, má rovnako melizmatické (viac tónov pripadá na jednu slabiku) ako aj sylabické pasáže a obsahuje niekoľko rôznych melodických intervalov. Základný tón skladby je D3. Obr. 7.1 Kánon Laudate Dominum Michaela Praetoria [14] V prvom prípade bola realizovaná viacstopá nahrávka s poslucháčmi Katedry hudobnej výchovy Pedagogickej fakulty Univerzity Mateja Bela v Banskej Bystrici. V druhom prípade naspieval vybranú ukážku viac krát jeden spevák s vysokoškolským hudobným vzdelaním a dlhoročnou speváckou praxou. 43

7.1.1 Viacstopý záznam jednotlivých hlasov speváckeho zboru Bol použitý PC nahrávací systém vybavený nahrávacím softvérom Magix AudioStudio s 8-vstupovým rozhraním (PHASE 88 od firmy Terratec) s 16 bitovými A/D prevodníkmi so vzorkovacou frekvenciou 44 100 Hz a dynamické mikrofóny s kardioidnou charakteristikou (Shure SM57). Obr. 7.2 Štvorstopý záznam zborového spevu Snímaní boli naraz štyria speváci (z každej hlasovej skupiny jeden), každý osobitným mikrofónom (viď obr. 7.2). Vzdialenosť medzi susednými mikrofónmi bola 100-120 cm a presluch medzi mikrofónmi bol približne 20 db, čo je pre naše účely postačujúce. Nahrávanie bolo opakované viac krát po sebe, vždy s iným speváckym obsadením. Speváci boli poslucháčmi 1. a 2. ročníka s minimálnou praxou, čo sa ukázalo na kvalite zosnímaného spevu. Kolísanie základnej frekvencie jednotlivých tónov bolo značne počuteľné (intonačné nepresnosti) a spôsobené väčšinou neskúsenosťou spevákov. Z tohto dôvodu sme zaznamenaný materiál ďalej pri analýze nevyužili. Pri ďalšom spracovaní získaného materiálu sme taktiež zistili, že je potrebné aby všetky zaznamenané stopy mali rovnaké tempo, čo v tomto prípade nebolo splnené. 7.1.2 Jednostopý záznam spevu Nahrávací systém bol rovnaký ako v prípade prvej nahrávky s tým rozdielom, že bol použitý kondenzátorový mikrofón C214 od firmy AKG s kardioidnou smerovou charakteristikou. Ako odposluch pre speváka boli použité uzatvorené štúdiové slúchadlá, v 44

ktorých počul na začiatku iba metronóm a svoj hlas, neskôr aj už zaznamenané hlasy. Metronóm bol nastavený na tempo 70 bpm. Uvedený hudobný materiál sme zaznamenali 10 krát, prvý záznam sme neskôr kvôli intonačným nepresnostiam vyradili. 7.1.3 Úprava zaznamenaného materiálu v programe Cool Edit Zaznamenaný zvukový materiál sme upravovali v softvérovom prostredí Cool Edit Pro 2.0. Prvým krokom bolo presné zostrihanie zvukových stôp tak, aby zvukový súbor presne zodpovedal notovému záznamu na obr. 7.1. Keďže nahrávku sme realizovali s použitím metronómu a začiatok nahrávania bol tiež presne zosynchronizovaný, vedeli sme presne určiť začiatok a koniec zvukovej stopy. Zvukové súbory boli zaznamenané so vzorkovacou frekvenciou 44.1 khz. Aby sme zmenšili výpočtovú náročnosť analýzy intonácie, je vhodné zmenšiť počet vzoriek jednotlivých zvukových súborov. Na spracovanie zvukového signálu spevu postačuje frekvenčné pásmo do cca 5 khz. Program Cool Edit umožňuje konverziu vzorkovacej frekvencie, ktorá pozostáva z filtrácie a decimácie signálu. Vzorkovaciu frekvenciu sme zvolili 11.025 khz, čím sme zmenšili počet vzoriek na štvrtinu. Pri uvádzanom tempe 70 bpm trvá jedna pólová nota 60 Th = = 0.857 s. (7.1) 70 Keďže nahrávaná skladba má dĺžku 8 taktov a každý takt obsahuje 3 pólové noty, potom celková dĺžka nahrávky bude T = T 8 3 20.57 s. (7.2) h = Pri vzorkovacej frekvencii 11 025 Hz bude teda celkový počet vzoriek N = T F = 20.57 11025 226800 [s, Hz; 1] vzoriek. (7.3) s = Zvukový signál obsahuje veľké množstvo harmonických zložiek. Našou úlohou je analyzovať výšku tónu, to znamená frekvenciu prvej harmonickej zložky. Na obr. 7.3 vidíme spektrogram zaznamenaného spevu (pri F S = 44 100 Hz) a jeho detail v okolí prvej harmonickej. 45

Obr. 7.3 Spektrogram zaznamenaného spevu a jeho detail Ako vidíme, prvá harmonická nie je v signáli najsilnejšie zastúpená ale je vždy v signáli prítomná s dostatočnou amplitúdou. Aby jediným maximom v spektre signálu ostala prvá harmonická zložka je potrebné filtráciou potlačiť vyššie harmonické. Preto je výhodné odfiltrovať zo signálu vyššie harmonické zložky, ktoré by mohli spôsobiť nepresnosti pri analýze. Za týmto účelom sme využili funkciu FFT filtra zabudovanú v programe Cool Edit. Keďže použitá skladba má relatívne veľký tónový rozsah, museli filtráciu aplikovať na zvukovú stopu po častiach s filtrom s rôznou medznou frekvenciou. Časový priebeh zaznamenaného signálu s vyznačenými časťami filtrácie vidíme na obr. 7.4. 46

Obr. 7.4 Časový priebeh zaznamenaného signálu s vyznačenými časťami s rôznou filtráciou Použili sme dolnopriepustné FFT filtre s medznými frekvenciami f1 = 240 Hz a f2 = 320 Hz. Ich nastavenia vidíme na obr. 7.5. V časovom priebehu zaznamenaného signálu sme vyznačili vybranú časť a aplikovali na ňu filtráciu s príslušnou medznou frekvenciou. Na obr. 7.6 vidíme výsledné frekvenčné spektrum spracovanej zvukovej stopy vo forme spektrogramu. Takto upravený zvukový súbor je pripravený na použitie pri analýze v programe Matlab. Obr. 7.5 Nastavenie použitých FFT filtrov a) f1 = 240 Hz, b) f2 = 320 Hz 47

Obr. 7.6 Spektrogram záznamu ľudského hlasu s odfiltrovanými vyššími harmonickými zložkami s vyznačeným rezom v t = 4 s 7.2 Analýza intonácie v programe Matlab Zaznamenaný a vhodne upravený zvukový materiál sme analyzovali pomocou programu napísanom v prostredí Matlab. Vývojový diagram nášho programu vidíme na obr. 7.7 a kompletný výpis programu uvádzame v prílohe A. Obr. 7.7 Vývojový diagram programu na analýzu intonácie v prostredí Matlab 48

Zvukový súbor načítame pomocou príkazu [x,f s ] = wavread('vstupny_subor'). Vstupný zvukový súbor vo formáte stereo je interpretovaný ako dvojstĺpcový vektor x, pričom prvý stĺpec predstavuje ľavý kanál a druhý stĺpec pravý kanál. Do premennej F s je vložená hodnota vzorkovacej frekvencie. Aby sme znížili výpočtovú náročnosť programu, vyberieme z vektora x iba jeden stĺpec. Pomocou príkazu [B,F,T] = specgram(x, 65536, F s,600,300) vypočítame spektrogram pre signál x. Vektor x je rozdelený na rovnaké segmenty dĺžky 600 vzoriek, ktoré sa prekrývajú o 300 vzoriek (teda o 50%), každý je oknovaný Hanningovým oknom. Stĺpce matice B obsahujú (65536/2) + 1 komplexných koeficientov diskrétnej fourierovej transformácie pre jednotlivé oknované postupnosti a predstavujú vlastne rezy spektrogramom v čase. Vektor F je stĺpec frekvencií a vektor T obsahuje časy, v ktorých je spektrogram počítaný. Na obr. 7.8 vidíme rez spektrogramom v čase t = 4 s (148 stlpec v matici B). Tento rez predstavuje vlastne diskrétnu fourierovú transformáciu 148. oknovanej postupnosti a zodpovedá rezu, ktorý je vyznačený čiarkovane na obr. 7.6. Obr. 7.8 Rez spektrogramom v čase t = 4 s Frekvenciu prvej harmonickej zložky teda zistíme tak, že nájdeme koeficient s najväčším modulom. Príkaz [m,i] = max(b) vyberie maximálnu hodnotu každého stĺpca matice B a vloží ju do vektora m. To čo je pre nás dôležité je, že do vektora i sú uložené pozície jednotlivých maxím v stĺpcoch. Frekvenciu maxima, t.j. frekvenciu prvej harmonickej, potom určíme ako 49

i 1 f max = (7.4) 10 4096 F s Frekvencia prvej harmonickej v centoch vzhľadom k základnému tónu potom bude f max cent = 1200 log 2 ( ) (7.5) f 0 kde f 0 je frekvencia základného tónu skladby. Ako sme spomenuli vyššie, základný tón zaznamenanej skladby je tón D3, ktorý sa nachádza sedem poltónov pod referenčným tónom A3 (220 Hz) a teda jeho frekvencia je 220 f = 146.83 Hz (7.6) 0 = 700 1200 2 Vektor cent teda obsahuje frekvencie prvej harmonickej zložky vzhľadom k základnému tónu skladby v centoch. Tento vektor teraz porovnáme s vektorom referenčných frekvencií (taktiež v centoch), ktorý sme si dopredu zadefinovali (viď výpis programu v prílohe A). Vektor referenčných frekvencií cent_ref obsahuje presné frekvencie všetkých tónov použitej skladby v presnej časovej postupnosti a dĺžke trvania jednotlivých tónov. Odchylky zaznamenaných tónov od základných frekvencií v centoch potom získame ako cent_dev = cent cent_ref (7.7) Je zrejmé, že nahrávka spevu obsahuje okrem spievaných tónov aj pauzy medzi hláskami a taktiež počuteľné rušivé nádychy. Postupom, opísaným vyššie, sme zistili odchylky intonácie aj počas týchto nehudobných častí nahrávky. Tieto odchylky môžu byť rôzne veľké (až niekoľko tisíc centov) a môžu spôsobiť značnú nepresnosť pri štatistickom vyhodnocovaní výsledkov. Na obr. 7.10 vidíme priebeh referenčnej a zaznamenanej výšky tónu v centoch vzhľadom k základnému tónu D3. Vyznačené body zodpovedajú práve týmto rušivým, nehudobným častiam záznamu. Výhodou je, že tieto rušivé časti nahrávky majú spravidla malú amplitúdu a teda ich môžeme vo vektore odchyliek presne lokalizovať jednoduchým testovaním a následne ich 50

nahradíme nulovou hodnotou, ktorá nám štatistické hodnoty takmer neovplyvní. Vo vektore cent tieto chybné hodnoty nahradíme vždy predchádzajúcou hodnotou zaokrúhlenou na stovky (obr. 7.9). for j = 1:length( i ), if m( j ) < 0.1*max(abs(m)) cent_dev( j ) = 0; cent( j ) = 100*round(cent(j -1)/100); end end Obr. 7.9 Testovanie chýb vzniknutých nehudobnými zvukmi v nahrávke Ako môžeme vidieť na obr. 7.11, takýmto spôsobom odstránime väčšinu nepresností. Obr. 7.10 Zaznamenaná a referenčná výška tónu s vyznačenými chybami 51

Obr. 7.11 Notový záznam skladby a zaznamenaná a referenčná výška tónu po ošetrení chýb Na obr. 7.12 vidíme odchýlky zaznamenaných tónov od základných frekvencií v centoch (vektor cent_dev, (7.7)). Na tomto obrázku je znázornený výsledok našej analýzy, pričom každý bod predstavuje okamžitú odchýlku intonácie v centoch v danom čase. Obr. 7.12 Odchýlky zaznamenaných tónov od základných frekvencií v centoch 52

Uvedené výsledky použijeme v nasledujúcej kapitole pri návrhu zvukového efektu chorus. Zistené odchýlky intonácie musíme teda dať do súvisu s parametrom zmeny oneskorenia g, ktorý sme si definovali v časti 3.3 a ktorý je vyjadrený ako g ω l = 1, (7.8) ω s kde ω s zodpovedá frekvencii referenčných tónov a ω l zodpovedá frekvencii zaznamenaných tónov. Odchýlky intonácie v centoch, teda musíme opäť previesť na frekvenčný posun (pomer frekvencií) pomocou vzťahu f_shift = 2.^(cent_dev/1200). (7.9) Parameter zmeny oneskorenia g potom vypočítame ako g = 1 f_shift. (7.10) Perióda vzorkovania spektrogramu v Matlabe je T mat = 4.5351 10-2 s. Keďže získané poznatky chceme implementovať na signálovom procesore, ktorý má vzorkovaciu periódu T S = 5.58 10-5 s, musíme musíme aj zobrazenie v Matlabe previesť na túto vzorkovaciu frekvenciu. Pri novej vzorkovacej frekvencii T S bude každej jednej vzorke v pôvodnom zobrazení zodpovedať práve 2 Tmat 4.5351 10 Q = = 813 vzoriek. (7.11) 5 T 5.58 10 S Toto prevzorkovanie postupnosti g uskutočníme pomocou jednoduchého cyklu. Stará postupnosť g mala N1 = 452 vzoriek. Nová postupnosť g_new bude mať N 2 = N1 Q = 452 813 = 367476 (7.12) vzoriek, a získame ju nasledovným spôsobom: k=0; for i=1:452, for j=1:813, g_new(j+(k*813))=g(i); end k=k+1; end Obr. 7.13 Prevzorkovanie postupnosti g 53

Postupnosť g_new teraz vlastne obsahuje informáciu o tom, o koľko sa má zmeniť oneskorenie oneskorovacej linky v každej vzorkovacej perióde, čo môžeme interpretovať aj ako počet vzoriek, o ktoré sa má zmeniť oneskorenie za jednu vzorkovaciu periódu. Aby sme získali časový priebeh celkového oneskorenia musíme postupnosť g_new integrovať, teda postupne pripočítavať jednotlivé prvky postupnosti. Toto realizujeme pomocou jednoduchého cyklu (obr. 7.14). g_int(1)=0; for i = 1:(n-1), g_int(i+1) = g_int(i) + g_new(i+1); end Obr. 7.14 Integrovanie postupnosti g_new Na obr. 7.15 vidíme časový priebeh postupnosti g_int. Takto by mal teda vyzerať riadiaci signál, ktorým budeme riadiť zmenu oneskorenia oneskorovacích liniek. Obr. 7.15 Časový priebeh oneskorenia oneskorovacej linky z analýzy intonácie zaznamenaného hlasu Ako vidíme, aby sme vedeli nameraný frekvenčný posun simulovať na DSP, musel by rozkmit riadiaceho signálu zodpovedať rozkmitu oneskorenia takmer 700 vzoriek. 54

8 Simulácia efektu chorus na starterkite so signálovým procesorom TMS320C26 V tejto kapitole sa budeme venovať simulácii efektu chorus v prostredí starterkitu so signálovým procesorom TMS320C26. Najprv stručne popíšeme architektúru použitého procesora. Ďalej sa budeme venovať samotnej implementácii oneskorovacích liniek s variabilným oneskorením a riadeniu oneskorenia pomocou generátora MLS signálu. 8.1 Architektúra signálového procesora TMS320C26 Procesor TMS320C26 od firmy Texas Instruments využíva harvardskú architektúru, ktorá poskytuje maximálny výkon zavedením dvoch oddelených pamäťových zberníc, dátovej a programovej. Trvanie jedného strojového cyklu sa pohybuje v rozpätí 80 120 ns podľa použitia kryštálu. Procesor obsahuje 32 bitovú aritmetickú jednotku, 32 bitový akumulátor, 16 x 16 bitovú násobičku s 32 bitovým výsledkom, 16 bitový paralelný posúvač (shifter), 8 pomocných registrov AR0 - AR7, plne obojsmerný sériový port s dvojitým ukladaním (double buffer) na prenos údajov, na komunikáciu s okolím obsahuje 16 adresných a 16 dátových vodičov, ktoré multiplexne obsluhujú externú pamäť programu, dát a vstupno-výstupné porty. Celkovú blokovú schému procesora TMS320C26 vidíme na obr. 8.1. 8.1.1 Centrálna aritmeticko-logická jednotka (CALU) Centrálna aritmeticko-logická jednotka pozostáva zo 16 bitového posúvača mierky, 16 x 16 bitovej paralelnej násobičky, 32 bitovej aritmeticko-logickej jednotky (ALU), 32 bitového akumulátora (ACC) a prídavných posúvačov na výstupe akumulátora (obr. 8.1). ALU a akumulátor poskytujú širokú škálu aritmetických a logických operácií, z ktorých väčšina je vykonaná počas jedného strojového cyklu. Po vykonaní operácie v ALU je výsledok uložený do akumulátora, kde môžu byť prevedené operácie ako 55

napríklad posun. Na obr. 8.1 môžeme vidieť, že jedným vstupom do ALU je vždy akumulátor a druhým môže byť buď výsledkový register (Product Register PR) násobičky alebo posúvač mierky, ktorý je napĺňaný z dátovej pamäte. Obr. 8.1 Bloková schéma TMS320C26 56

ALU je univerzálna aritmetická jednotka, ktorá pracuje nad 16 bitovými slovami z RAM alebo z inštrukcií obsahujúcich dáta. 32 bitový akumulátor je rozdelený na dve 16 bitové polovice: ACCH (Accumulator High) a ACCL (Accumulator Low). TMS320C26 obsahuje 16 x 16 bitovú hardvérovú násobičku, ktorá je schopná vypočítať 32 bitový výsledok násobenia bez znamienka alebo so znamienkom počas jedného strojového cyklu. Všetky inštrukcie násobenia, okrem MPYU (Multiply Unsigned) sú vykonávané ako operácie so znamienkom. To znamená, že dve násobené čísla chápe ako čísla v tvare binárneho doplnku druhého druhu a výsledok je tiež 32 bitové číslo v tvare binárneho doplnku druhého druhu. Ako vidíme na obr. 8.1, s násobičkou sú spojené dva registre: (a) 16 bitový dočasný register (Temporary Register TR), v ktorom sa nachádza jeden z operandov, (b) 32 bitový výsledkový register (Product Register PR), v ktorom sa nachádza výsledok násobenia. Výstup PR môže byť posunutý doľava o 1 alebo 4 bity. Toto je užitočné pri uplatňovaní frakčnej aritmetiky. Napríklad výsledok násobenia dvoch 16 bitových čísel v tvare binárneho doplnku druhého druhu obsahuje dva znamienkové bity, s ktorých jeden je nadbytočný. Posun o jeden bit doľava eliminuje tento nadbytočný bit pri presune výsledku do akumulátora. Inštrukcia LT (Load T Register) naplní TR register a tým poskytne jeden s operandov a inštrukcia MPY (Multiply) poskytne druhý. Násobenie môže byť tiež vykonané s okamžitou hodnotou obsiahnutou v inštrukcii MPYK. Ako vidíme na obr. 8.1 hodnotu do násobičky môžeme načítať aj s programovej pamäte. Toto využíva inštrukcia MAC, ktorá vynásobí hodnotu z dátovej pamäte, adresovanú pomocou dma, s hodnotou z programovej pamäte, adresovanou pomocou pma. Táto inštrukcia zároveň pripočíta predchádzajúci výsledok násobenia k akumulátoru. 8.1.2 Pomocná aritmetická jednotka (ARAU) Pomocná aritmetická jednotka pozostáva z pomocných registrov (Auxiliary Registers AR), registrov ARP a ARB a samotnej aritmetickej jednotky (obr. 8.1). Procesor TMS320C26 poskytuje 8 pomocných registrov (AR0 AR7). Pomocné registre môžu byť použité na nepriame adresovanie dátovej pamäte alebo na ukladanie dočasných dát. Na tieto pomocné registre ukazuje 3 bitový smerník pomocných registrov (Auxiliary 57

Register Pointer ARP), do ktorého sú ukladané hodnoty od 0 do 7 (AR0 AR7) pomocou inštrukcie LARP (Load Auxiliary Register Pointer). Do registrov AR môžeme vkladať hodnoty z dátovej pamäte pomocou inštrukcie LAR (Load Auxiliary Register), alebo okamžitú hodnotu definovanú v inštrukcii LARK (Load Auxiliary Register Immediate Short). Obsah pomocných registrov môžeme taktiež uložiť do dátovej pamäte, na čo slúži inštrukcia SAR (Store Auxiliary Register). ARAU vykonáva nad pomocnými registrami rôzne aritmetické operácie, ako napríklad pripočítanie, alebo odčítanie konštanty od aktuálneho AR(ARP) (Add to Auxiliary Register Short Immediate ADRK, Substract from Auxiliary Register Short Immediate SBRK). Veľmi užitočná je tiež inštrukcia MAR (Modify Auxiliary Register), ktorá umožňuje v jednom kroku inkrementovať (dekrementovať) aktuálny AR(ARP) a zároveň zmeniť hodnotu ARP. 8.1.3 Organizácia pamäte TMS320C26 poskytuje na čipe celkom 1568 16 bitových slov internej pamäte, ktorá je rozdelená na 4 bloky (B0, B1, B2, B3). Blok B2 (32 slov) je vždy dátová pamäť a ostatné bloky sú programovateľné ako dátová alebo programová pamäť. Procesor môže adresovať celkom 64K dátovej pamäte. Interná dátová pamäť a rezervované miesta sa nachádzajú v spodných 1K slovách. Dátová pamäť môže byť priamo rozšírená na 64K, ale čas vykonávania operácií sa spomaľuje. Pomocou inštrukcie CONF môžeme nastaviť, ktoré z blokov B0, B1, B3 budú dátové a ktoré programové. Inštrukčný súbor TMS320C26 umožňuje dva spôsoby adresovania dátovej pamäte: (a) Priame adresovanie (b) Nepriame adresovani Pri priamom adresovaní inštrukčné slovo obsahuje spodných sedem bitov adresy dátovej pamäte (Data Memory Address - dma). Toto pole je následne spojené s deviatimi bitmi zo smerníka stránky dátovej pamäte (Data Page Pointer DP) a tým vytvoria 16 bitovú adresu. Teda DP register ukazuje na jednu z 512 možných 128 slovných stránok dátovej pamäte a 7 bitová adresa (dma) ukazuje na presné umiestnenie na danej stránke. DP register môžeme naplniť pomocou inštrukcií LDP (Load Data Memory Page Pointer), LDPK (Load Data Memory Page Pointer Immediate) alebo LST (Load Status Register ST0). 58

Pomocné registre (AR) a ARAU poskytujú flexibilné a účinné nepriame adresovanie. Nepriame adresovanie pomocou pomocných registrov umožňuje umiestnenie adresy operandu v dátovej pamäti do jedného z pomocných registrov. Smerník pomocných registrov (ARP) ukazuje na register, ktorý bude pri nepriamom adresovaní aktívny. ARAU môže automaticky inkrementovať alebo dekrementovať aktívny pomocný register buď o 1 alebo o hodnotu uloženú v AR0. Výsledkom je, že pri prístupe k informáciám uloženým v tabuľke nemusíme na manipuláciu s adresami používať centrálnu aritmetickologickú jednotku (Central Arithmetic Logic Unit CALU) a tým ju uvoľníme pre iné operácie (signálové dáta). ARAU vykoná operáciu v tom istom cykle, v ktorom je vykonaná aj samotná inštrukcia. 8.1.4 Pamäťovo mapované registre Pamäťovo mapované registre sú registre, ktoré sú mapované do dátového pamäťového priestoru. Môžeme ich vidieť aj na obr. 8.1. Tieto registre sú umiestnené na dátovej stránke 0 (DP = 0) a môžeme s nimi manipulovať rovnakým spôsobom ako s každým iným priestorom v dátovej pamäti. Kompletný zoznam a popis pamäťovo mapovaných registrov môžeme nájsť v [3]. pre nás sú dôležité registre DRR a DXR, ktoré sú používané sériovým portom. Vysielací register DXR (Data Transmit Register) obsahuje dáta, ktoré majú byť vyslané cez sériový port a prijímací register DRR (Data Recieve Register) obsahuje dáta prijaté cez sériový port. Oba registre pracujú buď v 8 bitovom BYTE móde alebo v 16 bitovom WORD móde. Každý register má externý clock, rámcovací synchronizačný impulz a pridružené posuvné registre. Na zapisovanie a čítanie z týchto registrov môžeme použiť hocijakú inštrukciu pristupujúcu do dátovej pamäte (okrem BLKD Block Move from Data Memory to Data Memory). Registre DXR a DRR sú mapované na adresách 0 a 1 v dátovom adresnom priestore. 8.1.5 Obvod analógového rozhrania TLC32040 TLC320040 je 14 bitový číslicovo-analógový a analógovo-číslicový prevodník. Obvod obsahuje sériový port pre priamu spoluprácu s digitálnymi signálovými procesormi TMS 32011, TMS 320C17, TMS 32020, TMS 320C26 a poskytuje synchrónnu alebo asynchrónnu činnosť A/D a D/A prevodníkov s možnosťou programového nastavenia 59

rýchlosti prevodníkov až do 19 200 vzoriek za sekundu. Obvod obsahuje vstupný filter typu pásmový priepust so spínanými kondenzátormi pre potlačenie chyby vzorkovania (t.j. antialiasing) a výstupný dolnopriepustný obnovovací filter so spínanými kondenzátormi. Obvod je možné programovať pomocou procesora, čo umožňuje nastaviť požadovaný čas prevodu pre rôzne hodnoty vstupnej frekvencie Master Clock. Na obr. 8.2 je znázornená bloková schéma tohto obvodu. Obr. 8.2 Bloková schéma obvodu TLC 32040. Obvod má dve sady analógových vstupov. Obyčajne sa využívajú vstupy IN+ a IN-, ale v prípade potreby môžeme použiť aj AUX IN+ a AUX IN-. Výber vstupov a ich zosilnenie vykonávame pomocou programu. Filter typu pásmový priepust v časti A/D prevodníka je možné programovo vyradiť aj ponechať. Frekvencia spínania kondenzátorov vo filtroch, rýchlosť prevodu aj signál pre synchronizáciu prenosu údajov medzi mikroprocesorom a sériovým portom AIC sú odvodené zo vstupného hodinového signálu s frekvenciou f MSTR privedeného na pin MSTR CLK. Frekvencia spínania kondenzátorov fs PP je určená obsahom čítača RX Counter A. Rýchlosť prevodu (vzorkovacia frekvencia) je určená podielom frekvencie spínania kondenzátorov a obsahu čítača RX Counter B. Teda pre frekvenciu spínania kondenzátorov PP filtra fs PP a frekvenciu A/D prevodu f A/D platia nasledujúce vzťahy: f spp f MSTR =, 2 * RA f f spp / D (8.1) RB A = Frekvencia pre spínanie kondenzátorov obnovovacieho DP filtra fs DP je určená obsahom čítača TX Counter A. Rýchlosť prevodu je určená podielom frekvencie spínania 60

kondenzátorov a obsahu čítača TX Counter B. Pre frekvenciu spínania kondenzátorov DP filtra fs DP a frekvenciu D/A prevodu f A/D platia nasledujúce vzťahy: f sdp f MSTR =, 2 * TA f f sdp / A (8.2) TB D = Signál SHIFT CLK sa využíva ako hodinový signál pri prenose dát medzi sériovým portom AIC a signálovým procesorom. Je odvodený zo signálu MSTR CLK a pre jeho frekvenciu f SHIFT platí: f MSTR f SHIFTCLK = (8.3) 4 AIC obsahuje okrem záchytných registrov pre A/D a D/A prevodník, ešte ďalších 5 registrov. Tieto registre (RA, RB, TA, TB, AIC_CMD) slúžia na nastavenie komunikácie AIC a na nastavenie vzorkovacej frekvencie A/D a D/A prevodníka. Register AIC_CMD má 8 bitov (00abcdef). Ich kombináciami nastavujeme mód činnosti (synchrónna/asynchrónna), povolenie/zákaz AUX IN, povoenie/zákaz Loopback, zapnutý/vypnutý PP filter (DP je stále zapnutý). Komunikácia medzi AIC (obvod analógového rozhrania) a DSP je obojsmerná sériová, s dĺžkou slova 16 bitov (v móde WORD). Obvod analógového rozhrania pracuje so 14 bitovými údajmi, sériový prenos je 16 bitový. Údaj z A/D alebo do D/A prevodníka je vždy v bitoch d15-d2, bity d1 a d0 sú určené na adresovanie vnútorných registrov AIC. Sériový port používa dva pamäťovo mapované registre DXR (Data transmit register) obsahujúci údaje na vyslanie a DRR (Data recieve register) obsahujúci prijaté údaje. Údaje vysielané aj prijímané sú ukladané do dvojitej vyrovnávacej pamäte (double buffer), vďaka čomu je možný plynulý tok dát do zo sériového portu. 61

8.2 Implementácia oneskorovacích liniek na TMS320C26 V tejto časti popíšeme akým spôsobom sme implementovali oneskorovacie linky na starterkite so signálovým procesorom TMS320C26, pričom využijeme poznatky zhrnuté v predchádzajúcich kapitolách. Ako sme spomenuli v tretej kapitole, základom efektu Chorus je oneskorenie, realizované pomocou oneskorovacích liniek. Najprv matematicky opíšeme vlastnosti oneskorovacích liniek, potom spomenieme implementáciu oneskorovacích liniek na starterkite so signálovým procesorom TMS320C26. Viacero možností implementácie oneskorovacích liniek sme už popísali v [12]. Preto tu spomenieme iba jeden spôsob, ktorý je najvýhodnejší pri implementácii variabilného oneskorenia. 8.2.1 Matematický opis a modely oneskorovacích liniek Na matematický opis vlastností oneskorovacej linky použijeme poznatky popísané v kapitole 4. Základnú realizáciu jednej oneskorovacej linky môžeme opísať diferenčnou rovnicou: [ n] x[ n] + a x[ n M ] y = M, (8.4) kde x[n] je vzorka vstupného signálu, y[n] je vzorka výstupného signálu, a M je váhovací koeficient, ktorý určuje zastúpenie oneskoreného signálu a M je hodnota oneskorenia vo vzorkách. Prenosovú funkciu tejto jednoduchej sústavy môžeme napísať ako H ( z M ) a z + M = 1. (8.5) Frekvenčná charakteristika takejto oneskorovacej linky potom bude H jωts jmωts ( e ) + a e = 1, (8.6) M kde ω je kruhová frekvencia a T S = 1/f S je vzorkovacia perióda. Na obr. 8.3 môžeme vidieť simuláciu modulovej frekvenčnej charakteristiky takejto oneskorovacej linky v programe Matlab (M = 25, a 25 = 0.7, f S = 17922 Hz). 62

Obr. 8.3 Simulácia modulovej frekvenčnej charakteristiky jednej oneskorovacej linky Vidíme, že maximálna frekvencia zobrazená na tejto frekvenčnej charakteristike je o niečo menšia ako 9 khz. Konkrétnu hodnotu môžeme zistiť použitím vzorkovacej teorémy [1]. Ak sme si zvolili vzorkovaciu frekvenciu f S = 17922 Hz, potom maximálnu zobrazenú frekvenciu môžeme vypočítať ako: f f 2 17922 = 2 max = S = 8961Hz Z rovníc (8.4) a (8.5) môžeme odvodiť signálový graf oneskorovacej linky: Obr. 8.4 Štruktúra oneskorovacej linky Keďže použitie takéhoto jednoduchého zapojenia je značne obmedzujúce, často sa zavádza viacero oneskorovacích liniek. Pre dve oneskorovacie linky bude diferenčná rovnica, prenosová funkcia a frekvenčná charakteristika mať tvar: 63

[] n x[] n + a x[ n M ] + a x[ n 2] y = M 1 1 M 2 M (8.7) H M 1 M 2 ( z) 1+ a z + a z = (8.8) M 1 M 2 H jωts jm 1ωTS jm 2ωTS ( e ) 1+ a e + a e = (8.9) M1 M 2 Na obr. 8.5 môžeme vidieť simuláciu modulovej frekvenčnej charakteristiky takejto sústavy (M1 = 4, M2 = 31, a 4 = 0.6, a 31 = 0.5, f S = 17922 Hz). Obr. 8.5 Simulácia modulovej frekvenčnej charakteristiky dvoch oneskorovacích liniek Z rovníc (8.7) a (8.8) môžeme odvodiť signálový graf dvoch oneskorovacích liniek: Obr. 8.6 Štruktúra dvoch oneskorovacích liniek 64

Ako sme uviedli v tretej kapitole, typické oneskorenie efektu chorus je 20 až 30 ms. Skúsme si takéto oneskorenie vyjadriť vo vzorkách. Pre vzorkovaciu periódu platí: T S 1 =. (8.10) f S Teda ak f S = 17 922 Hz, potom vzorkovacia perióda bude: T S 1 1 5 = = = 5.58 10 s (8.11) f 17922 S To teda znamená, že trvanie jednej vzorky bude 5.58 10-5 s. Teraz môžeme určiť oneskorenie vo vzorkách pre uvedené prípady, teda pre oneskorenie 20 ms a 30 ms: M1ms 0.02 M 1 = = 358 5 5.58 10 vzoriek, T S M 2ms 0.03 M 2 = = 537 5 5.58 10 vzoriek. (8.12) T S Na obr. 8.7 uvádzame frekvenčnú charakteristiku pre tieto konkrétne pevné hodnoty oneskorenia a na obr. 8.8 detail tejto charakteristiky. Hodnoty oneskorení teda boli M1 = 358, M2 = 537 vzoriek, váhovacie koeficienty sme zvolili a 358 = 0.6, a 537 = 0.5 pri vzorkovacej frekvencii f S = 17922 Hz. 65

Obr. 8.7 Simulácia frekvenčnej charakteristiky pre konkrétne hodnoty oneskorení Obr. 8.8 Detail simulácie frekvenčnej charakteristiky pre konkrétne hodnoty oneskorení 8.2.2 Implementácia viacerých oneskorovacích liniek Pri návrhu algoritmov viacerých oneskorovacích liniek sme vychádzali z programu chorus.asm, ktorý sme navrhli v bakalárskej práci [12]. V tomto programe sme implementovali jeden kruhový buffer dĺžky M = 992 vzoriek (081Fh 0440h), po ktorom 66