Automatische detectie van ritmepatronen in muziek

Maat: px
Weergave met pagina beginnen:

Download "Automatische detectie van ritmepatronen in muziek"

Transcriptie

1 Faculteit Ingenieurswetenschappen Vakgroep Telecommunicatie en informatieverwerking Voorzitter: Prof. dr. ir. Herwig Bruneel Automatische detectie van ritmepatronen in muziek door Len Vrijders Promotors: Prof. dr. Guy De Tré, Prof. dr. Marc Leman Begeleiders: Tom Matthé, Olmo Cornelis Scriptie ingediend tot het behalen van de graad van licentiaat in de informatica optie: informatie- en communicatietechnologie Academiejaar

2

3 Faculteit Ingenieurswetenschappen Vakgroep Telecommunicatie en informatieverwerking Voorzitter: Prof. dr. ir. Herwig Bruneel Automatische detectie van ritmepatronen in muziek door Len Vrijders Promotors: Prof. dr. Guy De Tré, Prof. dr. Marc Leman Begeleiders: Tom Matthé, Olmo Cornelis Scriptie ingediend tot het behalen van de graad van licentiaat in de informatica optie: informatie- en communicatietechnologie Academiejaar

4 De auteur geeft de toelating deze scriptie voor consultatie beschikbaar te stellen en delen van de scriptie te kopiëren voor persoonlijk gebruik. Elk ander gebruik valt onder de beperkingen van het auteursrecht, in het bijzonder met betrekking tot de verplichting de bron uitdrukkelijk te vermelden bij het aanhalen van resultaten uit deze scriptie. Gent, augustus 2006 De auteur Len Vrijders

5 Voorwoord Als fervent muziekliefhebber kom ik het meermaals tegen dat ik een liedje gehoord heb en het graag zou willen hebben. Helaas luister ik nooit naar de woorden. Ik ben slagwerker, afgestudeerd aan de Muziekacademie van Buggenhout, en beoordeel hierdoor liedjes op hun muzikale inhoud. Een tekst die driemaal op hetzelfde deuntje geschreven is, boeit me niet. Soms kan een catchy refrein wel eens blijven hangen, maar dan nog zijn het vaak loze woorden. Hierdoor is het natuurlijk ook moeilijk om te onthouden hoe het liedje heet. Een fantastische oplossing zou zijn dat er een zoekmachine bestaat waar ik het deuntje kan neuriën en die me daarna vertelt wat de titel en uitvoerder is. Een dergelijke zoekmachine ontwikkelen vraagt kennis over twee domeinen: het domein van informatica en het domein van muziek. Niet toevallig hebben deze twee werelden me steeds geboeid. Als kleine jongen werd ik door mijn ouders naar de muziekschool gestuurd en dankzij het werk van mijn vader werd ik ondergedompeld in die andere wereld. Uiteindelijk kwam het zo ver dat ik de computer begon te gebruiken om zelf muziek te maken. Na de middelbare school was het kiezen tussen muziekconservatorium of universiteit. De keuze van de richting informatica was snel gemaakt, maar muziek bleef me achtervolgen. In mijn voorlaatste jaar was ik zelf al op zoek gegaan hoe ik in een afstudeerwerk muziek en informatica kon combineren. Mijn oog was toen gevallen op dit onderwerp: patronen zoeken in ritme secties van audio. De hierboven beschreven zoekmachine lijkt momenteel nog toekomstmuziek, maar ik hoop dat ik met dit werk toch al een stapje in die richting gezet heb. Graag zou ik iedereen willen bedanken die heeft bijgedragen tot de verwezenlijking van dit eindwerk. Mijn vrienden, medestudenten, bewoners en ex-bewoners uit Home Astrid en alle anderen die ik met vragen over muziek of informatica ongetwijfeld heb verblijd. In het bijzonder mijn ouders Herman Vrijders en Sabine De Boos voor elke vorm van steun tijdens mijn studies. Ook mijn nicht Eva, studente aan de KUL die net als ik de thesisstress moest ondergaan, moet ik bedanken voor de moed en voor het doorzettingsvermogen dat ze me gegeven heeft; mijn promotors, Prof. dr. Guy De Tré en Prof. dr. Marc Leman, en begeleiders Tom en Olmo en de vakgroepen ELIS en IPEM van de UGent voor het scheppen van de mogelijkheid om dit onderzoek te verrichten. Bedankt iedereen! -Len Vrijders, augustus 2006.

6 Automatische detectie van ritmepatronen in muziek door Len Vrijders Afstudeerwerk ingediend tot het behalen van de graad van licentiaat in de informatica, optie: informatie- en communicatietechnologie Academiejaar Universiteit Gent Faculteit Ingenieurswetenschappen - Vakgroep Telecommunicatie en informatieverwerking [14] Promotors: Prof. dr. Guy De Tré en Prof. dr. Marc Leman Samenvatting De problematiek van dit onderwerp situeert zich in het brede veld van feature extractie uit elektronische media. In dit onderzoeksdomein wordt getracht om op basis van het elektronisch formaat van een object (audio, video, etc...) meer informatie te bekomen over de inhoud van het object. In dit afstudeerwerk zal worden samengewerkt met het Instituut voor Psychoacoustica en Elektronische Muziek (IPEM) [5]. Door het IPEM werd reeds een tool ontwikkeld die toelaat om uit een digitale audio-opname een sequentie van aanslagen op percussieinstrumenten te achterhalen. Daarbij wordt voor elke aanslag het tijdstip en de intensiteit vastgelegd. In dit afstudeerwerk zal een algoritme worden ontwikkeld, dat op basis van een dergelijke sequentie het ritmepatroon van de opname tracht te achterhalen. Discipline: Informatieverwerking Aard: Modellering en implementatie Trefwoorden: patroonherkenning

