Dr.Godfried-Willem RAES

Kursus Experimentele Muziek: Boekdeel 2: Live electronics

Hogeschool Gent - Departement Muziek en Drama


2043

Toonhoogte naar Midi konversie

Nodige inputsignalen : mikrofoonsignaal

Gewenste output : midi signalen (note ON/Off , pitch shift , aftertouch...)

Een pitch naar midi konverter kan zowel in hardware als in software worden gerealiseerd. Beide aanpakken kampen met dezelfde inherente problemen: het blijkt erg moeilijk een systeem te ontwikkelen dat ook in staat is toonhoogtes uit een polyfoon ingangssignaal te herkennen. De eis dat zo'n toestel zonder al te grote vertragingen ook in real time moet kunnen werken maakt de zaak uiteraard nog heel wat moeilijker.

In 1998-99 realiseerde een toenmalige student, Johannes Taelman, aan het BME (Hogent) een eindwerk rond deze problematiek in samenwerking met het experimentele muzieklabo van het Konservatorium departement en (vooral) de labos van Stichting Logos. Het projekt werd na zijn afstuderen verder uitgewerkt en operationeel gemaakt. Het is in gebruik in het Logos M&M ensemble. Hierbij geven we zijn voorstellingstekst.

Real-time omzetting van geluid in midi

Johannes Taelman

0. Automatische omzetting van akoestische trillingen in partituur-achtige informatie is een onvoltooid onderzoek

1. Toepassingen - Interactieve educatieve applicaties - Interface tussen muzikant en sequencer, automatische transcriptie - Interactieve algoritmische begeleiding - Feedback in synthese

2. Ideale eigenschappen - Polyfoon - Kleine vertragingstijd, real-time - Robuust ten aanzien van niet-tonale geluiden - Interpreteert inharmonische geluiden, en geluiden waarbij de fundamentele frequentie niet aanwezig is - Kan werken met een groot dynamisch bereik Het is praktisch onmogelijk een systeem te ontwerpen dat aan al deze gewenste eigenschappen voldoet.

3. Ontwerpkeuzes - gericht op het gebruikte instrument - modellering van de perceptie - gericht op westerse chromatische toonschaal

3.1 signaalanalyse

3.1.1 Tijdsdomein

3.1.1.1 Tijd tussen nuldoorgangen meten

Deze methode wordt veel toegepast in meetapparatuur voor laagfrequente signalen. Niet geschikt voor complexe signalen. Er zit meer informatie in signalen dan de tijdstippen van de nuldoorgangen.

3.1.1.2 Aantal nuldoorgangen per tijdseenheid meten

Te vinden in meetapparatuur voor hoogfrequente signalen. Om dezelfde reden als voorgaande methode ongeschikt voor complexe signalen.

3.1.1.3 Autocorrelatiefunctie

Dit is de correlatie tussen een stuk van het signaal en het signaal over een bepaalde tijd verschoven. De correlatie is het grootst als de verschuiving in tijd gelijk is aan de periode. Dit is een interessante methode omdat deze analyse de fundamentele frequentie vindt waar deze niet in het signaal voorkomt. De ACF geeft geen betrouwbare resultaten als het signaal inharmonisch of polyfoon is.

3.1.1.4 AMDF (average magnetude difference function)

Heeft nagenoeg dezelfde eigenschappen als de ACF, maar belast een microprocessor veel minder. Wordt toegepast in spraak-codecs.

3.1.2 Frequentiedomein

3.1.2.1 Short-Time fourier-transformatie

Na vermenigvuldiging van het signaal met een tijdsvenster, ontbindt de fourier-transformatie het signaal in sinusoïdale componenten op een lineaire frequentieschaal (constante bandbreedte). Ieder tijdsvenster is echter een compromis. Een kort tijdsvenster geeft een goede tijdsresolutie, maar een slechte frequentieresolutie voor lage tonen. Een lang tijdsvenster resulteert in een slechte tijdsresolutie.

3.1.2.2 Cepstrum

Het cepstrum (anagram van spectrum) wordt bekomen door het nemen van de fourier-transformatie van de logaritme van de short-time fourier-transformatie. Door het gebruik van een tijdsvenster heeft het cepstrum hetzelfde nadeel als de STFT.

3.1.2.3 Bounded-Q transformatie (Q = Kwaliteitsfactor = Bandbreedte / centerfrequentie)

Dit komt overeen met meerdere STFT's waarbij per octaaf het tijdsvenster wordt verdubbeld in lengte. Het compromis tussen tijdsresolutie en frequentieresolutie sluit hierdoor beter aan bij een logaritmische frequentieschaal. De kwaliteitsfactor is echter discontinue op de grens van ieder octaaf.

3.1.2.4 Constant-Q transformatie

De duur van het tijdsvenster is hier omgekeerd evenredig met de centerfrequentie van de frequentiebanden, zonder discontinuïteiten. De frequentieresolutie kan overeenkomen met de chromatische toonschaal, of met bvb. 24 kwarttonen per octaaf (ten koste van tijdsresolutie). De amplitude kan "ogenblikkelijk" per band bepaald worden doordat zowel het reële als het imaginaire deel van elke band te berekenen is. Mits geïmplementeerd wordt met multi-resolutie-technieken, is de CQT efficient te berekenen. Deze technieken zorgen er echter wel voor dat de tijdsvensters wat langer zijn dan strikt nodig, hetgeen resulteert in extra vertraging bij lage frequenties.

3.1.2.5 Wavelet transformatie