7 Automatic Detection of Rhythmpatterns in Audio Len Vrijders Supervisor(s): Prof. dr. Guy De Tré, Prof. dr. Marc Leman, Tom Matthé, Olmo Cornelis Abstract This article will give a brief status of the work done in the matter of automatic detection of patterns in rhythm onsets found in musical audio. We will explain some techniques that cover realistic problems found in live-played music. Most solutions are based on techniques using Fuzzy Logic. Keywords Patternrecogniton, Onsets, Fuzzy Logic I. INTRODUCTION THE main goal of our topic is covering some problems specific to the recognition of patterns (small time intervals with events in it that are repeated more than once) in the rhythm section of live music. Most music pieces are not a perfect copy of the score: artists tend to give their own twist to the score (most of the times unwillingly), resulting in an (inaudible to the public) imperfect rendition. The input of our problem are onsets generated by the drumdetect tools[1]. An onset is described by the timestamp on which the event occurs. The extracted onsets are rhythm events, this way, the rhythm is separated from the melody. In the following section, we will explain how patterns can be found when we know the input is perfect, e.g. made by a synthesizer. This way, we know exactly where the events of the patterns are. Of course this approach is not realistic: when a live band plays music, they will always be out of tempo. When using the techniques from the perfect onsets on the live audio no patterns will be found. In section IV, another technique is proposed, one that will find an interval of onsets that is repeated in the live music. When certain conditions are fulfilled, some repetitions can be classified as a pattern, and ultimately as being the pattern of the song as stated in section V. Interval 1 Interval == == == == == != TABLE I MATCHES IN TWO TIME INTERVALS (IN SECONDS), ALONG WITH THEIR INTERONSET VALUE. In table I we can match the first five Interonset Intervals, the last one fails. For index 6, k == 5 and also k == j-i-1 == == 5. If that last one was a match, we would say that interval 2 immeditaly follows interval 1, making the pattern of an ideal length. The last one is not a match so our pattern is made out of the onsets with index 0 till 5. When even one Interonset Interval is slightly different, pattern recognition fails. It its possible to solve this by specifying another equals-method. It is up to the user to decide if the value of Abs(δ j+k - δ i+k ) 1 must be equal to zero or not. When a value higher than zero is being allowed, a less-perfect-input can be used and pattern recogniton may succeed. However, this algorithm will fail when somewhere in the song there is an event that is not on it s place, e.g. the drummer tapped two times on a tom-tom when he should have tapped only one time. II. PERFECT ONSETS After onsets are generated, the Interonset Interval[2] can also be generated. An Interonset Interval is the time between two onsets and just that. An Interonset Interval is not the same as the length of an event. It is in the Interonset Interval values patterns will be searched for. Repetitions of certain values in a row will result in a pattern. Patterns can be found as followed: Find 2 equal values: δ i en δ j Now check if δ i+k == δ j+k holds, starting seperated by some time t) can be thought of as being the same with k=1. For every k that the above holds, a pattern is found. If k == j-i-1 then pattern starting with δ j follows pattern starting with δ i. This simple algorithm will find patterns in a perfect input. The last line states that if k equals j-i-1, no other events are in between the patterns. III. FUZZY LOGIC Fuzzy Logic[3] uses a membership function to denote the degree to which an object is valid against a given statement. The classic Boolean Logic has values 0 (false) or 1 (true), whereas Fuzzy Logic uses a value between 0 and 1. E.g. the temperature of water can be cold (0) or hot (1). But what if the water is something in between? Then Fuzzy Logic would assign a value between 0 and 1 to that given temperature. The same principle can be applied to the case of the onsets: two events (a and b in figure 1) from two intervals (meaning they are event within a pattern, even though they are not exactly on the same place where the tempo of the song would want them to be. The membership function used has a base, an interval with the time of the event in the middle. When the possibility that two events can be the same is being calculated, an interval can be made around the two events. This will make it possible to cal- 1 Abs(x) is the absolute value of x.

8 culate the amount of equalness between two events based on an overlapping surface (figure 1). Ignoring the start and the end of a pattern, it is still likely that humans will make up their own pattern, one that resembles very close to the real pattern. No worries, it is possible to calculate the edit-distance 2 and still match it. Suppose there are 3 patterns found in the song (fig. 2), the question remains which one to label as the pattern. The number of repetitions are all the same, so they all are entitled to being the pattern. The edit-distance can now be calculated: for every event that has to be inserted, a cost of λ is added. With this distance, an expression (the elements in table II) can be made as to how far patterns match each other; a value of 1 expressing a perfect match, meaning no event had to be inserted to match the patterns Fig. 2. Three patterns found in the same song. Two events are marked white, meaning they have no match in the other patterns. Fig. 1. Poss[b=a] is calculated by the overlapping surface. IV. MATCHING INTERVALS The number of events in a pattern should be at least 3. Less will induce many short repetitions that frequently tend to nothing instead of a pattern. When there are n events in an interval, a technique is needed to match them to M events from another interval. For an event from an interval 1 and an event from an interval 2, the technique explained in the previous section can be used. Now the reader probably noted already that the two intervals do not have the same amount of events. Even when they are equal, some events may not be matched. This means that a new event should be inserted. This can be easily achieved by thinking there is an event in the other interval to match it. This will of course induce a cost, named λ (0 λ 1). This techniques lends itself to solve problems when notes are played that shouldn t have been played. Also, when there is a complete silence (a period in time having length equal to the current intervallength) in between patterns, this technique can be used to continue searching for more occurences of the current parrent. V. SELECTING the PATTERN When more than one candidate-pattern is found, some conditions are needed to select the pattern that is the most realistic to humans as being the pattern. However, a small experiment showed that even a large group of humans do not tend to hear the same pattern in the same song. Selecting the best pattern seems to be a subjective matter. But a closer look at those results showed that each of the patterns were actually the same, they just started on another note. So instead of giving a pattern a start- and an end-event, it is possible to look at the patterns as being cyclic. Pattern 1 Pattern 2 Pattern λ λ Pattern λ 5 + λ Pattern λ 5 + λ Pattern TABLE II EXPRESSIONS OF MATCHES BETWEEN PATTERNS FROM FIG. 2 Now all of these values per row from the matrix in table II are added and divided by the number of patterns. We have (for λ equal to 0): ( )/3 for pattern 1 and pattern 3, ( )/3 for pattern 2. This gives 0.85 and These are numbers that express the gradation of the patterns. Pattern 2 has the highest gradation, meaning this one has to do the least amount of work to transform itself into all of the other found patterns. So only pattern 2 is being called the best pattern. VI. CONCLUSIONS A technique based on Fuzzy Logic was proposed to search for patterns in Interonset Intervals. An implementation was made and succesfully found patterns in manually made audio based on simple (simple in the way that only a very few number of instruments were used) rhythm sections. REFERENCES [1] K. Tanghe and S. Degroeve and B. De Baets, An algorithm for detecting and labeling drum events in polyphonic music, Proceedings of the first Music Information Retrieval Evaluation exchange (MIREX), London, United Kingdom, September 11-15, [2] J. London, Hearing in Time : Psychological Aspects of Musical Meter, Oxford University Press, USA, September [3] L.A. Zadeh, Fuzzy Sets, Information and Control , edit-distance: amount of work needed to transform a pattern into another pattern

9 Inhoudsopgave 1 Inleiding Uitwerking Drum detectie Patroonherkenning Perfecte onsets Introductie Werken via een voorbeeld Onsets Naar een algoritme Algoritme met de hand Algoritme met δ-waarden Slechtere input Een foutmarge De kleinste foutmarge Conclusie Naar meer realisme Introductie Minder strak gespeeld Vage Logica Vage Logica toegepast Vaste intervallengte Meerdere patronen Overlappende oppervlakten Ruis Onduidelijkheden in patroon Pauze Perfecte pauze Algortime Conclusie Toepassingen Introductie Tempo afleiden vi

10 Inhoudsopgave p. vii 4.2 Genormaliseerd patroon Patronen vergelijken Gemiddeld patroon Software Introductie Code Output Autocorrelatie Tests en vergelijkingen Zelfgemaakte Voorbeelden Muziekfragmenten Samenvatting Uitvoeringstijd Conclusie Besluit Suggesties Relevance parameter Tempo afleiden Andere vormen van pauze Tempo verandering Verschillende instrumenten A Handleiding 121 A.1 Benodigdheden A.2 Command line opties A.3 Output B Projectbeschrijving 125 B.1 Klankarchief B.2 Opdracht B.3 Doelstellingen B.4 Promotoren B.5 Financiering Bibliografie 128 Lijst van figuren 130 Lijst van tabellen 133

11 Hoofdstuk 1 Inleiding Dit afstudeerwerk past in het DEKKMMA-project (Digitalisatie van het Etnomusicologisch Klankarchief van het Koninklijk Museum voor Midden-Afrika) dat het IPEM samen met TELIN uitvoert. Dit project is een samenwerking tussen het Koninklijk Museum voor Midden-Afrika (KMMA), Université Libre de Bruxelles en Universiteit Gent, en heeft als opdracht het etnomusicologisch klankarchief van het KMMA te digitaliseren. Een beschrijving van dit project is te vinden als bijlage B. 1.1 Uitwerking Het IPEM en TELIN van de UGent staan in voor de annotatie van de muziek. De bedoeling is om aan elk lied een kenmerkenvector te koppelen. Al deze vectoren worden in een databank bijgehouden. Er zal dan een mogelijkheid [8] gecreëerd worden om op basis van enkele kenmerken liederen te zoeken die sterk op het gevraagde lijken. Deze scriptie zal verderwerken op reeds bestaande tools van het IPEM uit het MAMI [6] -project. Meer bepaald wordt gebruik gemaakt van de Drum detection console applications [13]. De bedoeling is tot een algoritme te komen om in onsets (een onset is een tijdstip waarop een event plaats heeft) te zoeken naar patronen en herhaling van deze patronen. Een doelpatroon is liefst zo lang mogelijk (herhaling niet inbegrepen) en wordt zoveel mogelijk herhaald. In dit afstudeerwerk komen informatica en muziek samen. Voorkennis van beide domeinen is gewenst, maar van de meeste begrippen zal een kleine voorlichting gegeven worden Drum detectie De Drum detection console applications (applicaties geschreven met bevindingen uit het MAMIproject [13], [16], [17], [15] ) worden aangepast aan de noden van de muziek van het KMMA. Origineel 1

12 1.1. Uitwerking p. 2 zoeken deze tools immers naar Westerse muziek met Westerse instrumenten zoals bassdrum, snaredrum en cymbaal. Deze tools hebben uiteindelijk als output een lijst van koppels (tijd,relevantie) voor ieder gevonden event. Voor elk event aanwezig in deze lijst gelooft [3] de gebruikte tool dat dit event afkomstig is van een percussie-instrument. Het is voor deze lijst van tijd-events zijn dat we een algoritme zullen ontwikkelen dat een patroon kan vinden Patroonherkenning Vooraleer een implementatie te geven dat patronen kan vinden in onsets, zoeken we enkele technieken die een basis vormen voor de implementatie. We beginnen door te veronderstellen dat we een perfecte input hebben, waarmee we bedoelen dat we al op voorhand weten dat er een patroon te vinden is. We gaan op zoek naar een manier hoe we dit patroon kunnen vinden. Eens we een algoritme hebben gevonden, bekijken we wat er te kort is om ook realistische input te verwerken. Hiervoor hebben we ons gebaseerd op het principe van vage logica om patronen die niet exact gelijk zijn toch met elkaar te vergelijken.

13 ˇ ˇ Hoofdstuk 2 Perfecte onsets 2.0 Introductie In dit hoofdstuk beginnen we met zelf gemaakte audio waar we de data uithalen om een patroon te zoeken. We passen deze data aan, zodat we op voorhand weten waar herhalingen zich voordoen en wat het patroon is. We zullen een algoritme beschrijven dat op dit soort input kan werken. 2.1 Werken via een voorbeeld I 44 ˇ ˇ ( ˇ ˇ ( Ľˇ ˇ ˇ ( ˇ? > ˇ ˇ ( ˇ ˇ ( Ľˇ ˇ ( ˇ ˇ? > Figuur 2.1: Voorbeeld input. Een patroon is hier tweemaal herhaald en bestaat uit negen noten. Dit is een eenvoudig ritme. De representatie is in MIDI (Musical Instrument Digital Interface), channel 10. Channel 10 in MIDI is speciaal gereserveerd voor slagwerk: elke lijn op een notenbalk is eigenlijk een ander instrument. In dit voorbeeld gebruiken we twee verschillende instrumenten. Het is de taak van de Drum detection console applications [13] om een goede output te produceren die alle noten van de verschillende instrumenten kan vinden. In tabel 2.1 staat de output die deze tools gegenereerd hebben. In plaats van deze output te gebruiken, maken we zelf de output voor dit ritme omdat de tools rekenfouten introduceren: een computer werkt met een eindig aantal decimalen. Als we deze output wat aanpassen, weten we meteen waar patronen aanwezig zijn. In tabel 2.2 staat de uiteindelijke bijgewerkte input voor het algoritme. 4 Het gebruikte tempo staat op 150BPM (Beats Per Minute) en de maatsoort is. Dit betekent 4 3

14 2.2. Onsets p. 4 dat er vier 4 e noten zijn per maat en dat er per minuut e noten gespeeld worden. Dit geeft seconden voor de duur van een 4 e noot. Voor een 8 e noot komt dit op seconden enzovoort. 2.2 Onsets Een onset [10] is een tijdstip waarop een event zich voordoet. De tijd tussen twee opeenvolgende onsets noemen we het interonset interval. Merk op dat deze tijd niet gelijk is aan de duur van het event. Indien een noot wordt gespeeld, kan er tijdens de duur van deze noot nog een andere noot beginnen. Dit is zeker zo in het geval van polyfone muziek. Daar we geen bijkomende informatie hebben over duurtijden per noot, gaan we ervan uit dat we monofone muziek gebruiken. Het interonset interval kan dan aanzien worden als duur tot het volgende event en ook als duur van het huidige event. In tabel 2.2 is bij elk event x seconde te zien. Dit heeft te maken met het eerste event, namelijk het begin van een liedje. We staan even stil bij de vraag: wanneer begint een liedje? Noemen we het eerste geluid dat we vinden het begin en zetten we dit op tijd = 0 seconden? Mag dat geluid enkel het begin van een slaginstrument zijn? Mag dat geluid enkel het begin van het te zoeken patroon zijn? Uiteraard kan deze afwijking afkomstig van de bronopname zijn: er werd iets voor het begin van het liedje op de opname-knop gedrukt. Een dirigent van een orkest zal ook eerst een lege maat slaan zodat de artiesten samen op hetzelfde moment beginnen te spelen. Als we de voorgaande vragen omzetten in eisen roepen deze veel beperkingen op, zodat enkel nog op een beperkt aantal inputmogelijkheden het algoritme zou werken. We wensen op zoveel mogelijk liedjes ons algoritme los te laten, dus proberen we al deze beperkingen overboord te werpen. In een later stadium zullen we het algoritme verfijnen zodat we ook rustperiodes vóór en na een herhaling van het patroon mogen invoegen. De onsets uit tabel 2.1 hebben elk zo n 14 decimalen. We vragen ons af of dit wel nodig is. Immers in geluid is het zo dat het menselijk oor geen verschil kan merken tussen de events en (gesteld dat ze door hetzelfde instrument en met dezelfde luidheid gespeeld worden). Sterker nog, het menselijk oor kan pas events onderscheiden die minimaal 50ms [10] van elkaar gescheiden zijn. Als we hier rekening mee houden, dan hebben we al meer dan genoeg met 3 decimalen, wat gelijk is aan 1 milliseconde.

15 2.2. Onsets p. 5 Event OnsetTime Event OnsetTime Tabel 2.1: De originele onsets Tabel 2.2: De aangepaste onsets

16 2.3. Naar een algoritme p Naar een algoritme Om tot een algoritme te komen dat het patroon zal vinden in muziekvoorbeeld 2.1, gebruiken we een methode zoals we het met de hand zouden doen, gelijkend op [2] Algoritme met de hand 1. Neem de tijd van het eerste event: tijd 1 Neem de tijd van het tweede event: tijd 2 Neem de tijd van het derde event: tijd 3 2. Bereken: δ 1,2 = tijd 2 - tijd 1 δ 2,3 = tijd 3 - tijd 2 3. Nu zoeken we een tijd k, tijd k+1 en tijd k+2 zodat (δ k,k+1 == δ 1,2 ) en (δ k+1,k+2 == δ 2,3 ) 1 t 1 t 2 t δ 1,2 δ 2,3 2 t p t p+1 t p δ p,p+1 δ p+1,p+2 3 t q t q+1 t q δ q,q+1 δ q+1,q+2 Figuur 2.2: Visualisatie van algoritme 1 In figuur 2.2 is dit algoritme visueel voorgesteld. De as is de tijdlijn, de bollen zijn events die zich op dat tijdstip t voordoen. We zien dat δ 1,2 niet gelijk is aan δ p,p+1 dus het voorgesteld patroon 2 is niet gelijk aan patroon 1. Voor patroon 3 geldt dat δ q,q+1 gelijk is aan δ 1,2 en δ q+1,q+2 gelijk is aan δ 2,3 met andere woorden patroon 3 is gelijk aan patroon 1. We zouden ook de afstand van t 1 tot t 3 kunnen vergelijken met de afstand van t q tot t q+2 om te zien of deze ook een patroon vormen. Maar aangezien deze afstand gelijk is aan δ 1,2 +δ 2,3 wordt deze afstand impliciet meegerekend en hoeft dit niet expliciet berekend worden.

17 2.3. Naar een algoritme p. 7 Aan de hand van dit algoritme kunnen we al enkele verbeteringen aanbrengen. ˆ Er wordt vooral met de tussen-event-tijden gerekend. Deze kunnen we al op voorhand berekenen. Ook weten we niet hoeveel events we in stap 1 moeten nemen om te vergelijken. De oplossing hiervoor is een venster te gebruiken. Dit venster kunnen we vergroten, maar timestamp van laatste event ook verschuiven. De maximale grootte van het venster is. 2 Immers als een interval langer is dan deze maximale grootte, is het onmogelijk om nog een herhaling te vinden van dat interval. Verschuiven kan wel over alle events. ˆ Hier zal al een eerste beperking ingevoerd worden: de minimale lengte van een patroon. We proberen eigenlijk zo vaag mogelijk te blijven over wat een patroon juist is, maar langzaam aan zullen we er toch een beter beeld over moeten krijgen. Waarom is deze minimale lengte belangrijk? Stel dat we patronen kunnen beschouwen van lengte = 1 event. Dan kunnen we eigenlijk elk ander event met dit ene event vergelijken en zeggen dat deze gelijk zijn. Dit resulteert in een te groot aantal patronen, wat niet wenselijk is. ˆ Ook voor lengte = 2 events zullen er nog veel patronen te vinden zijn, zoals geïllustreerd in tabel 2.3. Deze patronen komen veel voor en zijn eigenlijk gewoon de tijd tot het volgende event. Als we deze patronen breder bekijken (volgende en/of vorige waarde erbij nemen) zien we dat er geen sprake meer is van een herhaling. Ons algoritme gebruikt meteen twee δ-waarden zodat het minimum aantal events 3 moet zijn. Dit kan nog betwist worden voor een liedje waar het ritme enkel bestaat uit opeenvolgende noten van dezelfde duur die daar eigenlijk het patroon vormen. Is het die ene noot die altijd herhaald wordt, of is het een opeenvolging van noten die herhaald worden? Een beter minimum is dan niet het aantal events, maar wel een tijdsinterval Tabel 2.3: Hier zijn alle 8 e noten (duur = 0.200s) gevonden als patroon voor lengte = 1. Er is enkel een structuur te zien als we meerdere noten bij elkaar nemen. Voor de leesbaarheid in milliseconden genoteerd. ˆ Als er een minimale lengte wordt vastgezet, kunnen we dan ook een maximale lengte vastzetten? Het is beter dit niet te doen, daar het algoritme inventief genoeg moet zijn om in een gevonden patroon deelpatronen te ontdekken. Zo een patroon kan dan gereduceerd worden tot een patroon met een minimum lengte. Is dit het geval, dan mocht dat patroon eigenlijk niet aangezien worden als een patroon. Dit brengt een beperking mee naar de vraag: zoek

18 2.3. Naar een algoritme p. 8 het langst mogelijke (in tabel 2.3 willen we rechthoeken met meer dan één event, liefst zoveel mogelijk), meest herhaalde (het aantal rechthoeken moet zo hoog mogelijk zijn) patroon. ˆ Nog een bijkomend probleem is het laatste event. Er komt geen event meer zodat we ook geen tussen-event-tijd (meer bekend als interonset interval of IOI ) kunnen berekenen. Dit lossen we op door een dummy waarde te gebruiken die elke mogelijke waarde kan betekenen. In tabel 2.5 staan nu ook de tussen-event-tijden vermeld. We kunnen nog opmerken dat de tussenevent-tijd schijnbaar de duur van het vorige event bepaalt. Immers, voor slaginstrumenten is er geen verschil te horen tussen de voorbeelden in figuur 2.3, tenzij bij sommige instrumenten een rust dempen betekent, maar dit komt niet vaak voor. Het gebruik van een dummy waarde blijkt geen invloed te hebben op de definitie van een onset in sectie 2.2: het interonset interval is niet te interpreteren als duurtijd van een event, maar wel als duurtijd tot het volgende event. I 44 ˇ ˇ ˇ ˇ I 44 ˇ (? ˇ (? ˇ (? ˇ (? I 44 ˇ ˇ ˇ ˇ Figuur 2.3: Gespeeld door een slaginstrument klinkt dit driemaal hetzelfde. Het is moeilijk om bij slaginstrumenten de duur van een noot te bepalen. Een tweede algoritme zal op de lijst van δ-waarden inwerken, want daar kan je zelfs met het blote oog meteen herhalingen van patronen zien. Dit zullen we dan ook implementeren Algoritme met δ-waarden Neem twee gelijke interonset-waarden: δ i en δ j Ga nu na of voor elke opeenvolgende k, startend vanaf k:=1 geldt: δ i+k == δ j+k Als dit zo is, dan hebben we een herhaling gevonden. Als bovendien geldt dat k == (j-i-1), dan is een aansluitend patroon gevonden.

19 2.3. Naar een algoritme p. 9 Event OnsetTime delta dummy Tabel 2.4: De originele onsets met berekende tussenwaarde Event OnsetTime delta dummy Tabel 2.5: Zelfgemaakte onsets met berekende tussenwaarde

20 2.3. Naar een algoritme p. 10 Om wat duidelijkheid te scheppen, illustreren we dit algoritme door gebruik te maken van het voorbeeld: Input: δ-waarden uit tabel 2.5 met als dummy-waarde -1. Deze waarden kunnen we vergelijken met de noten uit het muziekvoorbeeld 2.1. Daar hebben we beschreven hoe we deze tussentijden (0.400 voor een 4 e, voor een 8 e ) exact kunnen berekenen : : : : : : Tabel 2.6: Output: Enkele mogelijke patronen. De herhalingen zijn aangeduid door een rechthoek. ˆ Aangezien het gebruik van een dummy betekent dat gelijk is aan en gelijk is aan volgt hieruit dat ook gelijk is aan Zodat we dit ook als herhaling kunnen aanzien. Uiteraard geldt dat bij het ontbreken van een dummy dat niet gelijk is aan ˆ In het 3 e resultaat is i gelijk aan 1 en j gelijk aan 12. Vanaf k gelijk aan 2 geldt δ 3!= δ 14. Het patroon stopt dus met δ 2. ˆ In het 6 e resultaat is i gelijk aan 1 en j gelijk aan 10. Bovendien is de laatste k gelijk aan j-i-1 = = 8 wat betekent dat het deel startend met δ 1 aansluit op het deel startend met δ 10. ˆ Er is meer dan één herhaling gevonden. Sommige patronen zijn langer, sommige zijn meer gebruikt. Wederom rijst de vraag: wat is hier het patroon? We zouden graag van resultaat 6 zeggen dat dit het patroon tweemaal bevat. In de context van perfecte liedjes is de helft van resultaat 6 het patroon: het is een herhaling dat in heel het liedje aanwezig is en als we het patroon herhalen bevat deze verzameling alle events. Als we deze regel gebruiken, hebben we het patroon gevonden. Voor tabel 2.6 komt dit neer op het zoeken per lijn

21 2.4. Slechtere input p. 11 naar zoveel mogelijk rechthoeken en zoveel mogelijk events per rechthoek. Zo één rechthoek apart wordt dan aanzien als het patroon. 2.4 Slechtere input Het algoritme beschreven in de vorige sectie werkt op perfecte input. Echter, de realiteit is niet zo perfect zoals te zien is in de gedetecteerde onsets (tabel 2.1). Als nog maar één van de getallen een kleine afwijking vertoonde, zou het patroon niet gevonden zijn. We kunnen dit toch verhelpen door een niet zo strikte eis te stellen aan het gelijk zijn van twee δ-waarden Een foutmarge Stel dat onze perfecte input eigenlijk en wat later is. Dit zijn slechts enkele milliseconden verschil. Enkel een computer kan horen dat dit niet allemaal hetzelfde is. Als een mens het verschil niet hoort, kunnen we de computer dit ook niet verbieden. In plaats van dat exact gelijk moet zijn aan (dus door te verifiëren dat 404 gelijk is aan 421, 192 aan 202, 388 aan 410), kunnen we een foutmarge toelaten. Twee interonset intervallen δ 1 en δ 2 zijn dan gelijk als en slechts als Abs(δ 1 -δ 2 ) 1 <= foutmarge. Het algoritme wordt dan: Neem twee interonset-waarden zodat Abs(δ i -δ j ) <= foutmarge Ga nu na of voor elke opeenvolgende k, startend vanaf k:=1 geldt: Abs(δ i+k -δ j+k ) <= foutmarge Als dit zo is, dan hebben we een herhaling gevonden. Als bovendien geldt dat k == (j-i-1), dan is een aansluitend patroon gevonden. We laten dit algoritme nu inwerken op de data uit tabel 2.4 met foutmarge = 20ms. De input is Met -1 bedoelen we de dummy waarde. Dit zijn enkele resultaten: 1: : : Abs(x) is de absolute waarde van x

22 2.5. Conclusie p. 12 ˆ Het eerste resultaat is te verklaren doordat de dummy waarde betekent dat gelijk is aan en gelijk is aan zodat ook gelijk is aan ˆ Het langste patroon met alle events is nu niet aanwezig. Dit komt omdat Abs( ) = 25 groter is dan de foutmarge De kleinste foutmarge We kunnen een algoritme maken dat zelf op zoek gaat naar een foutmarge zodat zo veel mogelijk events (dit aantal wordt op voorhand vastgezet of kan bijvoorbeeld minstens twee derde van het totale aantal events zijn) gebruikt worden. Dit kan gemakkelijk gedaan worden door de foutmarge iteratief te verhogen: Stel foutmarge gelijk aan 0. Neem twee interonset-waarden zodat Abs(δ i -δ j ) <= foutmarge Ga nu na of voor elke opeenvolgende k, startend vanaf k:=1 geldt: Abs(δ i+k -δ j+k ) <= foutmarge Als dit zo is, dan hebben we een herhaling gevonden. Als bovendien geldt dat k == (j-i-1), dan is een aansluitend patroon gevonden. Is geen patroon gevonden of is het langste patroon te kort, verhoog dan de foutmarge en begin opnieuw. Het gewenste patroon is: Om al deze events te gebruiken blijkt dat de foutmarge minstens 25ms moet bedragen. 2.5 Conclusie We hebben een algoritme voorgesteld dat kan worden uitgebreid om kleine fouten op te vangen zodat er toch een patroon gevonden kan worden. We moeten in principe de gebruiker zelfs niet vragen om expliciet een foutmarge aan te geven, maar kunnen hem vragen hoeveel events er zeker gebruikt moeten worden. Indien de foutmarge dan te groot wordt, is het aan de gebruiker om te oordelen of het daadwerkelijk om een patroon gaat. De technieken beschreven in dit hoofdstuk kunnen enkel toegepast worden op input afkomstig van bijna-perfecte muziek. Indien er in de input een event niet op zijn plaats staat, faalt het vinden

23 2.5. Conclusie p. 13 van een patroon. Het algoritme aanziet elke herhaling als patroon. Deze verzameling kan groot zijn, terwijl we geïnteresseerd zijn in slechts één oplossing. Het selecteren van het beste patroon gaan als volgt: 1. Zoek de patronen die het meeste gebruikt worden: het maximum aantal herhalingen. 2. Indien vorige verzameling geen singleton is, zoek het langste basispatroon: dit heeft het maximum aantal onsets per interval. Bemerk dat het omdraaien van deze stappen niet tot hetzelfde resultaat komt. Indien eerst stap 2 wordt uitgevoerd zullen er lange patronen (veel onsets per rechthoek, cfr. tabel 2.6) worden gevonden, maar deze worden meestal slechts één maal herhaald.

24 Hoofdstuk 3 Naar meer realisme 3.0 Introductie Niet veel artiesten kunnen perfect (zoals een synthesizer) in de maat spelen. Als we dan twee dezelfde patronen moeten onderzoeken op gelijkheid, moet er enige afwijking toegelaten worden om dit probleem aan te pakken. Een methode die ons hiervoor geschikt lijkt is het domein van de vage logica. In dit hoofdstuk zullen we enkele problemen aankaarten die veel voorkomen in live gespeelde muziek. Het moet bijvoorbeeld mogelijk zijn om een noot die niet op zijn plaats staat te negeren en verder te zoeken naar patronen. In sectie 3.3 noemen we dit ruis. Het blijkt dat we die ruis-techniek ook kunnen gebruiken om uit meerdere patronen het beste patroon te vinden. 3.1 Minder strak gespeeld Vage Logica Om imperfecties op te sporen en te negeren maken we gebruik van vage logica. In de traditionele booleaanse logica is een propositie enkel waar of vals (0 of 1) en niets anders. In de vage logica gebruiken we waarden tussen 0 en 1 om uit te drukken hoe sterk iets waar of vals is. Dit wordt berekend door het gebruik van een lidmaatschapsfunctie. Een grondige studie van vage logica is te vinden in onder meer het werk van Prof. E. E. Kerre [7] of Prof. L. Zadeh [18]. Het voorbeeld in figuur 3.1 zal wat duidelijkheid scheppen. Bijvoorbeeld voor het begrip is ongeveer 60 jaar oud zal elke persoon die exact 60 jaar is (punt a), de waarde 1 hebben. Personen die net geen 60 zijn (punt b) hebben een kleinere lidmaatschapswaarde (punt c) voor dit begrip. Als we punt p gelijk stellen aan 40 jaar en punt q gelijk stellen aan 80 jaar zullen personen die 20 jaar zijn waarde 0 hebben. Waarmee we van deze personen 14

25 3.1. Minder strak gespeeld p. 15 Figuur 3.1: Vage Logica zeggen dat ze niet ongeveer 60 jaar oud zijn. Het punt a wordt vergeleken met punt b. We krijgen de volgende resultaten voor de possibiliteit dat punt b gelijk is aan punt a: 1 : b = a b p c = Poss[b = a] = a p : p < b < a q b q a : a < b < q 0 : b p of b q (3.1) De lidmaatschapsfunctie is hier een symmetrische driehoek rondom het punt a met een parameter die de breedte van de driehoek moet voorstellen. Er bestaan verschillende soorten lidmaatschapsfuncties. In figuren 3.2a tot en met 3.2f zijn enkele functies afgebeeld Vage Logica toegepast De manier hoe vage logica verschillende punten van elkaar onderscheidt, is uiterst geschikt om een maat te geven aan patronen die sterk op elkaar gelijken maar het toch niet zijn. Om dit uit te drukken, hebben we een lidmaatschapsfunctie nodig. We gaan op zoek naar, voor onze toepassing,

26 3.1. Minder strak gespeeld p. 16 (a) Driehoekige lidmaatschapsfunctie (b) Kwadratische lidmaatschapsfunctie (c) Lidmaatschapsfunctie met wortel (d) Rechte lidmaatschapsfunctie (e) Assymetrische lidmaatschapsfunctie (f) Niet-stijgende lidmaatschapsfunctie Figuur 3.2: Enkele lidmaatschapsfuncties

27 3.1. Minder strak gespeeld p. 17 bruikbare en niet-bruikbare lidmaatschapsfuncties. ˆ Een eerste vereiste is dat de functie symmetrisch moet zijn. Er is geen reden dat events die langs weerskanten even ver van een ander liggen niet dezelfde lidmaatschapsgraad zouden hebben. In figuur 3.2e is een assymetrische functie gebruikt. Het punt a-ɛ en het punt a+ɛ hebben niet dezelfde lidmaatschapsgraad, bijgevolg is deze functie niet bruikbaar. ˆ Een tweede vereiste is dat de functie stijgend resp. dalend moet zijn langs links resp. rechts van de top. In figuur 3.2f is er een niet-stijgende functie gebruikt. Het kan nu voorvallen dat een punt b dat dichter gelegen is tot punt a dan een punt c toch een kleinere lidmaatschapsgraad heeft dan punt c. In deze context is er geen reden dat dit wordt toegelaten. Dus dergelijke functies moeten niet gebruikt worden. In elke lidmaatschapsfunctie is een interval als basis te zien. In de figuren van 3.2 is dit interval [p,q]. Om de lidmaatschapsgraad te berekenen tussen twee punten hebben we een waarde nodig voor deze basis. In muziek is een mogelijke keuze de kleinst mogelijke waarde tussen twee opeenvolgende events. ˆ Als dit groter is kunnen noten overlappen. In figuur kan noot a nu vergeleken worden met noot b en met noot c. ˆ Als dit kleiner is (figuur 3.4) dan kunnen sommige noten niet vergeleken worden met een andere. We moeten uiteindelijk toch een keuze maken voor een interval om in de hele analyse te gebruiken. Kleiner dan de kleinste waarde tussen twee opeenvolgende events van alle events (een interonset interval - IOI ) mag dit niet zijn, anders zullen er zeker events zijn die geen tegenkandidaat hebben. Als we ze groter zouden nemen, zullen er intervallen zijn die elkaar overlappen. Dit is niet wenselijk. Onze keuze is het kleinste interonset interval van de te analyseren onsets. De vraag stelt zich nu of er een verschil moet gevonden worden voor het geval dat b dicht bij a ligt en b dicht bij de grenzen p of q (zie figuur 3.1). Met andere woorden, is het wel nodig dat deze gevallen andere lidmaatschapsgraden moeten krijgen? Immers, nu de patronen niet meer perfect in de maat gespeeld zijn, kunnen we niet meer weten wat het juiste patroon is. In figuur 3.2d wordt een rechte lidmaatschapsfunctie gebruikt: alle punten die tussen p en q liggen hebben als lidmaatschapsgraad 1. Het kan toch aangewezen zijn om te weten dat als events toch niet perfect op elkaar liggen, dit dan ook in rekening wordt gebracht. In dit geval kunnen we geen rechthoek gebruiken. 1 Om berekeningen te maken liggen punten a, b, c uiteraard allemaal op de X-as (op y = 0). Maar om iets overzichtelijkere figuren te geven plaatsen we punten van een ander patroon iets lager dan de punten uit het patroon waarmee deze vergeleken worden.

28 3.1. Minder strak gespeeld p. 18 Figuur 3.3: Te grote breedte: de intervallen rond b en c overlappen elkaar. Figuur 3.4: Te kleine breedte: noot c kan niet meer worden vergeleken.

29 3.1. Minder strak gespeeld p. 19 Nu kunnen we tot een algoritme komen om twee patronen te vergelijken met vage logica en een waarde berekenen in welke mate ze op elkaar gelijken. In figuur 3.5 is te zien hoe we dit doen. Voor elk punt wordt de lidmaatschapsgraad berekend, gebruik makend van een rechte lidmaatschapsfunctie. Punt a 2 ligt dicht genoeg bij a 1 zodat Poss[a 2 =a 1 ] = 1. Dit geldt ook voor de andere punten. Om de globale waarde van een patroon met n events te berekenen gebruiken we: Poss[p(1 1, 1 2,..., 1 n ) = p(2 1, 2 2,..., 2 n )] = 1 n (Poss[1 1 = 2 1 ] + Poss[1 2 = 2 2 ] Poss[1 n = 2 n ]) Uit figuur 3.5: (3.2) Poss[a 1 = a 2 ] = 1 Poss[b 1 = b 2 ] = 1 Poss[c 1 = c 2 ] = 1 Poss[d 1 = d 2 ] = 1 (3.3) Patroon 2 met punten (a 2,b 2,c 2,d 2 ) is gelijk aan patroon 1 met punten (a 1,b 1,c 1,d 1 ) in de mate 1 ( ) = 1. 4 We gebruiken possibiliteiten en geen probabiliteiten. Poss[a=b] = 1 betekent dat het mogelijk is dat a gelijk is aan b, maar het is niet zeker. Prob[a=b] = 1 betekent dat er geen andere mogelijkheid meer is dan dat a gelijk is aan b. Hetzelfde wordt nu eens gedaan met een driehoekige lidmaatschapsfunctie in figuur 3.6. De possibiliteiten zullen nu niet allemaal 1 zijn. Uit figuur 3.6: Poss[a 1 = a 2 ] = 0.58 Poss[b 1 = b 2 ] = 0.40 (3.4) Poss[c 1 = c 2 ] = 0.20 Poss[d 1 = d 2 ] = 0.62 Patroon 2 met punten (a 2,b 2,c 2,d 2 ) is gelijk aan patroon 1 met punten (a 1,b 1,c 1,d 1 ) in de mate 1 ( ) = Dit is veel slechter dan wanneer we een rechthoekige lidmaatschapsfunctie gebruiken. Dit is enerzijds te verklaren door de lineariteit van de driehoek: hoe verder van het middelpunt, hoe lager de lidmaatschapsgraad is. Exact de helft van de punten in het interval heeft een lidmaatschapsgraad die hoger is dan 1 2. Uiteraard heeft het geval met de driehoek meer gelijk dan het geval met de rechthoek als het aantoont dat alle lidmaatschapsgraden niet gelijk zijn aan 1. De twee patronen zijn ook niet perfect

30 3.1. Minder strak gespeeld p. 20 Figuur 3.5: Voor elke 2 noten wordt een possibiliteitsmaat berekend. Figuur 3.6: Een driehoekige lidmaatschapsfunctie

31 3.1. Minder strak gespeeld p. 21 gelijk (maar het wordt wel aangenomen dat ze gelijk zijn gezien deze waarde hoger is dan 0) Vaste intervallengte Het volgende probleem biedt zich nu aan: op welke plaats in de tijd moeten we knippen om patronen met elkaar te vergelijken. Enerzijds kunnen we een vaste intervallengte gebruiken en vergelijken we de events uit het ene interval met het andere, anderzijds kunnen we een aantal opeenvolgende events bij elkaar nemen en die vergelijken met een volgende groep events van eventueel kortere of langere duur. We bekijken de eerste manier, namelijk twee tijdsintervallen met elkaar vergelijken. We kunnen nu al van twee patronen uitdrukken hoe sterk ze op elkaar gelijken. Er komt nu bij welke events samen het eerste patroon vormen en welke, volgend op het eerste, het tweede patroon vormen. We zullen dus een goede intervallengte moeten vinden, zodat het liedje volledig uitgelijnd kan worden. In figuur 3.7 hebben we enkele events uit een ritme op een tijdsas geplaatst Figuur 3.7: De bron-events uitgelijnd in de tijd We kunnen nu eigenlijk vanaf een beginwaarde (die we zelf op 3 events gekozen hebben uit het algoritme van de perfecte onsets) tot de helft van het liedje (als het eerste interval al langer is dan de helft zullen er op het einde geen events meer overblijven om te vergelijken (figuur 3.8)) alle mogelijkheden gebruiken Figuur 3.8: Het eerste tijdsinterval is langer dan de helft van het liedje. Er kan geen volgend interval meer gevonden worden om patronen te vergelijken. We kunnen events indelen in klassen van gelijke tussentijden: voor alle events van een zelfde klasse duurt het even lang tot er nog een ander event komt. Het laatste event van het eerste interval in figuur 3.9 behoort tot de klasse van de minst-langst-durende-events. Wat wilt zeggen dat de duur hiervan - de kleinst mogelijke duur - gelijk is aan de breedte van de basis die we gebruiken in de

32 3.1. Minder strak gespeeld p. 22 lidmaatschapsfunctie zoals bvb in figuur 3.1 (=afstand van p tot q met a in het midden). Dus we mogen zeker knippen in het gebied [timestamp,timestamp + 1 * Kleinste Duur], immers het 2 volgende event kan zich pas op een afstand van minimaal Kleinste Duur bevinden. We kiezen natuurlijk zo groot mogelijk om de volgende intervallen zo mooi mogelijk uitgelijnd te krijgen. De uitlijning door te knippen na het 3 e event is te zien in figuur Figuur 3.9: De bron-events geknipt in gelijke intervallen na het derde event. Als we terugkeren naar onze input (figuur 3.7) is het 4 e event niet een event van kleinst mogelijke duur. Als we daar ook knippen op het tijdstip timestamp + 1 * Kleinste Duur krijgen we iets 2 zoals in figuur Het tweede interval vertoont dan nog enigszins een gelijkenis met het eerste interval. Het derde interval is al minder duidelijk gelijk aan het eerste interval. Als we knippen in de helft tussen het 4 e en 5 e event komen we wel een iets betere uitlijning uit, zoals te zien in figuur Figuur 3.10: Zomaar ergens knippen na het vierde event levert geen goede uitlijning Figuur 3.11: De bron-events geknipt in gelijke intervallen na het vierde event.

33 3.1. Minder strak gespeeld p. 23 Figuur 3.12 toont wat we noemen het beste patroon omdat dezelfde herhaling in elk interval te zien is. Dit is dan ook de beste uitlijning die we graag altijd zouden verkrijgen Figuur 3.12: De bron-events geknipt in gelijke intervallen na het vijfde event. Hieruit volgt dat we een goede manier moeten vinden om tijd te knippen. We delen de tijd eerst in in n gelijke intervallen. In figuur 3.13 doen we dit voor de events uit figuur 3.7 met n = 6. Deze n intervallen kunnen we dan samennemen als segmenten waarin we events met elkaar zullen vergelijken. Op het eerste zicht kan dit aantal sterk oplopen. Voor n = 6 hebben we zes mogelijkheden. De vijf uit figuur 3.14 en zichzelf. Per mogelijkheid moeten we de intervallen met elkaar vergelijken. Als we bvb alle intervallen apart nemen, bekomen we 6 segmenten. Dan moet het eerste segment met segment 2,3,4 en 5 vergeken worden. Het tweede segment met 3,4 en 5, enzoverder. Samenvattend voor n = 6: 1 samen: levert 6 segmenten, deze leveren = 15 vergelijkingen 2 samen: levert 3 segmenten, deze leveren 2+1 = 3 vergelijkingen 3 samen: levert 2 segmenten, deze leveren 1 vergelijking 4 samen: levert 2 segmenten, deze leveren 1 vergelijking 5 samen: levert 2 segmenten, deze leveren 1 vergelijking 6 samen: levert 1 segmenten, deze levert geen vergelijking Figuur 3.13: De hele tijdsas wordt ingedeeld in 6 gelijke intervallen. Eigenlijk leveren de vergelijkingen van 4, 5, 6 intervallen samen geen bruikbaar patroon op. In die gevallen is ons eerste segment langer dan de helft waardoor er geen herhaling meer gevonden kan worden. We kunnen dus stoppen met segmenteren vanaf dat we i = ceil(n/2) 2 intervallen 2 ceil is de gehele afronding naar boven van een getal. Bvb ceil(7.3) = 8

34 3.1. Minder strak gespeeld p. 24 samengenomen hebben Figuur 3.14: Alle 5 mogelijke splitsingen van de intervallen voor fig De aandachtige lezer zal gemerkt hebben dat met deze manier van samennemen het niet mogelijk is om het beste patroon (fig. 3.12) als resultaat te vinden. Immers 1, 2, 3 en 4, 5, 6 samennemen betekent de uitlijning van figuur Van het 6 e event is niet duidelijk of het tot het eerste of tweede segment behoort. Voor het 1 e event begint is, is er al wat tijd verstreken. Ook na het laatste event is er eigenlijk geen tijd meer te beschouwen aangezien we niet weten hoe lang dit duurt. We zouden de grenzen waartussen we indelen dus links op het eerste event kunnen zetten en rechts op het laatste event. Een andere mogelijkheid is een stapgrootte te voorzien waarmee we iteratief de lengte van een interval vergroten als we beginnen met een kleine lengte voor het eerste interval. Er komt dan enkel nog bij dat we de tijd voor het eerste interval deels of helemaal zullen moeten negeren Figuur 3.15: 3 intervallen samen geeft 2 segmenten, maar geen perfecte uitlijning. In principe zouden we per mogelijkheid van samennemen alle vergelijkingen moeten uitvoeren. Dit zullen we later bespreken. Eerst berekenen we hoeveel segmenten er kunnen zijn. We nemen

35 3.2. Meerdere patronen p. 25 enkel de bruikbare mogelijkheden: voor n = 6 was dat 1 samen, 2 samen en 3 samen. Als we ze afzonderlijk bekijken, hebben we 6 segmenten, voor 2 samen hebben we er 3, voor 3 samen hebben we er nog 2. Dit alles samen geeft = 11. Dit kunnen we uitdrukken voor een algemene n: als er n tijdseenheden zijn, zijn er ceil(n/2) i=1 ceil(n/i) mogelijkheden (eenheidslengte meegerekend en we mogen stoppen als de helft bereikt is). Wensen we dit uit te drukken naar gelang de tijdsduur van het te analyseren audiofragment: stel dat het fragment 20 seconden duurt en onze stapgrootte is 0.01 seconde, dan hebben we = Voor n = 2000 geeft dit ceil(2000/2) i=1 ceil(2000/i) = mogelijke segmenten. Deze techniek biedt zich aan om niet-perfect gespeelde liedjes te analyseren. Ook indien er een event niet gedetecteerd is dat er wel zou moeten zijn kunnen we nog verder. Dit komt omdat we eerst twee (of meer) tijdsintervallen vastzetten en daarna pas vergelijken hoe sterk deze intervallen op elkaar lijken. Dit is meteen het verschil met de techniek uit het vorige hoofdstuk. Indien met de vorige manier (het algoritme uit sectie 2.4.1) ergens tussen twee events een te groot verschil bestaat met twee events uit een ander tijdsinterval, zou er zeker geen patroon meer gevonden kunnen worden. 3.2 Meerdere patronen Eigenlijk is er ook rondom de punten van patroon 2 in figuur 3.5 een schelp te maken waarin punten liggen die vergeleken kunnen worden met punten uit een ander patroon. Dit wordt afgebeeld in figuur Dit levert enkele nieuwe combinaties op: punt c 2 kan nu vergeleken worden met punt c 1 maar ook met punt b 1 aangezien hun intervallen overlappen. Als we van c 2 veronderstellen dat het overeenkomt met b 1 wil dit zeggen dat c 2 niet meer overeenkomt met c 1. Ook van b 2 kan niet meer gezegd worden dat dit b 1 is (aangezien c 2 het al is). Dus voor b 2 en c 1 kan er geen overeenkomstige noot meer gevonden worden. Dit impliceert dat er noten moeten toegevoegd worden. Dit moet natuurlijk een lagere lidmaatschapsgraad hebben dan het geval dat er geen noten moeten toegevoegd worden. Wanneer dit voorvalt stellen we deze noot voor door een X. De possibiliteit is dan gelijk aan een penalty: Poss[b 2 =X] = λ, (0 λ 1). Samenvattend: Poss[p(a 1, b 1, c 1, d 1 ) = p(a 2, b 2, c 2, d 2 )] = 1 ( ) = 1 4 Poss[p(a 1, X, b 1, c 1, d 1 ) = p(a 2, b 2, c 2, X, d 2 )] = λ (1 + λ λ + 1) = 5 5 We kunnen dit ook toepassen op twee noten die elkaars tegenkandidaat zijn (fig 3.17): van deze twee noten kan dan ook gezegd worden dat ze niet elkaars tegenkandidaat zijn wat betekent dat er dan 2 noten (één voor punt a en één voor punt b) moeten toegevoegd worden. (3.5)

36 3.2. Meerdere patronen p. 26 Figuur 3.16: Ook rond de te vergelijken punten kan een schelp gemaakt worden. Figuur 3.17: Twee events, ofwel vergelijken we ze met elkaar ofwel moeten 2 nieuwe events bijgevoegd worden.

37 3.2. Meerdere patronen p. 27 Dit geeft: Poss[p(a) = p(b)] = 1 Poss[p(X, a) = p(b, X)] = 1 (λ + λ) = λ (3.6) 2 Poss[p(a, X) = p(x, b)] = 1 2 (λ + λ) = λ Voor λ=0 zijn deze twee laatste possibiliteiten ook 0, wat wil zeggen dat we niet aanvaarden dat noten die elkaars tegenkandidaat zijn toch ook vergeleken kunnen worden met een ingevoegde noot Overlappende oppervlakten Als we de twee noten van figuur 3.18a nu ver genoeg uit elkaar leggen zodat de ene noot niet meer in het interval ligt van de andere noot kunnen we in principe geen possibiliteitswaarde meer berekenen zoals met de methode van vergelijking 3.1. Immers, het punt b ligt niet meer in het interval [p,q] rond punt a zodat Poss[b=a] = 0. We kunnen rond punt b ook een schelp maken zoals in figuur 3.18b: een interval dat even breed is als het interval [p,q] rond a. Als beide intervallen niet overlappen, herleidt de zaak zich tot het geval zoals in figuur 3.4: Poss[b=a] blijft 0. Overlappen beide intervallen nu wel (fig. 3.19a), dan kunnen we eigenlijk aan deze possibiliteitsmaat toch nog een waarde hoger dan 0 geven. Het is namelijk zo dat b overal in dat interval kan liggen zodat het punt wel nog vergeleken kan worden met punt a. We kunnen bijvoorbeeld de grens van het interval nemen omdat dit het dichtst bij het punt a zal liggen. Zo krijgen we resultaten : b = a b R a L : a L < b R < a a a L b a L : a L < b < a p = Poss[b = a] = a a L a R b a R a : a < b < a R a R b L a R a : a < b L < a R 0 : b R a L of b L a R (3.7) De waarde van Poss[b=a] is nu niet meer 0 (fig. 3.18b) ook al ligt b niet tussen a L en a R. Maar wat is er nu gebeurd? Stel dat b nu in interval [a L,j] ligt (j is het snijpunt van b R : fig. 3.19b met het interval [a L,a]). Met andere woorden deze b is kleiner dan j maar groter dan a L. De possibiliteitswaarde voor deze situatie zal kleiner zijn ondanks dat b dichter bij a ligt dan voordien (fig. 3.19)! Dit kan natuurlijk niet zijn. Daarom voeren we een nieuwe manier in om de possibiliteitswaarde te berekenen. In plaats van het snijpunt te berekenen, gebruiken we de

38 3.2. Meerdere patronen p. 28 (a) Punt b ligt niet meer in het interval rondom punt a. (b) De rechtergrens van punt b ligt wel in het interval rondom punt a. Figuur 3.18: Ook rond punt b kunnen we een interval beschouwen. (a) b ligt niet in het interval rond a, maar het interval rond b wel. (b) b ligt tussen a L en j Figuur 3.19: In de rechterfiguur ligt b dichter bij a maar heeft toch een lagere waarde voor p.

39 3.2. Meerdere patronen p. 29 gemeenschappelijke oppervlakte om een maat van gelijkheid uit te drukken. We maken alle vorige situaties opnieuw en verkrijgen zo de situaties in figuur De afstand van a L tot a of van a tot a R noemen we de Half Note Size (HNS). Dit is de helft van de kleinste afstand tussen alle events (zie sectie 3.1.3). Voorts weten we uit vergelijking 3.7 de hoogte van een overblijvende driehoek. Voor de situatie uit figuur 3.20c krijgen we als resultaat: Overlapping = Oppervlakte driehoek Overblijvende driehoek = Oppervlakte driehoek 1 Overblijvende rechthoek 2 = HNS (a R b R ) a R b R HNS Om een waarde tussen 0 en 1 te krijgen, moeten we dit nog delen door de oppervlakte van de driehoek: Analoog voor 3.20d. Poss[b = a] = (a R b R ) 2 HNS 2 (3.8) Voor de situatie uit figuur 3.20e is dit enkel een kleine driehoek: Overlapping = Oppervlakte kleine driehoek = 1 Oppervlakte kleine rechthoek 2 = 1 basis hoogte 2 = 1 2 basis b R a L HNS = 1 2 (b R a L ) b R a L HNS = 1 2 (b R a L ) 2 HNS Om een waarde tussen 0 en 1 te krijgen, moeten we dit nog delen door de oppervlakte van de driehoek: Poss[b = a] = 1 2 (b R a L ) 2 HNS 2 (3.9)

40 3.2. Meerdere patronen p. 30 (a) Helemaal (b) Niets (c) Meer dan de helft (d) Meer dan de helft (e) Minder dan de helft (f) Minder dan de helft Figuur 3.20: Alle mogelijke overlappeningen

41 3.3. Ruis p. 31 Analoog voor 3.20f. Samengevat (zie figuur 3.21): 1 : b = a 1 (a R b R ) 2 2 HNS 2 : a L < b < a 1 (b L a L ) 2 Poss[b = a] = 2 HNS 2 : a < b < a R (b R a L ) 2 2 HNS 2 : b < a L < b R (a R b L ) 2 2 HNS 2 : b L < a R < b 0 : b R < a L of b L > a R (3.10) We hebben nu een manier gevonden om twee events te vergelijken naar gelang hun afstand tot elkaar. We houden bovendien rekening met de mogelijkheid dat hun positie niet exact is, maar dat een event overal in een interval kan liggen. De formule om intervallen van n events met elkaar te vergelijken blijft dezelfde: Poss[p(1 1, 1 2,..., 1 n ) = p(2 1, 2 2,..., 2 n )] = 1 n (Poss[1 1 = 2 1 ] + Poss[1 2 = 2 2 ] Poss[1 n = 2 n ]) (3.11) 3.3 Ruis Onduidelijkheden in patroon Met onduidelijkheden bedoelen we events die zich niet op regelmatige basis herhalen. In het ruisloze voorbeeld van figuur 3.22a is de mate waarin elk patroon op elk ander patroon lijkt gelijk aan 1 zoals te zien in tabel 3.1. Dit betekent dat elk patroon een perfecte match is met het andere: nergens moest een event bijgevoegd worden. Introduceren we ruis in dit patroon, dan bekomen we de resultaten in tabel 3.2 overeenkomstig met figuur 3.22b. De fout λ is dezelfde zoals die geïntroduceerd is in sectie 3.2. Er moeten namelijk in de andere patronen events bijgevoegd worden om tot hetzelfde patroon te komen. Een bekende manier die hier toegepast zou kunnen worden is de zogenaamde edit-distance [9] - een algoritme dat vooral gebruikt wordt om tekst te vergelijken zoals in een spellingchecker. De operaties om een edit-distance te berekenen zijn: toevoegen van een letter, verwijderen van een letter, een letter in een andere letter veranderen. Om patronen in elkaar te transformeren gebruiken we volgende mogelijkheden: toevoegen van een event, verwijderen van een event of gelijkstellen van twee events. Het toevoegen of verwijderen zal de strafmaat introduceren.

42 3.3. Ruis p. 32 Figuur 3.21: b ligt niet in het interval rond a, maar het interval rond b wel. Voor patroon 1 en patroon 2 geeft dit bijvoorbeeld 5 events die matchen en 1 toevoeging (beste mogelijkheid):. Als slechtste mogelijkheid geeft dit 0 matches en 11 toevoegingen: 5 + λ λ = λ. 11 Uit tabel 3.2 kunnen we nu het patroon vinden door te classificeren in klassen. Als we naar de totale afstand kijken per lijn, krijgen we uiteindelijk nog drie verschillende: patronen(2,3,4,6,8), patronen(1,7), patronen(5). Omdat in dit geval de patronen(2,3,4,6,8) het meeste voorkomen noemen we het patroon hier een patroon van de vorm zoals patroon 2 uit figuur 3.22b. Pat 1 Pat 2 Pat 3 Pat 4 Pat 5 Pat 6 Pat 7 Pat 8 Pat Pat Pat Pat Pat Pat Pat Pat Tabel 3.1: Perfecte matches tussen patronen uit figuur 3.22a.

43 3.3. Ruis p (a) Een patroon netjes herhaald. (b) Ruis toegevoegd, gemerkt door een witte bol. Figuur 3.22: Bijna hetzelfde liedje Pat 1 Pat 2 Pat 3 Pat 4 Pat 5 Pat 6 Pat 7 Pat λ 5 + λ 5 + λ 5 + λ 5 + λ 5 + λ Pat λ λ 5 + λ Pat λ λ 5 + λ Pat λ λ 5 + λ Pat λ λ λ λ λ 5 + λ λ Pat λ λ 5 + λ Pat λ 5 + λ 5 + λ 5 + λ 5 + λ 5 + λ Pat λ λ 5 + λ Pat Tabel 3.2: Maat voor match tussen patronen uit figuur 3.22b. Stel dat ons lied nu bestaat uit evenveel patronen van de vormen uit figuur De zogenaamde ruis die we geïntroduceerd hebben blijkt meer dan slechts een aantal keer voor te komen. Geven we nu als output voor het patroon het eerste, tweede of derde of alle drie? Uiteindelijk komen ze alle drie even waarschijnlijk voor, dus hebben ze alle drie recht op de benaming van het patroon. Kijken we toch eens naar de afstand tussen de drie patronen in tabel 3.3. We berekenen het gemiddelde per rij. Voor λ dicht bij 0 komt dit neer op voor patroon 1 en patroon 3 : ( )/3

44 3.4. Pauze p. 34 voor patroon 2 : ( )/3 ofwel 0.85 en Met andere woorden patroon 2 heeft het minste werk nodig om zich te transformeren in patroon 1 of patroon 3. We slaan dus patroon 2 op en noemen dit het gevonden patroon Figuur 3.23: Evenveel voorkomende patronen in het liedje, maar toch verschillend van elkaar. Pat 1 Pat 2 Pat λ λ Pat λ 5 + λ Pat λ 5 + λ Pat Tabel 3.3: Afstand tussen patronen uit figuur Pauze Met een pauze bedoelen we een korte tijd waarin geen events te bespeuren zijn. We kunnen twee soorten onderscheiden: een pauze in de maat, zodat na de pauze het patroon weer op een normale manier verder gaat of een pauze zodat het patroon niet meer mooi uitgelijnd is Perfecte pauze Met een perfecte pauze hebben we niet veel last: deze duurt net zo lang (of een veelvoud hiervan) als het interval waar het patroon in past en zorgt dat de events na de pauze mooi gealigneerd blijven (fig. 3.24). Het algoritme zal nu wel zoeken naar events in deze pauze en volgens de methode uit sectie 3.2 overal events willen toevoegen aan dit interval Figuur 3.24: De pauze duurt net zo lang als een patroon. Voor een interval met n events moeten er n events bijgedacht worden in het pauze-interval. De afstand tussen deze twee intervallen is dan n λ n = λ.

45 3.5. Algortime p Algortime Nu we enkele theoretische inzichten gegeven hebben, is het de bedoeling om tot een algoritme te komen dat kan geïmplementeerd worden. We starten met het vastleggen van de intervallengte. We zullen de hele tijdsas van events opdelen in subintervallen van deze lengte. Het zullen deze subintervallen zijn die we met elkaar gaan vergelijken om hopelijk een herhalend patroon te vinden. Het vergelijken van twee intervallen gebeurt op de manier zoals uitgelegd in sectie Bereken de huidige intervallengte: start vanaf een minimum tot de laatste timestamp. Bereken de linkergrens van het eerste interval. De rechtergrens is linkergrens + intervallengte. Zoek alle events in dit interval. 2. Zoek alle events die 1 tot n intervallengtes verder liggen. We kunnen n laten stoppen als de linksgrens van dit interval voorbij de laatste timestamp gaat. Per interval wordt via de techniek van overlappende oppervlakken een waarde van gelijkheid berekend. 3. Zoek de optimale combinatie van matches en inserts voor deze twee intervallen. Alle mogelijkheden worden geconstrueerd en daarna gecontroleerd. De beste hangt af van de strafmaat van een insert bewerking. 4. Alle intervallen zijn gecontroleerd. Zoek nu van al deze intervallen de basis die aanleiding geeft tot het minst werk om zich te transformeren in alle andere intervallen. 5. Houd alle basispatronen bij. Het beste patroon kan hieruit geslecteerd worden: a) het beste op vlak van aantal gebruike onsets b) het beste op vlak van aantal keer dat het gebruikt wordt

46 3.6. Conclusie p. 36 c) het beste op vlak van het werk nodig om zich te transformeren Verschillende combinaties van deze drie mogelijkheden levert steeds een ander resultaat als beste patroon. 3.6 Conclusie We hebben een inleiding tot de vage logica gegeven wat ons hielp om events te vergelijken. Deze manier hebben we uitgebreid om een waarde van gelijkheid te berekenen aan de hand van de grootte van overlappende oppervlakten. Het bleek nodig te zijn om bij events die geen gelijke hebben er toch een event bij te denken zodat het interval als patroon aanzien kon worden. De andere mogelijkheid, het negeren van het event, lieten we niet in aanmerking komen. Eens we patronen gevonden hebben, kunnen we nu ook berekenen hoe sterk deze patronen op elkaar lijken en geven het patroon terug dat het minste werk nodig heeft om zich te transformeren in de andere kandidaten. Om het beste patroon als resultaat te geven blijkt dat er toch nog een keuze gemaakt moet worden. De eindgebruiker kan hierin zelf kiezen: wilt hij als beste patroon een kort, veel herhaald patroon? Een patroon dat lang is en veel onsets gebruikt? We zullen later (zie hoofdstuk 5) door de praktijk te toetsen aan de theorie een standaardkeuze instellen die het meest intuïtieve patroon weergeeft als resultaat.

47 Hoofdstuk 4 Toepassingen 4.0 Introductie We overlopen enkele toepassingen die uit het voorgaande voortvloeien. We bekijken hoe we de onsets kunnen aanwenden om meer informatie over de gevonden patronen te vinden. We leggen uit hoe we het tempo kunnen afleiden uit de onsets in sectie 4.1. Verder leggen we uit hoe we verschillende inputs kunnen vergelijken door het patroon te normaliseren (sectie 4.2) en daarna te vergelijken (sectie 4.3). 4.1 Tempo afleiden Als we een tempo en een maatsoort hebben, dan kunnen we berekenen hoelang een noot duurt. Stel dat het tempo 120BPM is en de maatsoort 7. Dit betekent dat er zeven 4 e noten zijn 4 per maat en dat er e noten zijn per minuut. Dus één 4 e noot duurt 60s/120 = een halve seconde. Wat hieruit opvalt is dat de maatsoort er niet toe doet. De indeling in maten hebben we dus niet nodig. 60 We vinden dus: = duur van een vierde tempo 60 Of nog: tempo = duur van een vierde Uit het gevonden patroon kunnen we het tempo afleiden. We berekenen de kleinste tussentijd tussen de events in het patroon. Als we deze in de bovenstaande vergelijking gebruiken komen we het tempo uit. Dit zal evenwel een niet-standaard tempo zijn. Bvb is de kleinste tussen-tijd 0.200s dan is 60/0.200 = 300. Een tempo van 300BPM wordt algemeen niet gebruikt. Maar 300/4 = 150/2 = 75BPM. Eigenlijk zijn 300BPM, 150BPM en 75BPM in weze allen hetzelfde tempo, wat 37

48 4.2. Genormaliseerd patroon p. 38 het begrip tempo iets subjectiefs maakt. Een uitgebreide studie over het cognitieve tempo vindt u in Extracting the perceptual tempo from music [11]. Het valt op te merken dat met deze techniek het patroon niet gevonden moet worden. We kunnen ook van de input data (alle onsets) de tussentijden berekenen en van hieruit vertrekken. Dit kan zelfs een exacter resultaat opleveren omdat we over meer informatie beschikken. Een tijd van 0.200s komt exact overeen met 150BPM, maar een kleine afwijking levert snel grove fouten op: 60/0.190 = 315,789BPM wat in muziek een groot verschil betekent t.o.v. 300BPM. Als we nu een classificatie algoritme kunnen vinden dat slim genoeg is om bepaalde waarden zoals om te zetten naar 0.200, krijgen we het exacte tempo. In tabel 4.1 staan waarden uit een realistisch voorbeeld afgekapt op drie decimalen. De juiste bruikbare waarden bij elkaar genomen geeft uiteindelijk volgende klassen: met exacte waarde: 400 en gemiddelde waarde: met exacte waarde: 200 en gemiddelde waarde: 201 Merk op dat de waarden in klasse 1 eigenlijk een veelvoud beschrijven van klasse 2. deze informatie gebruiken krijgen we: met gemiddelde waarde: Als we Als we deze waarden gebruiken om het tempo te berekenen krijgen we: 60/0.201 = 298,507 en 60/ = 301,19 met respectievelijke fouten 1,493BPM en 1,19BPM, wat voor live muziek niet hoorbaar is. Opmerking over triolen: Voor musicologen zal deze aanpak van tempo afleiding niet als muziek in de oren klinken. Immers dit klopt alleen voor hele, halve, vierde,... noten en niet voor triolen. Een triool zijn drie noten per tel. Voor een tempo van 150BPM zal een triool ook seconden duren, dus per noot van die triool is dit 0.4/3 seconden. Dit levert een kleinere delta op (0.133) t.o.v. de gehele Met de bovenstaande redenering is het tempo dan 60/0.133 = 450BPM = 112.5BPM geworden i.p.v. 150BPM. Dit is wederom een kwestie van interpretatie van het muziekstuk en de maatsoort en is uiteindelijk iets subjectiefs. Meer hierover in Extracting the perceptual tempo from music [11]. 4.2 Genormaliseerd patroon Eens we een patroon uit een liedje gehaald hebben, kunnen we dit bewaren. Het is de bedoeling om een grote collectie van patronen aan te leggen, dus is een eenvoudige, transparante opslag-methode

49 4.2. Genormaliseerd patroon p. 39 Event Onset delta afgerond werkelijk Tabel 4.1: Classificatie van tussentijden nodig. Elk patroon zal immers verschillen in totale duur, tempo en aantal events. Het verband tussen deze drie eigenschappen is reeds aangetoond in sectie 4.1, met name dat het tempo niet afhangt van de totale duur van een patroon en enkel afhangt van de kleinste δ tussen de events. Het tempo hebben we evenwel al berekend voor we op zoek gaan naar een patroon. We kunnen dus met de totale duur van de gevonden patronen spelen als we het tempo ook bijhouden. Zo kunnen we elk patroon dat in de databank voorkomt herschalen naar een tijdsinterval [0,t]. De nieuwe tijdstippen worden dan: event t = event. Toegepast op een voorbeeld geeft totale duur dit het resultaat uit tabel 4.2. Event OnsetTime Herschaald Tabel 4.2: Herschaald = 4 OnsetT ime 2.205

50 4.3. Patronen vergelijken p. 40 Met deze functie worden de events enkel herschaald. Ook is het eerste event niet gelijk aan 0. Een betere herschaling is alle punten in een interval [a,b] af te beelden op [c,d]. Voor elk punt geldt dan: y = x d c b a + d b d c. Gebruik makend van de voorwaarden f(a)=c en f(b)=d en b a c=0 en d=gewenste lengte geeft dit nog y = d x a. Deze herschaling is te zien in tabel 4.3. b a Event OnsetTime Herschaald Tabel 4.3: Herschaald = 4 OnsetT ime Met de afspraak om het tijdstip van het eerste event gelijk te stellen aan 0 en het laatste event gelijk aan t, moeten we deze twee events niet opslaan in de databank. Elke berekening met komma getallen is een berekening te veel wegens afkapping- en afrondingsfouten door de computer. In het voorbeeld is d = 4 genomen wat wilt zeggen dat elk patroon uitgerokken wordt zodat het 4 seconden duurt. 4.3 Patronen vergelijken Nu we veel problemen met de input hebben besproken en er ook manieren zijn om erop te reageren kunnen we het eigenlijke doel uitproberen: een gebruiker die in een databank van liedjes zoekt naar meer informatie over dat ritme of andere stukken die er op lijken. Eerst moet een databank aangemaakt worden. De stukken die gebruikt worden zijn de werken uit het Koninklijk Museum voor Midden-Afrika. Van al deze werken genereren we eenmalig de onsets via de Drum detection console applications [13]. Deze onsets geven we eenmalig aan ons programma die als output het gevonden patroon geeft in dezelfde vorm als een inputbestand. We doen hetzelfde met de input van de gebruiker. Hiervoor moet de applicatie een manier vinden om onsets te genereren uit de opgegeven audio (bvb via een microfoon afkomstig van de

51 4.3. Patronen vergelijken p. 41 stem [6], [12] ), dan patroon genereren. Dit moeten we nu vergelijken met de patronen uit de databank. Methodes om dit te doen zijn besproken in het vorige hoofdstuk. Hierbij kunnen we alle patronen vergelijken of een slimmere methode ontwikkelen zodat niet alle patronen uitgeprobeerd moeten worden. Afhankelijk van afspraken kunnen we verzamelingen maken van patronen die veel of weinig kans hebben om erop te lijken. We hebben al enkele parameters die we kunnen gebruiken: het tempo kan vergeleken worden, alsook het aantal events in het patroon. Verder moeten we beseffen dat begin en einde van een patroon niet eenduidig vast staat. Een gebruiker kan starten in het midden van een patroon om zo ook een patroon te vormen (fig. 4.1). Dit lossen we op door elk patroon circulair te zien, zodat geen sprake meer is van start en einde (fig. 4.2). Hierbij moeten we wel opletten met de voorstelling van het patroon zoals in sectie 4.2, meer bepaald de duur van het laatste event. Deze kan zo kort of zo lang zijn als gewenst aangezien er geen event meer na komt. Als natuurlijk een patroon gevonden is dat, na zichzelf geplaatst, het hele lied omslaat (er zitten dus geen events meer tussen de patronen), kan de gebruikte dummywaarde berekend worden en de echte lengte van het patroon gevonden worden Figuur 4.1: Deze twee patronen lijken niet op elkaar Figuur 4.2: Circulair bekijken van patroon 2 levert toch patroon 1 op.

52 4.4. Gemiddeld patroon p Gemiddeld patroon De timestamps in het uiteindelijk gevonden patroon zijn dezelfde als die van het patroon waarmee de rest van de patronen worden vergeleken. Deze patronen verschillen nog van elkaar. Voor elk event van het patroon hebben we eigenlijk meerdere timestamps (gescheiden door een zekere afstand) waarmee dit overeenkomt. Als echte timestamp per event zouden we het gemiddelde kunnen nemen van al deze timestamps en dit als output geven. Dit doen we in figuur Figuur 4.3: Als output-timestamp geven we het gemiddelde van de timestamps van de basispatronen. Omgekeerd (bvb een gebruiker die 1 van de originelen als te zoeken patroon opgeeft) is het zo dat elk van deze patronen 100% gelijk zijn aan elkaar door onze methode van vergelijking (sec. 3.2). Het berekenen van dit gemiddelde was dan eigenlijk niet nodig, aangezien de gebruiker enkel wilt weten of er een match was of niet.

53 Hoofdstuk 5 Software 5.0 Introductie In dit hoofdstuk zullen we de geschreven software, die deel uitmaakte van de opdracht, testen en vergelijken met een andere techniek om patronen te vinden in data, namelijk de autocorrelatie. We hebben naar de fragmenten geluisterd en een manuele annotatie opgesteld van het ritme dat er gespeeld wordt. De uitkomsten van beide technieken worden hiermee vergeleken. 5.1 Code Een print-out van de code is vervat in een apart boek als bijlage bij dit boek. De command line opties zijn te vinden in bijlage A om zo via parameters de werking van de algoritmes te beïnvloeden. De output naar een bestand gebeurt in hetzelfde formaat als de input (sectie A.3) en kan verder verwerkt worden met de Drum detection console applications [13] om bijvoorbeeld een MIDI bestand aan te maken. Het algoritme dat standaard wordt gebruikt, komt voort uit de ideeën van hoofdstuk 3. De andere algoritmes worden niet getest, omdat deze gebaseerd zijn op hoofdstuk 2 en niet bedoeld zijn voor echte muziek. 5.2 Output Om de output van het programma te bespreken, gebruiken we muziekvoorbeeld 2.1 met als gedetecteerde onsets tabel 2.1. Output: Tempo:

54 5.2. Output p. 44 Half Note Size: timel timer grad #herh #ind basisindices

55 5.2. Output p. 45 timel timer grad #herh #ind basisindices Tabel 5.1: Alle gevonden patronen uit tabel 2.1. Tabel 5.1 toont de output van de software. timel en timer staan voor de grenzen van het tijdsinterval van het eerste interval waar het patroon te vinden is. In de volgende kolom wordt de gradatie getoond zoals beschreven in sectie 3.3. Er is een minimale gradatie van 0.5 vastgelegd als standaardparameter. Herhalingen met een lagere gradatie komen dan niet in aanmerking. De kolom herhaling betekent hoeveel maal dit basispatroon nog eens weerkomt. Indien deze waarde 1 is, wilt dit zeggen dat dit patroon tweemaal in heel het liedje terugkomt. Er is ook nog een kolom met het aantal indices dat dit patroon omslaat. Bijvoorbeeld: de laatste rij gebruikt 18 indices, maar het basispatroon bestaat uit 12 events. Dus in de eerste herhaling van dit patroon zijn er nog 6 events te matchen en zullen er 6 bijgedacht worden (zoals beschreven in sectie 3.3). De laatste kolom zijn de basisindices. Uit alle herhalingen worden de indices gezocht die het makkelijkst te transformeren zijn in alle andere herhalingen. Dit wordt het basispatroon genoemd en zijn (herschaalde) timestamps worden naar een bestand geschreven. We spreken hier van indices: de eerste timestamp heeft index 0. Resultaat: t=[0.0, 3.2] grad: 1.0 herh: 1 ind: 18 basis: Inderdaad, dit is de gewenste output. Als we kijken in de tabel zijn er nog meerdere intervallen die dit basispatroon bevatten: t=[0.0, 2.6] grad: 0.84 herh: 1 ind: 16 basis: Dit is duidelijk: er zijn minder indices gebruikt. Dit willen we vermijden om als beste patroon te krijgen. t=[0.0, 2.8] grad: 0.75 herh: 1 ind: 18 basis: t=[0.0, 3.0] grad: 0.76 herh: 1 ind: 18 basis:

56 5.2. Output p. 46 In interval [2.2, 3.2] (net voor event 9) zijn er helemaal geen events meer. Event 8 is het laatste event dat geselecteerd wordt om een patroon te vormen. We zoeken verder naar een interval dat met dit patroon gematched kan worden. Event 17 zal met event 8 gematched worden. Event 17 is het allerlaatste event en heeft dus geen bijhorende delta waarde. Dit hebben we opgelost door een dummy-waarde te gebruiken die elk mogelijke waarde kan zijn. Vandaar dat deze intervallen ook tussen de mogelijkheden staan. Waarom hebben deze twee dan toch een lagere gradatie gekregen dan het patroon? Dit komt doordat we intervallen van vaste lengte gebruiken. Als het eerste interval loopt van 0.0 tot 3.2 zal het volgende interval dat we onderzoeken van 3.2 tot 6.4 lopen (eindpunt van het eene is het beginpunt van het andere, en beide zijn ze gelijk in lengte). De events in dit interval zullen gematched worden met de events uit het eerste interval. Als we dit doen voor het interval [0.0, 2.8] zullen de events uit [2.8, 5.6] schever staan ten opzichte van het eerste interval en dus een kleinere possibiliteitswaarde krijgen (zoals beschreven in sectie 3.2.1). Ruis Als test gaan we langzaamaan de input verslechten. We beginnen met een event achteraan toe te voegen op t=5.6. Dit geeft als resultaat: t=[0.0, 3.2] grad: 0.96 herh: 1 ind: 19 basis: Dit is hetzelfde als het origineel. We voegen nog een event toe op t=5.8: t=[0.0, 3.2] grad: 0.93 herh: 1 ind: 20 basis: De gradatie neemt geleidelijk af, aangezien de toegevoegde events geen echte match hebben. We blijven events toevoegen met als stapgrootte 0.2 seconden tot het basispatroon verandert. We hebben nu 5 events toegevoegd, de output van het beste patroon is: t=[0.0, 3.2] grad: 0.86 herh: 1 ind: 23 basis: t=[0.0, 4.2] grad: 0.86 herh: 1 ind: 23 basis: We hebben nu meerdere kandidaat-basispatronen gevonden. Indices 9, 10 en 11 komen eigenlijk overeen met respectievelijk indices 0, 1, 2. Maar aangezien ons algoritme denkt dat de toegevoegde events ook goed kunnen zijn, kunnen 9, 10 en 11 ook gematched worden met deze toegevoegde events. Uiteraard weten wij dat deze events foutief zijn, maar het algoritme niet. We nemen de output tabel met alle gevonden basispatronen er nog eens bij (tabel 5.2): Tempo: Half Note Size: timel timer grad #herh #ind basisindices

57 5.2. Output p. 47 timel timer grad #herh #ind basisindices

58 5.2. Output p. 48 timel timer grad #herh #ind basisindices Tabel 5.2: Alle gevonden patronen uit tabel 2.1 met toegevoegde ruis. Wat ons opvalt is dat het beste patroon dat we geven, niet de hoogste gradatie heeft. Het resultaat met hoogste gradatie is: t=[0.0, 2.1] grad: 0.92 herh: 1 ind: 18 basis:

59 5.3. Autocorrelatie p. 49 Dit komt omdat er verschillende pistes zijn om het beste patroon te selecteren. We kunnen vragen om het patroon te selecteren dat het meeste indices gebruikt, maar niet noodzakelijk de hoogste gradatie heeft. (Dit is de voorgaande manier.) We kunnen eerst selecteren op hoogste gradatie, en dan pas op het aantal gebruikte indices. Met deze manier wordt het zo juist beschreven patroon gegeven. We zouden ook een selectie kunnen maken naar het aantal keer dat een patroon herhaald wordt. Het is dan niet ondenkbaar dat in langere werken korte patronen meer terug komen terwijl we graag een lang patroon zouden hebben. Het zal moeten blijken uit de tests welke manier van bevragen de beste is om het intuïtieve patroon weer te geven. Welke manier we uiteindelijk gebruiken staat in sectie Autocorrelatie Definitie autocorrelatie: voor een bepaalde verschuiving betekent een hoge waarde van autocorrelatie dat er in de data een periode is te vinden van lengte gelijk aan die verschuiving. Autocorrelatie bemonstert het signaal (deelt het in in gelijke intervallen). Als er een event in dat interval voorkomt krijgt dit de waarde 1, zo niet de waarde 0. Eventueel kan er per event een convolutie gemaakt worden. In ons geval gaan we ervan uit dat er 1 of geen event per interval voorkomt. Dit verkrijgen we door intervallengte = 50ms te nemen. 50ms is ongeveer de grens voor het menselijk gehoor om twee aparte events uit elkaar te houden. Hierdoor is een convolutie niet meer nodig. We hebben uit de oorspronkelijke audiobestanden fragmenten van 20 seconden genomen en hierop onze tests uitgevoerd. We berekenen in Matlab eerst de autocorrelatie. Dit kan lineair (xcorr) of circulair (ifft) gebeuren. Circulair zal het deel dat afvalt van het einde van de verschuiving weer in het begin invoegen, terwijl bij het lineaire geval in het begin enkel nullen worden ingevoegd. Bvb: input We vermelden ook (aantal verschuivingen, waarde) (0,4) (1,0) (2,2) (3,0) (4,0) en zo verder. De volgende verschuiving leidt tot (lineaire) of tot (circulair). Om de autocorrelatie te berekenen van onze fragmenten hebben we het volgende Matlab script gebruikt:

60 5.3. Autocorrelatie p. 50 function myauto(name,data) %lineair %%%%%%%% [c_ww,lags] = xcorr(data, none ); pic = figure; %maak figuur stem( lags(ceil(length(lags)/2):length(lags)), c_ww(ceil(length(c_ww)/2):length(c_ww)), k, f ); print(pic, -dpng,[name,.png ]) %schrijf grafiek naar bestand fp = fopen([name,.txt ], w ); for i = ceil(length(c_ww)/2) : length(c_ww) fprintf(fp, %.0f & %.0f\\\\\r\n,lags(i),c_ww(i)); %schrijf data naar bestand end fclose(fp); %circulair %%%%%%%%%%% cor = ifft(conj(fft(data)).*fft(data)); pic2 = figure; stem(cor, k, f ); print(pic2, -dpng,[name,.circ.png ]) %schrijf grafiek naar bestand fp = fopen([name,.circ.txt ], w ); for i = 0 : length(cor)-1 fprintf(fp, %.0f & %.0f\\\\\r\n,i,cor(i+1)); %schrijf data naar bestand end fclose(fp); Beide functies zijn symmetrisch rond de Y-as (we kunnen de data zowel naar rechts als naar links verschuiven). Bij het circulaire geval is de uitkomst ook nog eens symmetrisch vanaf de helft van de lengte van de data (figuur 5.1b). De maxima blijven evenwel bij dezelfde verschuivingen. Het is dan niet nodig om de autocorrelatie circulair uit te rekenen. We gebruiken de lineaire manier (figuur 5.1a). Hiervan zoeken we een passend maximum en delen de input data in intervallen volgens de verschuiving die tot dit maximum leidt. Per interval zijn er één of meerdere cijfers 1 waarmee een onset overeenstemt. We nemen het eerste interval en geven dit terug als resultaat voor het basispatroon.

61 5.3. Autocorrelatie p. 51 (a) Lineaire autocorrelatie (b) Circulaire autocorrelatie is symmetrisch vanaf de helft Figuur 5.1: De maxima zijn bij beide gevallen op dezelfde X te vinden Dezelfde onsets voeren we in voor de software en nemen het resultaat dat dit geeft over. Deze twee uitkomsten vergelijken we dan met elkaar en berekenen we hoe zeker beide technieken zijn over hun patroon. Verder hebben we manueel de ritmes van de fragmenten geannoteerd in muzieknoten. Dit hebben we niet voor de resultaten van de technieken gedaan. In de plaats daarvan hebben we de basispatronen op een tijdsas gezet. Zo zien we meestal het verschil tussen een vierde en een achtste noot: een vierde duurt tweemaal zo lang als een achtste. Dit vergelijken we dan met de ground truth (de manuele annotatie). Als voorbeeld voor een berekening van autocorrelatie gebruiken we tabel 2.1.

62 5.3. Autocorrelatie p. 52 Figuur 5.2: Autocorrelatie van tabel 2.1 In figuur 5.2 zijn verschillende pieken te zien. De software geeft als beste patroon (tabel 5.1) indices 0 tot en met 8 weer. De hoogste Y-waarde in de grafiek is 12 voor X=12. De input gesplitst over deze 12 geeft het volgende: Elke 1 in deze rij komt overeen met een gedetecteerde onset uit de audio. In dit geval betekent de eerste lijn dat slechts de eerste twee events (indices 0 en 1) samengenomen worden en aanzien worden als herhalend patroon.

63 5.3. Autocorrelatie p. 53 Omgekeerd zoeken we eens naar waar het 9 e event begint (het beste zoals aangegeven door onze software). Dat is voor (X,Y) = (64,9): Y=9 komt ook voor bij X=32: Dit zijn indices , een patroon dat zelfs niet voorkomt in de output van de software, omdat het geen goed genoeg resultaat oplevert. Immers in de 2 e en 4 e lijn zijn er veel events die geen match hebben, wat zal resulteren in een te lage gradatie. Dat de autocorrelatie in dit voorbeeld geen goed resultaat geeft, is te wijten aan het aantal herhalingen: het patroon wordt slechts tweemaal herhaald, terwijl de gebruikte noten in het patroon onderling niet hard van elkaar verschillen. We doen eens hetzelfde maar zetten het patroon 18 maal achter elkaar. Dit geeft figuur 5.3. Hier zien we pieken om de 64 verschuivingen. Dit geeft als resultaat inderdaad de gezochte herhaling. Figuur 5.3: Meer herhaling geeft een beter overzicht

64 5.4. Tests en vergelijkingen p Tests en vergelijkingen We vergelijken de output van de software met de techniek van autocorrelatie. Zo kunnen we een beeld vormen van welke techniek in welke gevallen beter scoort. Eerst nemen we enkele zelfgemaakte testcases uit het voorgaande gedeelte onder handen. Daarna volgen de tests met muziekvoorbeelden uit de collectie van het Koninklijk Museum voor Midden-Afrika te Tervuren (zie bijlage B) Zelfgemaakte Voorbeelden Tabel 2.2 Figuur 5.4: Autocorrelatie van onsets van tabel 2.2 De maxima in de verschuivingen van de autocorrelatie: (X,Y) = (12,12), (20,11) X=12 geeft aanleiding tot een kort patroon. Dit komt omdat het patroon slechts tweemaal herhaald wordt in de input zoals aangegeven in figuur

65 ˇ 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: 0 1 De software geeft als resultaat: [0.0, 3.2] grad: 1.00 herh: 1 ind: 18 basis: [0.2, 2.2] grad: 0.69 herh: 2 ind: 17 basis: Als we eerst sorteren op aantal indices en dan op gradatie, dan krijgen we het eerste resultaat. Als we eerst sorteren op aantal herhalingen, dan krijgen we het tweede resultaat. Het eerste is het patroon dat we wensen te verkrijgen, dit heeft zelfs een gradatie = 1, terwijl het meest herhaalde patroon korter is, niet alle events kan gebruiken en een lagere gradatie heeft M ˇ ˇ ( ˇ ˇ ( ˇ ( ˇ ( ˇ ˇ (? > Figuur 5.5: Autocorrelatie vs Software vs Ground Truth De software geeft hetzelfde resultaat als de ground truth en geeft zelfs aan dat het een 100% exacte match is. Doordat het patroon te weinig wordt herhaald, geeft de autocorrelatie een kort patroon.

66 5.4. Tests en vergelijkingen p. 56 Patroon uit 3.22a Figuur 5.6: Autocorrelatie van onsets van patroon uit 3.22a Er is een duidelijke herhaling te zien. Het maximum ligt op (X,Y) = (80,35). X=80 heeft 35/40 = 88% matches, bovendien zijn het de eerste 5 die verantwoordelijk zijn voor niet alle 40 matches (omdat we geen circulaire autocorrelatie beschouwen). X=80 geeft aanleiding tot de volgende splitsing: Dit betekent de volgende indices: De software geeft als resultaat:

67 5.4. Tests en vergelijkingen p. 57 [0.0, 4.0] grad: 1.00 herh: 7 ind: 40 basis: [0.0, 2.0] grad: 0.87 herh: 15 ind: 40 basis: 0 1 In [0.0, 4.0] zitten de events met indices , het resultaat van de autocorrelatie. Beide technieken geven hetzelfde patroon, al heeft het patroon van de software wel een gradatie van 1. Als we kijken naar het meest herhaalde patroon van de software, bestaat dit uit slechts 2 events met een lage gradatie M ˇ ˇ ( ˇ ( ˇ ˇ Figuur 5.7: Autocorrelatie vs Software vs Ground Truth Circulair gezien geven beide technieken hetzelfde resultaat als de ground truth.

68 5.4. Tests en vergelijkingen p. 58 Patroon uit 3.22b Figuur 5.8: Autocorrelatie van onsets van patroon uit 3.22b Dit is hetzelfde ritme als het voorgaande voorbeeld, maar met hier en daar wat ruis toegevoegd. De maxima in de verschuivingen van de autocorrelatie: (X,Y) = (20,35), (80,35) X=20 geeft aanleiding tot een kort patroon, wat niet wenselijk is. X=80 geeft bijna hetzelfde resultaat als in het vorig voorbeeld Dit betekent de volgende indices: Er is nu één event meer gebruikt, omdat in de eerste lijn de ruis al voorkomt.

69 ˇ 5.4. Tests en vergelijkingen p. 59 De software geeft als resultaat: [0.0, 2.0] grad: 0.83 herh: 15 ind: 44 basis: Er is geen patroon gevonden met gradatie één. Het patroon dat het meest herhaald wordt, bestaat slechts uit drie events. Als we eerst sorteren op gradatie, verkrijgen we dit resultaat: [0.0, 4.0] grad: 0.94 herh: 7 ind: 44 basis: M ˇ ˇ ( ˇ ( ˇ ˇ ( ˇ ˇ ( Figuur 5.9: Autocorrelatie vs Software vs Ground Truth Beide technieken kunnen de ground truth als resultaat geven. Voor de software moet opgemerkt worden dat we dit resultaat enkel verkregen hebben door een andere volgorde van zoeken in de oplossingverzameling te gebruiken.

70 5.4. Tests en vergelijkingen p. 60 Partituur 6.2 Figuur 5.10: Autocorrelatie van onsets van partituur 6.2 Daar dit stuk nogal kort is, zetten we het patroon meteen viermaal na elkaar. Het maximum in de verschuivingen van de autocorrelatie: (X,Y) = (120,18) Dit geeft aanleiding tot de volgende opsplitsing: (70 nullen) (70 nullen) (70 nullen) (70 nullen) Dit betekent de volgende indices: De software geeft als resultaat: [0.1, 2.1] grad: 0.76 herh: 7 ind: 23 basis: 1 2 Dit zijn slechts twee noten samengenomen. Als we kijken naar resultaten met gradatie 1: [0.1, 3.3] grad: 1.00 herh: 1 ind: 4 basis: 1 2 [0.0, 2.4] grad: 1.00 herh: 1 ind: 6 basis: [0.0, 3.6] grad: 1.00 herh: 1 ind: 6 basis: 0 1 2

71 ˇ ˇ 5.4. Tests en vergelijkingen p. 61 [0.0, 4.0] grad: 1.00 herh: 1 ind: 6 basis: [0.0, 2.0] grad: 1.00 herh: 3 ind: 12 basis: [0.0, 3.0] grad: 1.00 herh: 3 ind: 12 basis: [0.0, 6.0] grad: 1.00 herh: 3 ind: 24 basis: We hadden graag als resultaat gezien dat de helft samengenomen zou worden van de partituur (6.2). Inderdaad, het laatste resultaat geeft dit patroon weer. Het gebruikt ook alle 24 indices, daarom gebruiken we dit als oplossing M ˇ ( ˇ ( > > > > ˇ ( ˇ ( Figuur 5.11: Autocorrelatie vs Software vs Ground Truth Autocorrelatie en software geven exact hetzelfde resultaat. Tevens zijn ze gelijk aan de ground truth.

72 5.4. Tests en vergelijkingen p Muziekfragmenten s Figuur 5.12: Autocorrelatie van onsets van s De maximale verschuiving van de autocorrelatie: (X,Y) = (24,16) en (96,16) Het eerste maximum ligt op X=24. Dit geeft aanleiding tot de volgende opsplitsing:

73 ˇ 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 4.8] grad: 0.76 herh: 3 ind: 50 basis: Was X=96 gekozen als splitsing bij de autocorrelatie zou dit indices geweest zijn. In [0.0, 4.8] zitten enkel indices Zo zouden beide technieken hetzelfde resultaat opgeleverd kunnen hebben. De software is zeker van 50/54 = 93% events tov 16/54 = 29% bij de autocorrelatie M ˇ ( ˇ ( ˇ ( ˇ ˇ ( ˇ ( ˇ ( Figuur 5.13: Autocorrelatie vs Software vs Ground Truth Beide technieken komen niet in de buurt van de ground truth. Zelfs het subpatroon wordt niet gevonden.

74 5.4. Tests en vergelijkingen p s Figuur 5.14: Autocorrelatie van onsets van s De maxima in de verschuivingen van de autocorrelatie: (X,Y) = (9,28), (18,22), (45,21), (54,22) X=9 geeft aanleiding tot een heel kort basispatroon (indices 0,1,2), maar kan zo 28/55 = 51% events matchen. Alle andere maxima komen voor bij veelvouden van 9. X=54 geeft aanleiding tot de volgende opsplitsing met 22/55 = 40% events gematched: Dit betekent de volgende indices: De software geeft als resultaat:

75 ˇ 5.4. Tests en vergelijkingen p. 65 [0.1, 2.8] grad: 0.77 herh: 5 ind: 46 basis: Dit betekent dat er 46 van de 55 onsets gematched kunnen worden. Dit is 82% tov 39/55 = 71% M ˇ ˇ ( ˇ ( ˇ ˇ ( ˇ ˇ ( Figuur 5.15: Autocorrelatie vs Software vs Ground Truth Autocorrelatie en software geven bijna exact hetzelfde resultaat. Tevens zijn ze (circulair gezien) zo goed als gelijk aan de ground truth s Figuur 5.16: Autocorrelatie van onsets van s De top 4 van de maxima in de verschuivingen van de autocorrelatie: (X,Y) = (59,15), (15,14), (25,12), (119,10)

76 > 5.4. Tests en vergelijkingen p. 66 Gebruiken we X=59 geeft dit aanleiding tot de volgende opsplitsing met 15/41 = 37%: Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 2.7] grad: 0.67 herh: 3 ind: 26 basis: Dit betekent dat er 26 van de 41 onsets gematched kunnen worden: 63% M ˇ ( ˇ ˇ ˇ ( ˇ ˇ Figuur 5.17: Autocorrelatie vs Software vs Ground Truth Het resultaat voor het patroon is bij beide technieken dezelfde maar dit komt niet overeen met de ground truth.

77 5.4. Tests en vergelijkingen p s Figuur 5.18: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (9,18), (14,16), (23,14), (32,14), (55,20), (111,14) X=55 geeft de meeste matches (20/49 = 41%). X=111 is het dubbele van 55 daarom dat we X=55 gebruiken (wat een patroon van lengte 55 betekent). Dit geeft aanleiding tot de volgende opsplitsing: Dit betekent de volgende indices: De software geeft als resultaat:

78 > 5.4. Tests en vergelijkingen p. 68 [0.3, 3.9] grad: 0.70 herh: 3 ind: 35 basis: Dit resultaat geeft aanleiding tot een gebruik van 35/49 = 71% events tov 41% van de autocorrelatie M ˇ ( ˇ ˇ ˇ ( ˇ ˇ Figuur 5.19: Autocorrelatie vs Software vs Ground Truth Het resultaat van de autocorrelatie en de software komen bijna overeen. De software geeft een iets langer patroon. De ground truth is ook niet altijd zeker van het gespeelde patroon. Alleen door het weglaten van enkele noten kunnen de gevonden resultaten overeenstemmen met de ground truth.

79 5.4. Tests en vergelijkingen p s Figuur 5.20: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (25,18), (34,17), (58,20), (116,18) Het maximum is voor X=58 en 20/50 = 40% events gebruikt. Dit geeft aanleiding tot de volgende opsplitsing: Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 2.9] grad: 0.85 herh: 6 ind: 50 basis: Dit geeft aanleiding tot het gebruik van alle indices. Bovendien betekent interval [0.0, 2.9] het

80 5.4. Tests en vergelijkingen p. 70 gebruik van indices zodoende kunnen we stellen dat in dit geval autocorrelatie hetzelfde resultaat oplevert als de software M ˇ ( ˇ ˇ ˇ ˇ ( ˇ ˇ Figuur 5.21: Autocorrelatie vs Software vs Ground Truth Beide technieken komen tot dezelfde indeling, enkel het basispatroon is anders. Het basispatroon van de software is wel gelijk aan de ground truth s Figuur 5.22: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (9,28), (27,27) Dit geeft aanleiding tot de volgende opsplitsing:

81 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 2.2] grad: 0.83 herh: 6 ind: 54 basis: M ˇ ( ˇ ˇ ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( Figuur 5.23: Autocorrelatie vs Software vs Ground Truth Er worden eigenlijk twee ritmes gespeeld. Het tweede ritme bevat zachtere noten (tussen haakjes genoteerd). Deze twee ritmes kunnen niet uit elkaar gehouden worden. Het resultaat van de autocorrelatie komt in de buurt van het eerste fragment van de ground truth. De software doet zijn best om zo veel mogelijk indices te bereiken met dit patroon en slaagt daar wel in: 54/55 = 98%. Het resultaat neigt naar het tweede ritme in de ground truth, met rusten waar zachte noten gespeeld worden.

82 5.4. Tests en vergelijkingen p s Figuur 5.24: Autocorrelatie van onsets van s Er zijn in het begin enkele pieken die dicht bij elkaar zijn: (X,Y) = (9,33), (13,34), (18,30), (22,32) Het maximum ligt bij X=13 wat een vrij kort patroon zal betekenen. Dit geeft aanleiding tot de volgende opsplitsing:

83 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.1, 2.3] grad: 0.81 herh: 8 ind: 73 basis: Het resultaat van de software is veel langer (8) dan van de autocorrelatie (3), maar het kan wel alle 73 events matchen met dit patroon tov 34/73 = 47% bij autocorrelatie M ˇ ( ˇ ( ˇ ( ˇ ( Figuur 5.25: Autocorrelatie vs Software vs Ground Truth Het ritme bestaat uit dezelfde noten. Het is voor beide technieken niet mogelijk om te berekenen hoeveel noten er tot het patroon horen. Hier en daar zijn er gaten tijdens het ritme wat het

84 5.4. Tests en vergelijkingen p. 74 resultaat van de software aangeeft. De software is in staat om soms events bij te denken om andere intervallen te matchen en dit gebeurt hier ook. Zo kan het alle events uit de input matchen. Beide resultaten zijn goed s Figuur 5.26: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (19,24), (38,28), (76,23) Het maximum ligt op X=38 en geeft aanleiding tot de volgende opsplitsing:

85 ˇ 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 2.2] grad: 0.71 herh: 5 ind: 38 basis: Beide technieken geven een ander resultaat M ˇ ( ˇ ( ˇ ˇ? > ˇ ( ˇ ( > > Figuur 5.27: Autocorrelatie vs Software vs Ground Truth In dit fragment zijn twee aparte ritmes tegelijk hoorbaar. Het is moeilijk om deze gescheiden te houden en zeker gescheiden van elkaar te detecteren. Beide technieken komen in de buurt van de ground truth, maar zijn niet gelijk. Circulair gezien komt de software wel goed in de buurt van de ground truth.

86 5.4. Tests en vergelijkingen p s Figuur 5.28: Autocorrelatie van onsets van s Er zijn weer niet veel pieken te onderscheiden. Het maximum ligt op: (X,Y) = (21,32) Dit geeft aanleiding tot de volgende opsplitsing:

87 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als patronen die het meest herhaald worden: [0.4, 2.5] grad: 0.79 herh: 4 ind: 33 basis: [0.1, 2.3] grad: 0.67 herh: 4 ind: 34 basis: [0.1, 2.4] grad: 0.70 herh: 4 ind: 33 basis: [0.3, 4.0] grad: 0.81 herh: 4 ind: 57 basis: Het laatste is eigenlijk het resultaat: het wordt evenveel herhaald als de andere, maar geeft aanleiding tot 57/63 = 90% matches. Het negeert evenwel de eerste twee events. In [0.3, 4.0] zitten indices 2.. 9: acht events terwijl de basis er 14 telt. Overeenstemmend met index 9 (het 10 e event) zou de autocorrelatie moeten splitsen tussen X=73 of X=82. In dat interval zijn er twee lokale maxima: (74,25) en (79,22) M ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( Figuur 5.29: Autocorrelatie vs Software vs Ground Truth In dit fragment bestaat het patroon uit opeenvolgende achtste noten, zoals aangegeven door de ground truth. De autocorrelatie is te herleiden tot de helft van de ground truth (of een opeenvolging van vier achtste noten). De software geeft meer herhalingen weer van achtsten. Bovendien betekent het begin van de notatie dat er wat ruis is: er zit wat meer tijd tussen de eerste drie dan bij de rest.

88 5.4. Tests en vergelijkingen p s Figuur 5.30: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (10,18), (15,16), (35,20), (50,16) X=10 betekent dat er slechts 1 event als patroon bekeken wordt. Dit aanvaarden we niet. X=35 geeft het maximum: 20/46 = 44%. Dit geeft aanleiding tot de volgende opsplitsing:

89 5.4. Tests en vergelijkingen p. 79 Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 3.0] grad: 0.76 herh: 6 ind: 46 basis: In [0.0, 3.0] zitten indices Dit zou overeenkomen met de autocorrelatie als X=50 was gebruikt M ˇ ( ˇ ˇ ˇ ( ˇ ˇ ˇ Figuur 5.31: Autocorrelatie vs Software vs Ground Truth Als we het patroon circulair bekijken blijkt dat het resultaat van de software gelijk is aan de ground truth. Ook circulair bekijken van het resultaat van de autocorrelatie blijkt geen (zelfs niet deels) match te zijn met de ground truth.

90 5.4. Tests en vergelijkingen p s Figuur 5.32: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (10,20), (61,20) X=10 zou slechts 1 event betekenen. X=61 geeft aanleiding tot de volgende opsplitsing: Dit betekent de volgende indices: De software geeft als resultaat: [0.3, 2.5] grad: 0.71 herh: 4 ind: 29 basis: [0.4, 2.7] grad: 0.74 herh: 4 ind: 32 basis: [0.1, 4.2] grad: 0.67 herh: 4 ind: 53 basis:

91 5.4. Tests en vergelijkingen p. 81 Het laatste resultaat is langer dan de autocorrelatie, maar dit patroon leidt tot een match van 53/54 = 98% events M ˇ ( ˇ ˇ ˇ ( ˇ ˇ ˇ Figuur 5.33: Autocorrelatie vs Software vs Ground Truth In dit muziekfragment zijn twee verschillende percussielijnen te horen. Het is dan moeilijk om beide ritmes te onderscheiden. De software geeft een lang patroon als resultaat en is iets anders dan de ground truth. Circulair bekijken van het resultaat van de autocorrelatie geeft ook niet de ground truth Figuur 5.34: Software resultaat met hogere gradatie In dit voorbeeld zien we de impact van het toelaten van niet-matches. In de software heeft dit tot gevolg het bijrekenen van een strafmaat en een lagere gradatie, maar een hoger aantal events die gebruikt kunnen worden (zoals het derde resultaat: 98%). In figuur 5.34 is het tweede resultaat (indices ) op een tijdsas gezet. Dit patroon is iets korter dan de ground truth maar is er wel een submatch van.

92 5.4. Tests en vergelijkingen p s Figuur 5.35: Autocorrelatie van onsets van s Er zijn geen echte uitschieters te zien. Het maximum ligt bij (X,Y) = (32,27) Dit geeft aanleiding tot de volgende opsplitsing:

93 5.4. Tests en vergelijkingen p. 83 Dit betekent de volgende indices: De software geeft als resultaat: [0.1, 2.3] grad: 0.69 herh: 5 ind: 40 basis: De software kan 40/57 = 70% van de events als patroon aanzien tov 47% door autocorrelatie M ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( ˇ ( Figuur 5.36: Autocorrelatie vs Software vs Ground Truth Het gespeelde ritme bestaat uit dezelfde noten. Beide technieken hebben het bij het rechte eind: er is immers geen bijkomende informatie voorhanden hoeveel noten het patroon maakt.

94 5.4. Tests en vergelijkingen p s Figuur 5.37: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (5,28), (10,22), (15,31), (20,22), (30,33), (45,20), (60,18) Het maximum is bij X=30 met 33/56 = 59% events gematched. Dit geeft aanleiding tot de volgende opsplitsing:

95 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.4, 2.4] grad: 0.73 herh: 6 ind: 42 basis: Het meest herhaalde patroon bestaat (zoals het resultaat van de autocorrelatie) ook uit 6 indices, maar het eerste interval ligt op [0.4, 2.4] waarin events liggen. Dit betekent dat de eerste 2 events worden genegeerd. Er worden 75% events gematched M ˇ ( ˇ ˇ ( ˇ ˇ ( ˇ ( ˇ ( ˇ ( ˇ Figuur 5.38: Autocorrelatie vs Software vs Ground Truth In dit fragment zijn twee verschillende ritmes te horen, zoals de ground truth aangeeft. De autocorrelatie en de software kunnen dit niet onderscheiden en proberen beide ritmes te combineren tot 1 patroon.

96 5.4. Tests en vergelijkingen p s Figuur 5.39: Autocorrelatie van onsets van s Uit de figuur blijkt al dat er veel patronen te vinden zijn. Opmerkelijke pieken: (X,Y) = (9,33), (18,28) De twee maxima zijn niet toevallig bij X elkaars veelvoud. Gebruiken we X=18:

97 5.4. Tests en vergelijkingen p Er is weer een verschuiving naar rechts te zien. De intervallen van de autocorrelatie zijn 50ms groot. Indien deze nog kleiner zouden genomen worden, zou de verschuiving minder merkbaar moeten zijn. Voor X=9 bestaat de basis uit 0 1, maar er zullen veel lijnen zijn met slechts 1 event. Voor X=18 zijn er meestal 2 events per lijn. De software geeft als resultaat: [0.0, 2.3] grad: 0.93 herh: 8 ind: 44 basis: De software geeft meer events samen als basispatroon. Het kan wel alle events met elkaar matchen terwijl autocorrelatie van (33/44 =) 75% events zeker is M ˇ ˇ ˇ ˇ Figuur 5.40: Autocorrelatie vs Software vs Ground Truth In het muziekfragment zijn slechts 4 e noten te horen die elkaar opvolgen. Zonder bijkomende informatie per noot (zoals bvb accenten of identificatie van het instrument) is het moeilijk om af te bakenen wat het patroon is. Slechts 1 noot apart (autocorrelatie) beschouwen wordt meestal niet gedaan. Met het oor luisteren duidt op 4 noten samen (ground truth). Om de meeste matches te verkrijgen neemt de software er 5 samen.

98 5.4. Tests en vergelijkingen p s Figuur 5.41: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (10,18), (24,16) X=10 zijn slechts 2 events, we nemen de volgende top: X=24. Dit geeft aanleiding tot de volgende opsplitsing:

99 5.4. Tests en vergelijkingen p Een duidelijk patroon is niet met het blote oog te zien. betekent dit de volgende indices als basispatroon: Gebruiken we toch deze opsplitsing De software geeft als resultaat: [0.0, 2.4] grad: 0.69 herh: 4 ind: 30 basis: Beide technieken geven een ander resultaat. In [0.0, 2.4] zitten events 0.. 5, twee meer dan volgens de autocorrelatie M ˇ ( ˇ ˇ ˇ ( ˇ ˇ ˇ Figuur 5.42: Autocorrelatie vs Software vs Ground Truth Het is niet duidelijk welk ritme er in het fragment te horen is. De beschreven ground truth komt aardig in de buurt. Het resultaat van de software lijkt meer op de ground truth dan dat van de autocorrelatie: het telt ook zeven events zoals in de manuele annotatie, hoewel ze niet exact gelijk zijn. De software is dan ook maar zeker van 30/50 = 60%. De autocorrelatie is dit voor slechts 32%.

100 5.4. Tests en vergelijkingen p s Figuur 5.43: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (6,12), (16,12), (32,11), (33,14), (64,12), (98,10) Het maximum ligt op X=33 (14/41 = 34%). Dit geeft aanleiding tot de volgende opsplitsing: Als we vanaf lijn 5 kijken, zien we een verschuiving toenemen naar links. Om dit beter uitge-

101 5.4. Tests en vergelijkingen p. 91 lijnd te krijgen zouden we vroeger moeten splitsen. Inderdaad, X=32 geeft nog 11 matches maar een betere uitlijning voor die lagere lijnen. Maar dit betekent dat er dan weer een verschuiving naar rechts te zien is: Beide gevallen geven als basisindices: 0.. 4, dit zijn er 5. De software geeft als resultaat: [0.2, 3.4] grad: 0.87 herh: 4 ind: 33 basis: Dit zijn in totaal 33/41 = 80% events die gematched kunnen worden M ˇ ( ˇ ˇ` ˇ ( ˇ ˇ ˇ ( Figuur 5.44: Autocorrelatie vs Software vs Ground Truth Wederom blijkt het niet zo duidelijk te zijn welk ritme er juist gespeeld wordt. Door het resultaat van de software circulair te bekijken, bekomen we de manuele annotatie.

102 5.4. Tests en vergelijkingen p s Figuur 5.45: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (14,22), (28,25), (85,18) Het maximum zit op X=28. Dit geeft aanleiding tot de volgende opsplitsing:

103 ? 5.4. Tests en vergelijkingen p. 93 De meeste lijnen hebben zo drie events. De eerste lijn heeft de volgende indices: De software geeft als resultaat: [0.1, 2.2] grad: 0.77 herh: 7 ind: 44 basis: Dit patroon kan 44/52 = 85% events gebruiken tov 48% van de autocorrelatie M ˇ ( ˇ ˇ Figuur 5.46: Autocorrelatie vs Software vs Ground Truth Een deel van beide resultaten is gelijk aan de ground truth. Bij beide technieken zijn er toch meer events dan de annotatie. Dit komt omdat er hier en daar toch wat meer events tussen de patronen tijdens de onsetdetectie gekomen zijn.

104 5.4. Tests en vergelijkingen p s Figuur 5.47: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (7,12), (43,9) X=7 is te klein, het volgende maximum ligt op X=43. Dit geeft aanleiding tot de volgende opsplitsing met een gebruik van 9/35 = 26%: We zien als het ware het patroon ongeveer goed gevormd, maar een goede opsplitsing vinden we niet. Dit blijkt ook uit het groot aantal splitsingen met Y=7. X=43 betekent een kort patroon

105 5.4. Tests en vergelijkingen p. 95 met de volgende indices: De software geeft als resultaat: [0.0, 2.1] grad: 0.82 herh: 6 ind: 24 basis: In interval [0.0, 2.1] zitten enkel indices 0 1 2, wat betekent dat het laatste resultaat overeenstemt met de uitkomst van de autocorrelatie. Dit patroon kan 67% events matchen M ˇ ( ˇ ˇ` Figuur 5.48: Autocorrelatie vs Software vs Ground Truth Beide technieken komen tot hetzelfde resultaat als de ground truth.

106 5.4. Tests en vergelijkingen p s Figuur 5.49: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (22,13), (44,12), (87,12), (109,11), (131,12), (175,10) X=44: = 87, = 130, = 174. Dit is quasi dezelfde afstand, X=44 geeft dus een mooi resultaat en matcht 12/37 = 32%: Dit betekent de volgende indices: De software geeft als resultaat:

107 5.4. Tests en vergelijkingen p. 97 [0.0, 2.2] grad: 0.83 herh: 3 ind: 15 basis: Het interval [0.0, 2.2] geeft ook aanleiding (zoals de autocorrelatie) tot indices en is zeker van 15/37 = 41% events M ˇ ( ˇ ˇ` Figuur 5.50: Autocorrelatie vs Software vs Ground Truth Door het resultaat van de software circulair te bekijken, bekomen we de manuele annotatie. De autocorrelatie gaat hier de mist in s Figuur 5.51: Autocorrelatie van onsets van s

108 5.4. Tests en vergelijkingen p. 98 Opmerkelijke pieken: (X,Y) = (27,22), (41,20), (68,22), (95,18), (109,17), (136,16), (163,15) Dit zijn allemaal pieken die ongeveer even ver van elkaar liggen. X=27 geeft een kort patroon. X=41 geeft aanleiding tot de volgende splitsing: Voor X=68 is er ook een maximum, wat de volgende splitsing betekent: Dit betekent de volgende indices: De software geeft als resultaat: [0.1, 2.8] grad: 0.77 herh: 5 ind: 33 basis: Het meest herhaalde patroon ( ) stemt overeen met de splitsing X=68 van de autocorrelatie. De software is zeker van 33/43 = 77% tov 51% voor de autocorrelatie.

109 ˇ 5.4. Tests en vergelijkingen p M ˇ ( ˇ ˇ ( ˇ ˇ ( Figuur 5.52: Autocorrelatie vs Software vs Ground Truth Het gespeelde ritme in het fragment is niet exact gelijk aan de ground truth, daardoor lijken beide technieken niet op de annotatie s Figuur 5.53: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (22,38), (65,30), (87,32) X=22 geeft aanleiding tot de volgende opsplitsing:

110 5.4. Tests en vergelijkingen p Hier zien we al een patroon ontstaan. Dit betekent de volgende indices: De software geeft als resultaat: [0.3, 2.6] grad: 0.64 herh: 4 ind: 35 basis: [0.0, 2.4] grad: 0.77 herh: 4 ind: 35 basis: [0.2, 2.6] grad: 0.75 herh: 4 ind: 36 basis: Het derde resultaat gebruikt 1 onset meer dan de andere twee, maar heeft een lagere gradatie dan het tweede resultaat M ˇ ( ˇ ˇ Figuur 5.54: Autocorrelatie vs Software vs Ground Truth De autocorrelatie vindt in dit geval een patroon dat goed op de ground truth lijkt. De software maakt er iets anders van doordat er meer onsets gedetecteerd worden dan er in het ritme zitten.

111 5.4. Tests en vergelijkingen p s Figuur 5.55: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (22,34), (65,30), (87,33) Het maximum bij X=22 geeft aanleiding tot de volgende opsplitsing:

112 5.4. Tests en vergelijkingen p Dit betekent de volgende indices: De software geeft als resultaat: [0.2, 2.6] grad: 0.68 herh: 5 ind: 43 basis: M ˇ ( ˇ ˇ ˇ ( ˇ ˇ Figuur 5.56: Autocorrelatie vs Software vs Ground Truth In beide resultaten is de ground truth terug te vinden als subset. Bij de autocorrelatie zijn er veel lijnen met drie events. Als we één van deze lijnen nemen als patroon komt dit overeen met de helft van de ground truth. De software geeft ook de ground truth met nog één event meer.

113 5.4. Tests en vergelijkingen p s Figuur 5.57: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (13,41), (66,36) Het maximum zit bij X=13. Dit geeft aanleiding tot de volgende opsplitsing:

114 5.4. Tests en vergelijkingen p Er zijn veel lijnen met slechts 2 events. Iets wat we normaal niet aanvaarden als patroon wegens te kort. Het volgende maximum zit op X=66, wat deze splitsing geeft: Als we naar deze lijnen kijken, zien we dat er per lijn veel malen na elkaar komen. Dit zijn twee events, zoals aangegeven door de eerste splitsing. Naar gewoonte nemen we de eerste lijn: indices De software geeft als resultaat: [0.6, 2.6] grad: 0.77 herh: 6 ind: 43 basis: [0.0, 2.3] grad: 0.77 herh: 6 ind: 52 basis: [0.1, 2.4] grad: 0.65 herh: 6 ind: 45 basis:

115 ˇ 5.4. Tests en vergelijkingen p. 105 Het tweede resultaat gebruikt de meeste indices: 52/63 = 83% tov 41/63 = 65% matches bij de autocorrelatie M ˇ ( Figuur 5.58: Autocorrelatie vs Software vs Ground Truth Hadden we een andere lijn gebruikt voor de autocorrelatie zou deze dezelfde zijn als de ground truth. In de software is het patroon driemaal herhaald met nog één extra event. Dit komt omdat in het muziekfragment op een bepaalde plaats even niet het ritme gespeeld wordt s Figuur 5.59: Autocorrelatie van onsets van s

116 ? ˇ ( ˇ 5.4. Tests en vergelijkingen p. 106 Pieken zijn op te merken met een lengte van 26: (X,Y) = (26,24), (53,23), (79,20), (105,19) We gebruiken het maximum: X=26. Dit geeft aanleiding tot de volgende opsplitsing: Dit betekent de volgende indices: De software geeft als resultaat: [0.0, 2.2] grad: 0.70 herh: 5 ind: 35 basis: [0.1, 2.7] grad: 0.87 herh: 5 ind: 40 basis: Het tweede resultaat heeft een hogere gradatie en gebruikt meer indices: 40/52 = 77% tov 46% bij de autocorrelatie M ˇ Figuur 5.60: Autocorrelatie vs Software vs Ground Truth In het fragment zit slechts op één plaats een verkeerd ritme dan het geannoteerde. De onsetdetectie

117 5.4. Tests en vergelijkingen p. 107 vindt evenwel meer events tijdens de verschillende herhalingen. Hierdoor vindt de software iets anders dan het ritme omdat dit patroon veel events met elkaar kan matchen. De autocorrelatie vindt het beschreven ritme ook niet s Figuur 5.61: Autocorrelatie van onsets van s Opmerkelijke pieken: (X,Y) = (45,11), (91,12) Het lijkt erop dat er een patroon bestaat met lengte = = 46. X=45 geeft aanleiding tot de volgende opsplitsing:

118 ? 5.4. Tests en vergelijkingen p. 108 Dit betekent de volgende indices: events is nogal een kort patroon, nemen we X=91 krijgen we: x x x x x x x x De software geeft als resultaat: [0.1, 4.6] grad: 0.80 herh: 3 ind: 28 basis: [0.1, 4.6] bevat indices en geeft aanleiding tot 28/32 = 88% matches. In [0.0, 4.6] zijn events vervat, wat de splitsing van de autocorrelatie is bij X=91 (het maximum) met 38% matches M ˇ ˇ ˇ Figuur 5.62: Autocorrelatie vs Software vs Ground Truth De software geeft hier voorrang aan het dubbele van het patroon zoals gevonden door de autocorrelatie en de annotatie beschrijft.

119 5.4. Tests en vergelijkingen p s Figuur 5.63: Autocorrelatie van onsets van s Er zijn niet veel pieken op te merken: (X,Y) = (15,12), (30,8), (45,7), (61,7). Dit komt omdat er slechts 31 onsets in het fragment gevonden zijn. Een vergelijking (fig. 5.64) van de audio met de gedetecteerde onsets leert dat er veel events overgeslagen zijn. In het midden is er even een stuk waar de zangstem de percussie bijna onhoorbaar maakt, alhoewel ze aanwezig is. Evenwel worden deze events niet gedetecteerd. Elke splitsing van deze maxima blijkt onzinnig te zijn doordat er te weinig overeenkomsten gevonden kunnen worden. Figuur 5.64: Detectie versus audio van s De software geeft als resultaat:

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond.

Opgave 2 Geef een korte uitleg van elk van de volgende concepten: De Yield-to-Maturity of a coupon bond. Opgaven in Nederlands. Alle opgaven hebben gelijk gewicht. Opgave 1 Gegeven is een kasstroom x = (x 0, x 1,, x n ). Veronderstel dat de contante waarde van deze kasstroom gegeven wordt door P. De bijbehorende

Nadere informatie

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g

S e v e n P h o t o s f o r O A S E. K r i j n d e K o n i n g S e v e n P h o t o s f o r O A S E K r i j n d e K o n i n g Even with the most fundamental of truths, we can have big questions. And especially truths that at first sight are concrete, tangible and proven

Nadere informatie

Settings for the C100BRS4 MAC Address Spoofing with cable Internet.

Settings for the C100BRS4 MAC Address Spoofing with cable Internet. Settings for the C100BRS4 MAC Address Spoofing with cable Internet. General: Please use the latest firmware for the router. The firmware is available on http://www.conceptronic.net! Use Firmware version

Nadere informatie

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and

Lichamelijke factoren als voorspeller voor psychisch. en lichamelijk herstel bij anorexia nervosa. Physical factors as predictors of psychological and Lichamelijke factoren als voorspeller voor psychisch en lichamelijk herstel bij anorexia nervosa Physical factors as predictors of psychological and physical recovery of anorexia nervosa Liesbeth Libbers

Nadere informatie

Ontpopping. ORGACOM Thuis in het Museum

Ontpopping. ORGACOM Thuis in het Museum Ontpopping Veel deelnemende bezoekers zijn dit jaar nog maar één keer in het Van Abbemuseum geweest. De vragenlijst van deze mensen hangt Orgacom in een honingraatpatroon. Bezoekers die vaker komen worden

Nadere informatie

Firewall van de Speedtouch 789wl volledig uitschakelen?

Firewall van de Speedtouch 789wl volledig uitschakelen? Firewall van de Speedtouch 789wl volledig uitschakelen? De firewall van de Speedtouch 789 (wl) kan niet volledig uitgeschakeld worden via de Web interface: De firewall blijft namelijk op stateful staan

Nadere informatie

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind.

Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Pesten onder Leerlingen met Autisme Spectrum Stoornissen op de Middelbare School: de Participantrollen en het Verband met de Theory of Mind. Bullying among Students with Autism Spectrum Disorders in Secondary

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE. Toets Inleiding Kansrekening 1 22 februari 2013 FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Toets Inleiding Kansrekening 1 22 februari 2013 Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als je een onderdeel

Nadere informatie

Quality requirements concerning the packaging of oak lumber of Houthandel Wijers vof (09.09.14)

Quality requirements concerning the packaging of oak lumber of Houthandel Wijers vof (09.09.14) Quality requirements concerning the packaging of oak lumber of (09.09.14) Content: 1. Requirements on sticks 2. Requirements on placing sticks 3. Requirements on construction pallets 4. Stick length and

Nadere informatie

Alle opgaven tellen even zwaar, 10 punten per opgave.

Alle opgaven tellen even zwaar, 10 punten per opgave. WAT IS WISKUNDE (English version on the other side) Maandag 5 november 2012, 13.30 1.30 uur Gebruik voor iedere opgave een apart vel. Schrijf je naam en studentnummer op elk vel. Alle opgaven tellen even

Nadere informatie

CHROMA STANDAARDREEKS

CHROMA STANDAARDREEKS CHROMA STANDAARDREEKS Chroma-onderzoeken Een chroma geeft een beeld over de kwaliteit van bijvoorbeeld een bodem of compost. Een chroma bestaat uit 4 zones. Uit elke zone is een bepaald kwaliteitsaspect

Nadere informatie

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14

Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 QUICK GUIDE C Het beheren van mijn Tungsten Network Portal account NL 1 Manage my Tungsten Network Portal account EN 14 Version 0.9 (June 2014) Per May 2014 OB10 has changed its name to Tungsten Network

Nadere informatie

Understanding and being understood begins with speaking Dutch

Understanding and being understood begins with speaking Dutch Understanding and being understood begins with speaking Dutch Begrijpen en begrepen worden begint met het spreken van de Nederlandse taal The Dutch language links us all Wat leest u in deze folder? 1.

Nadere informatie

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015

LDA Topic Modeling. Informa5ekunde als hulpwetenschap. 9 maart 2015 LDA Topic Modeling Informa5ekunde als hulpwetenschap 9 maart 2015 LDA Voor de pauze: Wat is LDA? Wat kan je er mee? Hoe werkt het (Gibbs sampling)? Na de pauze Achterliggende concepten à Dirichlet distribu5e

Nadere informatie

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling

Screen Design. Deliverable 3 - Visual Design. Pepijn Gieles 0877217 19-12-2014. Docent: Jasper Schelling Screen Design Deliverable 3 - Visual Design Pepijn Gieles 0877217 19-12-2014 Docent: Jasper Schelling Hulp bij het inloggen Inloggen Particulier Personal Banking Private Banking Zakelijk Zoeken in Particulier

Nadere informatie

How to install and use dictionaries on the ICARUS Illumina HD (E652BK)

How to install and use dictionaries on the ICARUS Illumina HD (E652BK) (for Dutch go to page 4) How to install and use dictionaries on the ICARUS Illumina HD (E652BK) The Illumina HD offers dictionary support for StarDict dictionaries.this is a (free) open source dictionary

Nadere informatie

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE

FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE FOR DUTCH STUDENTS! ENGLISH VERSION NEXT PAGE Tentamen Analyse 8 december 203, duur 3 uur. Voeg aan het antwoord van een opgave altijd het bewijs, de berekening of de argumentatie toe. Als jeeen onderdeel

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 1 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 Plan voor Vandaag Praktische dingen 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen. Theorie

Nadere informatie

Relationele Databases 2002/2003

Relationele Databases 2002/2003 Relationele Databases 2002/2003 Hoorcollege 4 8 mei 2003 Jaap Kamps & Maarten de Rijke April Juli 2003 1 Plan voor Vandaag Praktische dingen Huiswerk 3.1, 3.2, 3.3, 3.4, 3.5. SQL Aantekeningen 2 Tabellen.

Nadere informatie

Handleiding Installatie ADS

Handleiding Installatie ADS Handleiding Installatie ADS Versie: 1.0 Versiedatum: 19-03-2014 Inleiding Deze handleiding helpt u met de installatie van Advantage Database Server. Zorg ervoor dat u bij de aanvang van de installatie

Nadere informatie

Non Diffuse Point Based Global Illumination

Non Diffuse Point Based Global Illumination Non Diffuse Point Based Global Illumination Karsten Daemen Thesis voorgedragen tot het behalen van de graad van Master of Science in de ingenieurswetenschappen: computerwetenschappen Promotor: Prof. dr.

Nadere informatie

Tentamen Objectgeorienteerd Programmeren

Tentamen Objectgeorienteerd Programmeren Tentamen Objectgeorienteerd Programmeren 5082IMOP6Y maandag 16 november 2015 13:00 15:00 Schrijf je naam en studentnummer op de regel hieronder. Sla deze pagina niet om tot de surveillant vertelt dat het

Nadere informatie

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS

COGNITIEVE DISSONANTIE EN ROKERS COGNITIVE DISSONANCE AND SMOKERS COGNITIEVE DISSONANTIE EN ROKERS Gezondheidsgedrag als compensatie voor de schadelijke gevolgen van roken COGNITIVE DISSONANCE AND SMOKERS Health behaviour as compensation for the harmful effects of smoking

Nadere informatie

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO

Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Handleiding/Manual Hoe met Windows 8 te verbinden met NDI Remote Office (NDIRO) How to connect With Windows 8 to NDI Remote Office (NDIRO Inhoudsopgave / Table of Contents 1 Verbinden met het gebruik van

Nadere informatie

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland

Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland Bijlage 2: Informatie met betrekking tot goede praktijkvoorbeelden in Londen, het Verenigd Koninkrijk en Queensland 1. Londen In Londen kunnen gebruikers van een scootmobiel contact opnemen met een dienst

Nadere informatie

Socio-economic situation of long-term flexworkers

Socio-economic situation of long-term flexworkers Socio-economic situation of long-term flexworkers CBS Microdatagebruikersmiddag The Hague, 16 May 2013 Siemen van der Werff www.seo.nl - secretariaat@seo.nl - +31 20 525 1630 Discussion topics and conclusions

Nadere informatie

1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen):

1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen): Uitwerking Huiswerkopgave Inleiding Modelleren Hoofdstuk 3 1a. We werken het geval voor het tandenpoetsen uit. De concepten zijn (we gebruiken Engelse termen en afkortingen): tube=[cap:{open,close},hand:{l,r,none}]

Nadere informatie

een kopie van je paspoort, een kopie van je diploma voortgezet onderwijs (hoogst genoten opleiding), twee pasfoto s, naam op de achterkant

een kopie van je paspoort, een kopie van je diploma voortgezet onderwijs (hoogst genoten opleiding), twee pasfoto s, naam op de achterkant Vragenlijst in te vullen en op te sturen voor de meeloopochtend, KABK afdeling fotografie Questionnaire to be filled in and send in before the introduction morning, KABK department of Photography Stuur

Nadere informatie

Media en creativiteit. Winter jaar vier Werkcollege 7

Media en creativiteit. Winter jaar vier Werkcollege 7 Media en creativiteit Winter jaar vier Werkcollege 7 Kwartaaloverzicht winter Les 1 Les 2 Les 3 Les 4 Les 5 Les 6 Les 7 Les 8 Opbouw scriptie Keuze onderwerp Onderzoeksvraag en deelvragen Bespreken onderzoeksvragen

Nadere informatie

Find Neighbor Polygons in a Layer

Find Neighbor Polygons in a Layer Find Neighbor Polygons in a Layer QGIS Tutorials and Tips Author Ujaval Gandhi http://google.com/+ujavalgandhi Translations by Dick Groskamp This work is licensed under a Creative Commons Attribution 4.0

Nadere informatie

2013 Introduction HOI 2.0 George Bohlander

2013 Introduction HOI 2.0 George Bohlander 2013 Introduction HOI 2.0 George Bohlander HOI 2.0 introduction Importance HOI currency Future print = HOI 2.0 HOI 2.0 Print: Décomplexation/more simple Digital: New set-up Core values HOI Accountability

Nadere informatie

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0.

04/11/2013. Sluitersnelheid: 1/50 sec = 0.02 sec. Frameduur= 2 x sluitersnelheid= 2/50 = 1/25 = 0.04 sec. Framerate= 1/0. Onderwerpen: Scherpstelling - Focusering Sluitersnelheid en framerate Sluitersnelheid en belichting Driedimensionale Arthrokinematische Mobilisatie Cursus Klinische Video/Foto-Analyse Avond 3: Scherpte

Nadere informatie

Leeftijdcheck (NL) Age Check (EN)

Leeftijdcheck (NL) Age Check (EN) Leeftijdcheck (NL) Age Check (EN) [Type text] NL: Verkoopt u producten die niet aan jonge bezoekers verkocht mogen worden of heeft uw webwinkel andere (wettige) toelatingscriteria? De Webshophelpers.nl

Nadere informatie

ETS 4.1 Beveiliging & ETS app concept

ETS 4.1 Beveiliging & ETS app concept ETS 4.1 Beveiliging & ETS app concept 7 juni 2012 KNX Professionals bijeenkomst Nieuwegein Annemieke van Dorland KNX trainingscentrum ABB Ede (in collaboration with KNX Association) 12/06/12 Folie 1 ETS

Nadere informatie

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation

Contents. Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation TeleBank Contents Introduction Problem Definition The Application Co-operation operation and User friendliness Design Implementation Introduction - TeleBank Automatic bank services Initiates a Dialog with

Nadere informatie

Y.S. Lubbers en W. Witvoet

Y.S. Lubbers en W. Witvoet WEBDESIGN Eigen Site Evaluatie door: Y.S. Lubbers en W. Witvoet 1 Summary Summary Prefix 1. Content en structuur gescheiden houden 2. Grammaticaal correcte en beschrijvende markup 3. Kopregels 4. Client-

Nadere informatie

De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en. Discrepantie

De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en. Discrepantie De Relatie tussen Betrokkenheid bij Pesten en Welbevinden en de Invloed van Sociale Steun en Discrepantie The Relationship between Involvement in Bullying and Well-Being and the Influence of Social Support

Nadere informatie

Gebruik van het LOGO in geautomatiseerde verkiezingen

Gebruik van het LOGO in geautomatiseerde verkiezingen BIJLAGE 1 S.A. STERIA Benelux N.V. Gebruik van het LOGO in geautomatiseerde verkiezingen Technische bepalingen voor de weergave van het logo op de schermen. Versie 1.2 Guy JASPERS Revisions Revision Description

Nadere informatie

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur

Invloed van het aantal kinderen op de seksdrive en relatievoorkeur Invloed van het aantal kinderen op de seksdrive en relatievoorkeur M. Zander MSc. Eerste begeleider: Tweede begeleider: dr. W. Waterink drs. J. Eshuis Oktober 2014 Faculteit Psychologie en Onderwijswetenschappen

Nadere informatie

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim

De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim De Relatie tussen Werkdruk, Pesten op het Werk, Gezondheidsklachten en Verzuim The Relationship between Work Pressure, Mobbing at Work, Health Complaints and Absenteeism Agnes van der Schuur Eerste begeleider:

Nadere informatie

LinkedIn Profiles and personality

LinkedIn Profiles and personality LinkedInprofielen en Persoonlijkheid LinkedIn Profiles and personality Lonneke Akkerman Open Universiteit Naam student: Lonneke Akkerman Studentnummer: 850455126 Cursusnaam en code: S57337 Empirisch afstudeeronderzoek:

Nadere informatie

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11

Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11 QUICK GUIDE B Registratie- en activeringsproces voor de Factuurstatus Service NL 1 Registration and activation process for the Invoice Status Service EN 11 Version 0.14 (July 2015) Per May 2014 OB10 has

Nadere informatie

CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden

CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden CSRQ Center Rapport over onderwijsondersteunende organisaties: Samenvatting voor onderwijsgevenden Laatst bijgewerkt op 25 november 2008 Nederlandse samenvatting door TIER op 5 juli 2011 Onderwijsondersteunende

Nadere informatie

ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement

ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement ESOMAR PAPER: Four simple strategies: 25% more ROI for newspaper advertisement Learnings from 2011 case for: Erdee Media Group Cebuco, Amsterdam BY Martin Leeflang (Validators) Esomar Paper Augustus 2011

Nadere informatie

Plotten. technisch tekenwerk AUTOCAD 2000

Plotten. technisch tekenwerk AUTOCAD 2000 Inleiding Voor het plotten van uw bent u bij Lifoka aan het juiste adres. Snel, betrouwbaar en dat in grote of kleine oplagen. Niet alleen het plotten, maar ook vergaren en verzenden kan Lifoka voor u

Nadere informatie

Homework assignment 7 (Intensionality)

Homework assignment 7 (Intensionality) Homework assignment 7 (Intensionality) Semantiek 2013 Solutions Opgave 1 Bekijk de volgende zinnen: A. Lewis Carroll is Charles Dodgson, en Tina ontmoette Charles Dodgson. B. Lewis Carroll is Charles Dodgson,

Nadere informatie

Workflow en screenshots Status4Sure

Workflow en screenshots Status4Sure Workflow en screenshots Status4Sure Inleiding Het Status4Sure systeem is een ICT oplossing waarmee de transportopdrachten papierloos door het gehele proces gaan. De status kan gevolgd worden door de logistieke

Nadere informatie

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten

Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Verschil in Perceptie over Opvoeding tussen Ouders en Adolescenten en Alcoholgebruik van Adolescenten Difference in Perception about Parenting between Parents and Adolescents and Alcohol Use of Adolescents

Nadere informatie

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016

Ius Commune Training Programme 2015-2016 Amsterdam Masterclass 16 June 2016 www.iuscommune.eu Dear Ius Commune PhD researchers, You are kindly invited to attend the Ius Commune Amsterdam Masterclass for PhD researchers, which will take place on Thursday 16 June 2016. During this

Nadere informatie

Competencies atlas. Self service instrument to support jobsearch. Naam auteur 19-9-2008

Competencies atlas. Self service instrument to support jobsearch. Naam auteur 19-9-2008 Competencies atlas Self service instrument to support jobsearch Naam auteur 19-9-2008 Definitie competency The aggregate of knowledge, skills, qualities and personal characteristics needed to successfully

Nadere informatie

De Levende Gevel. Een richting voor innovatie en de ontwikkeling van de toekomst

De Levende Gevel. Een richting voor innovatie en de ontwikkeling van de toekomst De Levende Gevel Een richting voor innovatie en de ontwikkeling van de toekomst A letter from nature Dear., Our life knows no boundaries, we live together. You live in me and I live in you! I not only

Nadere informatie

PERSOONLIJKHEID EN OUTPLACEMENT. Onderzoekspracticum scriptieplan Eerste begeleider: Mw. Dr. T. Bipp Tweede begeleider: Mw. Prof Dr. K.

PERSOONLIJKHEID EN OUTPLACEMENT. Onderzoekspracticum scriptieplan Eerste begeleider: Mw. Dr. T. Bipp Tweede begeleider: Mw. Prof Dr. K. Persoonlijkheid & Outplacement: Wat is de Rol van Core Self- Evaluation (CSE) op Werkhervatting na Ontslag? Personality & Outplacement: What is the Impact of Core Self- Evaluation (CSE) on Reemployment

Nadere informatie

English is everywhere. hi morning mouse cool help desk hello computers mail school game. Lees de tekst. Omcirkel de Engelse woorden.

English is everywhere. hi morning mouse cool help desk hello computers mail school game. Lees de tekst. Omcirkel de Engelse woorden. one English is everywhere Test Luister naar wat Daniel vertelt. Welke Engelse woorden hoor je? Kruis ze aan. hi morning mouse cool help desk hello computers mail school game Lees de tekst. Omcirkel de

Nadere informatie

Cambridge International Examinations Cambridge International General Certificate of Secondary Education

Cambridge International Examinations Cambridge International General Certificate of Secondary Education *3745107457* Cambridge International Examinations Cambridge International General Certificate of Secondary Education DUTCH 0515/03 Paper 3 Speaking Role Play Card One 1 March 30 April 2015 Approx. 15 minutes

Nadere informatie

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden?

[BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? [BP-ebMS-H-000] Welke versie van Hermes moet er gebruikt worden? Gebruik altijd de laatste versie omdat er serieuse bug-fixes in kunnen zitten. Check altijd de release notes en openstaande bugs. Er is

Nadere informatie

Comics FILE 4 COMICS BK 2

Comics FILE 4 COMICS BK 2 Comics FILE 4 COMICS BK 2 The funny characters in comic books or animation films can put smiles on people s faces all over the world. Wouldn t it be great to create your own funny character that will give

Nadere informatie

Intermax backup exclusion files

Intermax backup exclusion files Intermax backup exclusion files Document type: Referentienummer: Versienummer : Documentatie 1.0 Datum publicatie: Datum laatste wijziging: Auteur: 24-2-2011 24-2-2011 Anton van der Linden Onderwerp: Documentclassificatie:

Nadere informatie

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers

ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers ICARUS Illumina E653BK on Windows 8 (upgraded) how to install USB drivers English Instructions Windows 8 out-of-the-box supports the ICARUS Illumina (E653) e-reader. However, when users upgrade their Windows

Nadere informatie

Taco Schallenberg Acorel

Taco Schallenberg Acorel Taco Schallenberg Acorel Inhoudsopgave Introductie Kies een Platform Get to Know the Jargon Strategie Bedrijfsproces Concurrenten User Experience Marketing Over Acorel Introductie THE JARGON THE JARGON

Nadere informatie

INVLOED VAN CHRONISCHE PIJN OP ERVAREN SOCIALE STEUN. De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren

INVLOED VAN CHRONISCHE PIJN OP ERVAREN SOCIALE STEUN. De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren De Invloed van Chronische Pijn en de Modererende Invloed van Geslacht op de Ervaren Sociale Steun The Effect of Chronic Pain and the Moderating Effect of Gender on Perceived Social Support Studentnummer:

Nadere informatie

Next Generation Poultry Health Redt Innovatie de Vleeskuikenhouder?

Next Generation Poultry Health Redt Innovatie de Vleeskuikenhouder? Next Generation Poultry Health Redt Innovatie de Vleeskuikenhouder? Paul Louis Iske Professor Open Innovation & Business Venturing, Maastricht University De wereld wordt steeds complexer Dit vraagt om

Nadere informatie

Profile visitors NRC Q

Profile visitors NRC Q NRC Media presents About NRC Q A unique concept Business news platform for ambitious people on the go Short, sharp articles with professional infographics Daily newsletter at 5.30am News updates via WhatsApp

Nadere informatie

9 daagse Mindful-leSs 3 stappen plan training

9 daagse Mindful-leSs 3 stappen plan training 9 daagse Mindful-leSs 3 stappen plan training In 9 dagen jezelf volledig op de kaart zetten Je energie aangevuld en in staat om die batterij op peil te houden. Aan het eind heb jij Een goed gevoel in je

Nadere informatie

WWW.EMINENT-ONLINE.COM

WWW.EMINENT-ONLINE.COM WWW.EMINENT-OINE.COM HNDLEIDING USERS MNUL EM1016 HNDLEIDING EM1016 USB NR SERIEEL CONVERTER INHOUDSOPGVE: PGIN 1.0 Introductie.... 2 1.1 Functies en kenmerken.... 2 1.2 Inhoud van de verpakking.... 2

Nadere informatie

Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme

Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme Effecten van contactgericht spelen en leren op de ouder-kindrelatie bij autisme Effects of Contact-oriented Play and Learning in the Relationship between parent and child with autism Kristel Stes Studentnummer:

Nadere informatie

Grammatica uitleg voor de toets van Hoofdstuk 1

Grammatica uitleg voor de toets van Hoofdstuk 1 Grammatica uitleg voor de toets van Hoofdstuk 1 Vraagzinnen: Je kunt in het Engels vraagzinnen maken door vaak het werkwoord vooraan de zin te zetten. Bijv. She is nice. Bijv. I am late. Bijv. They are

Nadere informatie

Sekseverschillen in Huilfrequentie en Psychosociale Problemen. bij Schoolgaande Kinderen van 6 tot 10 jaar

Sekseverschillen in Huilfrequentie en Psychosociale Problemen. bij Schoolgaande Kinderen van 6 tot 10 jaar Sekseverschillen in Huilfrequentie en Psychosociale Problemen bij Schoolgaande Kinderen van 6 tot 10 jaar Gender Differences in Crying Frequency and Psychosocial Problems in Schoolgoing Children aged 6

Nadere informatie

Voorbeelden van machtigingsformulieren Nederlands Engels. Examples of authorisation forms (mandates) Dutch English. Juli 2012 Versie 2.

Voorbeelden van machtigingsformulieren Nederlands Engels. Examples of authorisation forms (mandates) Dutch English. Juli 2012 Versie 2. Voorbeelden van machtigingsformulieren Nederlands Engels Examples of authorisation forms (mandates) Dutch English Voorbeelden machtigingsformulieren standaard Europese incasso Examples of authorisation

Nadere informatie

Appendix I Experimental design

Appendix I Experimental design Appendix I Experimental design I. Experimental procedures The experiment consisted of 25 independent decision rounds. In each round, a subject was asked to allocate tokens between two accounts, labeled

Nadere informatie

liniled Cast Joint liniled Gietmof liniled Castjoint

liniled Cast Joint liniled Gietmof liniled Castjoint liniled Cast Joint liniled Gietmof liniled is een hoogwaardige, flexibele LED strip. Deze flexibiliteit zorgt voor een zeer brede toepasbaarheid. liniled kan zowel binnen als buiten in functionele en decoratieve

Nadere informatie

Gebruikershandleiding / User manual. Klappers bestellen in de webshop Ordering readers from the webshop

Gebruikershandleiding / User manual. Klappers bestellen in de webshop Ordering readers from the webshop Gebruikershandleiding / User manual Klappers bestellen in de webshop Ordering readers from the webshop Gebruikershandleiding klappers bestellen Voor het bestellen van klappers via de webshop moeten de

Nadere informatie

HANDLEIDING - ACTIEVE MOTORKRAAN

HANDLEIDING - ACTIEVE MOTORKRAAN M A N U A L HANDLEIDING - ACTIEVE MOTORKRAAN MANUAL - ACTIVE MOTOR VALVE Model E710877 E710878 E710856 E710972 E710973 www.tasseron.nl Inhoud / Content NEDERLANDS Hoofdstuk Pagina NL 1 ALGEMEEN 2 NL 1.1

Nadere informatie

Algorithms for Max-Flow

Algorithms for Max-Flow Algorithms for Max-Flow Consider a network with given upper bounds for the capacities of the arcs, and one entry and one exit node. The max-flow problem consists in finding a maximal flow through the network

Nadere informatie

Free Electives (15 ects)

Free Electives (15 ects) Free Electives (15 ects) Information about the Master RE&H (and the free electives) can be found at the following page: http://www.bk.tudelft.nl/en/about-faculty/departments/real-estate-and-housing/education/masterreh/free-electives/

Nadere informatie

Expertise seminar SURFfederatie and Identity Management

Expertise seminar SURFfederatie and Identity Management Expertise seminar SURFfederatie and Identity Management Project : GigaPort3 Project Year : 2010 Project Manager : Albert Hankel Author(s) : Eefje van der Harst Completion Date : 24-06-2010 Version : 1.0

Nadere informatie

The downside up? A study of factors associated with a successful course of treatment for adolescents in secure residential care

The downside up? A study of factors associated with a successful course of treatment for adolescents in secure residential care The downside up? A study of factors associated with a successful course of treatment for adolescents in secure residential care Annemiek T. Harder Studies presented in this thesis and the printing of this

Nadere informatie

Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter?

Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter? Question-Driven Sentence Fusion is a Well-Defined Task. But the Real Issue is: Does it matter? Emiel Krahmer, Erwin Marsi & Paul van Pelt Site visit, Tilburg, November 8, 2007 Plan 1. Introduction: A short

Nadere informatie

Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan.

Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan. Interactive Grammar Interactive Grammar leert de belangrijkste regels van de Engelste spelling en grammatica aan. Doelgroep Interactive Grammar Het programma is bedoeld voor leerlingen in de brugklas van

Nadere informatie

Maillijsten voor medewerkers van de Universiteit van Amsterdam

Maillijsten voor medewerkers van de Universiteit van Amsterdam See page 11 for Instruction in English Maillijsten voor medewerkers van de Universiteit van Amsterdam Iedereen met een UvAnetID kan maillijsten aanmaken bij list.uva.nl. Het gebruik van de lijsten van

Nadere informatie

Stichting NIOC en de NIOC kennisbank

Stichting NIOC en de NIOC kennisbank Stichting NIOC Stichting NIOC en de NIOC kennisbank Stichting NIOC (www.nioc.nl) stelt zich conform zijn statuten tot doel: het realiseren van congressen over informatica onderwijs en voorts al hetgeen

Nadere informatie

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp

PROJECT INFORMATION Building De Meerlanden Nieuweweg 65 in Hoofddorp BT Makelaars Aalsmeerderweg 606 Rozenburg Schiphol Postbus 3109 2130 KC Hoofddorp Telefoon 020-3 166 166 Fax 020-3 166 160 Email: info@btmakelaars.nl Website : www.btmakelaars.nl PROJECT INFORMATION Building

Nadere informatie

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd.

DBMS. DataBase Management System. Op dit moment gebruiken bijna alle DBMS'en het relationele model. Deze worden RDBMS'en genoemd. SQL Inleiding relationele databases DBMS DataBase Management System!hiërarchische databases.!netwerk databases.!relationele databases.!semantische databases.!object oriënted databases. Relationele databases

Nadere informatie

Power Quality aspecten van LED-lampen.

Power Quality aspecten van LED-lampen. Power Quality aspecten van LED-lampen. Hoe meet je die en wat betekent het voor de praktijk? Mark Vloemans AR Benelux Timothy Hertstein ZES ZIMMER Onderwerpen o Aanleiding o Wat is de Power Factor? o Hoe

Nadere informatie

UNIVERSITY OF CAMBRIDGE INTERNATIONAL EXAMINATIONS International General Certificate of Secondary Education

UNIVERSITY OF CAMBRIDGE INTERNATIONAL EXAMINATIONS International General Certificate of Secondary Education UNIVERSITY OF CAMBRIDGE INTERNATIONAL EXAMINATIONS International General Certificate of Secondary Education *0535502859* DUTCH 0515/03 Paper 3 Speaking Role Play Card One 1 March 30 April 2010 No Additional

Nadere informatie

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd.

SQL is opgebouwd rond een basisinstructie waaraan één of meerdere componenten worden toegevoegd. BASISINSTRUCTIES SQL SQL : Structured Query Language is een taal gericht op het ondervragen van een relationele database en die aan veel klassieke databasemanagementsystemen kan worden gekoppeld. SQL is

Nadere informatie

1. In welk deel van de wereld ligt Nederland? 2. Wat betekent Nederland?

1. In welk deel van de wereld ligt Nederland? 2. Wat betekent Nederland? First part of the Inburgering examination - the KNS-test Of course, the questions in this exam you will hear in Dutch and you have to answer in Dutch. Solutions and English version on last page 1. In welk

Nadere informatie

Interaction Design for the Semantic Web

Interaction Design for the Semantic Web Interaction Design for the Semantic Web Lynda Hardman http://www.cwi.nl/~lynda/courses/usi08/ CWI, Semantic Media Interfaces Presentation of Google results: text 2 1 Presentation of Google results: image

Nadere informatie

EU keurt nieuw Programma veiliger internet goed: 55 miljoen euro om het internet veiliger te maken voor kinderen

EU keurt nieuw Programma veiliger internet goed: 55 miljoen euro om het internet veiliger te maken voor kinderen IP/8/899 Brussel, 9 december 8 EU keurt nieuw Programma veiliger internet goed: miljoen euro om het internet veiliger te maken voor kinderen Vanaf januari 9 zal de EU een nieuw programma voor een veiliger

Nadere informatie

I.S.T.C. Intelligent Saving Temperature Controler

I.S.T.C. Intelligent Saving Temperature Controler MATEN & INFORMATIE I.S.T.C. Intelligent Saving Temperature Controler Deze unieke modulerende zender, als enige ter wereld, verlaagt het energieverbruik aanzienlijk. Het werkt in combinatie met de energy

Nadere informatie

Ik voel niets maar eigenlijk alles: Verbanden tussen Alexithymie, Somatisatiestoornis en Depressie. I feel nothing though in essence everything:

Ik voel niets maar eigenlijk alles: Verbanden tussen Alexithymie, Somatisatiestoornis en Depressie. I feel nothing though in essence everything: Ik voel niets maar eigenlijk alles: Verbanden tussen Alexithymie, Somatisatiestoornis en Depressie I feel nothing though in essence everything: Associations between Alexithymia, Somatisation and Depression

Nadere informatie

Cambridge International Examinations Cambridge International General Certificate of Secondary Education

Cambridge International Examinations Cambridge International General Certificate of Secondary Education Cambridge International Examinations Cambridge International General Certificate of Secondary Education DUTCH 0515/03 Paper 3 Speaking Role Play Card One For Examination from 2015 SPECIMEN ROLE PLAY Approx.

Nadere informatie

Ir. Herman Dijk Ministry of Transport, Public Works and Water Management

Ir. Herman Dijk Ministry of Transport, Public Works and Water Management Policy Aspects of Storm Surge Warning Systems Ir. Herman Dijk Ministry of Transport, Public Works and Water Contents Water in the Netherlands What kind of information and models do we need? Flood System

Nadere informatie

Beste ouder / verzorger, Welkom bij Mijnschoolinfo, het communicatie platform voor basisonderwijs.

Beste ouder / verzorger, Welkom bij Mijnschoolinfo, het communicatie platform voor basisonderwijs. Handleiding Registratie Mijnschoolinfo en App Nederlandstalig pagina 1-7 Registration Procedure Mijnschoolinfo and App English version see page : 8-16 Beste ouder / verzorger, Welkom bij Mijnschoolinfo,

Nadere informatie

Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch

Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch Knelpunten in Zelfstandig Leren: Zelfregulerend leren, Stress en Uitstelgedrag bij HRM- Studenten van Avans Hogeschool s-hertogenbosch Bottlenecks in Independent Learning: Self-Regulated Learning, Stress

Nadere informatie

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2

Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 167 Appendix A: List of variables with corresponding questionnaire items (in English) used in chapter 2 Task clarity 1. I understand exactly what the task is 2. I understand exactly what is required of

Nadere informatie

ECHTE MANNEN ETEN GEEN KAAS PDF

ECHTE MANNEN ETEN GEEN KAAS PDF ECHTE MANNEN ETEN GEEN KAAS PDF ==> Download: ECHTE MANNEN ETEN GEEN KAAS PDF ECHTE MANNEN ETEN GEEN KAAS PDF - Are you searching for Echte Mannen Eten Geen Kaas Books? Now, you will be happy that at this

Nadere informatie

Examenreglement Opleidingen/ Examination Regulations

Examenreglement Opleidingen/ Examination Regulations Examenreglement Opleidingen/ Examination Regulations Wilde Wijze Vrouw, Klara Adalena August 2015 For English translation of our Examination rules, please scroll down. Please note that the Dutch version

Nadere informatie

De relatie tussen depressie- en angstsymptomen, diabetesdistress, diabetesregulatie en. proactieve copingvaardigheden bij type 2 diabetespatiënten

De relatie tussen depressie- en angstsymptomen, diabetesdistress, diabetesregulatie en. proactieve copingvaardigheden bij type 2 diabetespatiënten De relatie tussen depressie- en angstsymptomen, diabetesdistress, diabetesregulatie en proactieve copingvaardigheden bij type 2 diabetespatiënten The relationship between depression symptoms, anxiety symptoms,

Nadere informatie

NEDERLANDS. Display Instructies. Knoppen. Geeft afwisselend Tijd, Datum en Temperatuur weer, kan ook ingesteld worden op enkel tijd

NEDERLANDS. Display Instructies. Knoppen. Geeft afwisselend Tijd, Datum en Temperatuur weer, kan ook ingesteld worden op enkel tijd NEDERLANDS Het ziet eruit als een simpel blokje hout, maar maak een geluid (knip met je vingers, kuch, klap in je handen, of tip op de bovenkant) en het geeft onmiddelijk en afwisselend tijd, datum en

Nadere informatie