Deze transformatie heeft eigenschappen die verwant zijn aan de CQT. De tijdsresolutie is ook omgekeerd evenredig met de centerfrequentie van de frequentiebanden. De frequentiebanden zijn echter niet scherp gedefinieerd, en bevatten aliases. Het grote voordeel van de DWT is dat het signaal perfect gereconstrueerd kan worden met de IDWT. Modificatie van de coëfficiënten tussen DWT en IDWT levert aliases, waardoor het niet geschikt is om het spectrum van geluid te editeren. Deze transformatie wordt toegepast in moderne codec's.

3.1.2.6 Bark-schaal en ERB-schaal filterbanken.

Het is mogelijk een filterbank te construeren met filters die overeenstemmen met metingen van de (empirisch bepaalde) kritische bandbreedte of equivalente rechthoekige bandbreedte van het menselijk oor. Ruwe benaderingen voor CB en ERB zijn ERB(f) = max ( 0.11* f ; 25 Hz ) CB(f) = max ( 0.20 *f ; 100 Hz ) Merk op dat (mits verwaarlozing van de ondergrenzen 25 en 100 Hz) dit overeenstemt met voor ERB een kwaliteitsfactor Q=9 en voor CB Q=5. De standaardafwijking van deze schalen is in de grootteorde van 10 à 20% van de centerfrequentie en extreme afwijkingen van -33% tot +65% zijn waargenomen. Dit soort filterbanken wordt toegepast in feature-extractie van geluid (ondermeer in spraaktechnologie).

3.1.3 Conclusie

Het systeem dat hier verder voorgesteld wordt maakt gebruik van de CQT, omdat deze transformatie gemakkelijk kan gerelateerd worden aan een chromatische toonschaal en tegelijk niet enorm afwijkt van CB/ERB.

3.2 Patroonherkenning

De analyse van een signaal met de CQT geeft informatie over de energieën in frequentiebanden waarvan de centerfrequenties met de chromatische toonschaal overeenstemmen. Ik heb een eenvoudige ad-hoc oplossing uitgewerkt die vrij bevredigende resultaten oplevert. Deze grijpt enkel in op het frequentiedomein, en houdt geen rekening met de evolutie van de energie in tijd. Eerst worden de energieën in de banden omgezet naar een logaritmische schaal, vermits de ervaring van luidheid een uitgesproken logaritmische karakteristiek bezit. De tweede fase bestaat er in lokale maxima te extraheren uit de energieën door de energie in een welbepaalde band te vergelijken met die van de buren. Ik heb gekozen voor een "fuzzy-logic" aanpak: er wordt geen booleaanse waarde gebruikt die aanduidt of een bepaalde band al dan niet overeenstemt met een lokaal maximum, maar een waarde die de prominentie van een eventueel lokaal maximum weergeeft. Ten tweede wordt voor iedere mogelijke toonhoogte berekend in hoeverre dat de eerste drie harmonischen overeenstemmen met een lokaal maximum in de energie van die band. Er wordt ook in rekening gebracht dat op sommige intervallen van de fundamentele frequentie er geen lokaal maximum in energie mag zijn, waar die maxima kunnen overeenstemmen met harmonischen van een andere fundamentele frequentie dan aangenomen. De waarschijnlijkheid dat iedere toonhoogte een fundamentele frequentie is wordt ook weer voorgesteld door een "fuzzy" waarde. Ten derde wordt deze laatste waarde vergeleken met een drempelwaarde. Indien groter wordt er een midi "noot-aan"-commando verstuurd. Daalt die waarde onder een tweede (lagere) drempelwaarde, wordt er een "noot-uit"-commando verstuurd. Eventueel kan de ogenblikkelijke frequentie (uit de CQT) verstuurd worden als "pitch-bend" zodat het systeem ook glissando en vibrato kan volgen. Ook de amplitude van de fundamentele frequentie kan als midi-controller worden verzonden.

4. Implementatie

4.1 Hoog niveau

De eerste simulaties van de CQT gebeurden in MatLab. Deze omgeving is erg handig om numerieke functies te implementeren en data te visualiseren. Het is echter niet geschikt om met grote datasets te werken. Daardoor is de patroonherkenning nooit gesimuleerd in deze omgeving. Real-time simulaties zijn niet haalbaar. De eerste implementatie werd gerealiseerd in C++. Deze taal laat toe efficiënte code te schrijven die in real-time werkt. Eenvoudige visualisering van data is mogelijk in real-time.

4.2 Laag niveau

Het algoritme werd ook geïmplementeerd op een ontwikkelingskit voor Analog Devices DSP's. DSP's zijn microprocessoren met een instructieset die geoptimaliseerd is voor de verwerking van signalen. Deze hebben meerdere, parallel werkende rekeneenheden, en voorzieningen om bvb lussen te programmeren zonder extra klokcyclus om de lusteller te evalueren. Ook circulaire adresseringsmethodes en speciaal adresseringsmogelijkheden voor FFT's zijn voorzien. Deze processoren zijn in staat om een optelling, een vermenigvuldiging en het lezen van twee data-woorden in één klokcyclus uit te voeren. Het schrijven van code voor de AD2181 gebeurde uitsluitend in assembler, omdat dat de enige taal is waarmee een goede efficiëntie bereikbaar is. Visualisering van data is op dit platform niet mogelijk, en het debuggen van code erg lastig.


Terug naar inhoudstafel: <Index kursus>

Terug naar tijdsmeting/pulsopwekking

Naar delers

Naar homepage dr.Godfried-Willem Raes