Spil og find!

med samme sind

Tilbagae til tonesøgning | Den simple vejledning | Fodnoter

Kort beskrivelse af, hvordan systemet virker set "indefra"

  1. Tonerne findes med FFT
    1. Du kan se det lille FFT spektrum øverst til højre
    2. Vi passer tonerne ind i 12 tone-klasser fra (C,C#,D,Eb,E,F,F#,G,G#,A, Bb,H)
      1. Tonerne bliver numreret fra 0 ( tonen C) til 9 (tonen A) , tonen Bb hedder a, og tonnen H heder b. i dette system
      2. det vil sige vi bruger Hexadecimale tal fra 0 til b, for at karrekterisere tonerne ,
      3. vi bruger også tallet hex c, for at numrere fejl-toner.
    3. Vi leder efter overtoner i alle oktaver fra G-strengen på en violin (196 Hz) op til 15 kHz (H9)
    4. Vi søger i et interval af 45 cent omkring den tempereret rene tone,
      1. det vil sige man kan spille ganske falsk før man ikke bliver opdaget.
  2. Gentagne toner bliver betragtet som en tone
    1. Det vil sige systemet detekterer kun når tonehøjden (den, der målses med FFT-spektraet) har ændret sig.
    2. Den søge streng vi leder efter har vi skabt efter midi-filerne, men vi har modificeret den, sådan at systemet ikke skal
      prøve at finde begyndelsen af to ens toner i rækkefølge
    3. Toner kortere end 70 millisekunder svarende til trille-toner, bliver ikke talt med.
    4. Vi leder kun i første stemmen.
  3. Når vi har fundet 7 forskellige toner begynder vi at lede på disse toner i en tabel hvor alle spillefolk.dk's melodier er med skrevet ned med de koder
    1. Det vil sige systemet leder ikke i en database, men i en json fil.
      1. Det tager kun 1 ms at lede filen igennem,
      2. Det sker lokalt på din IPad, eller computer.
      3. og vi skal ikke vente på at beskeden bliver sendt frem og tilbage over nettet for at få fat i databasen
    2. json-filen er lavet ud fra midifilerne, hvor alle toner er registreret
  4. Vi tæller antal af gange en speciel bogstavs(/tal) kombination er fundet.
  5. Når en melodi kommer over scoreLimit-grænsen vil den blive betragtet som fundet.
    1. Vi kan selv sætte scoreLimit grænsen i URL'en.
    2. Her er den sat til 50 https://spillefolk.dk/tfjs/01_nodesoeg/Markow/?scoreLimit=50
  6. Vi har valgt at lede efter 7 toner ad gangen, vi laver en ny søgning hver gang vi har fået 3 ny noder.
  7. Når en melodi er fundet vil den blive lagt ind i en liste, der findes på alle andre, der viser noder på spillefolk.dk
  8. Hvis man er logget ind vil man optræde med fornavn på listen
    1. Det man har fundet vil kun være tilgængeligt på listen 1 time efter man har fundet melodien.

 

 

 

(husk at klikke på linkene, denne side er ustyret med et rigt fodnotesystem)

En lidt dybere beskrivelse af hvordan det virker

Hvis der er noget du ikke rigtig forstår, så spring det over

 

Du kan afspille en melodi (for at overbevise dig om at det virker. )

brugerinterfacet

Da programmet stadig er under udvikling, viser brugerinterfacet lidt af, hvordan programmet arbejder, sådan at man som udvikler kan følge med i hvad der sker, men også for at vise den almindelige bruger hvad der sker.
Spektrum analyse er jo ret smuk, da den viser lyden på en mere forståelig måde. Ved at vise frekvenserne i tonen og dess overtoner.

Øverst til højre er spektrum-analysen af den lyd der spilles enten fra en mp3-fil (afspil) eller gennem mikrofonen.
Herunder de 7 sidste noder i en kode fra 0 - 11 beskrevet herunder (10=a og 11=b)

Her under koden på den der melodi der spilles og til sidst en liste af koder på alle de melodier, der er fundet i processen ordnet efter hvor mange gange melodien er fundet.
Når en melodie er over grænsen (her sat til 50) bliver den betragtet som fundet. Noden viser den melodi, som til enhver tid står øverst på listen.
.

Den lange række af informationer længst ned er debug informationer der er gode nu i testfasen.

 

 

 

 

Nej dette er ikke baseret på ML/AI

Jeg har i de sidste år fablet om, at jeg ville lave et Machine Learning Artificial Intelligence baseret system, der kunne lytte på musikken og finde den rigtige node i folkets hus nodesamling.
Dette er første forsøg, der er lavet uden ML/AI . En kollega på mit arbejde Caper Nielsen, er specialist i Machine Learning, fortalte mig, at man skal starte så enkelt som muligt, og helst undgå Machine Learning hvis man kan.
"Markow-modeller bruger meget mindre ressourcer" og er nemmere at lave. Jeg forstod ikke hvad Markow moddeller var for noget, men det fik jeg så forklaret: Markow var en russisk matematiker på 1800-talet, som kom med store bidrag til sandynlighedsregningen.

Man kan sige at programmet består af disse dele.

  1. Først finder man tonerne
  2. Når man så har fundet et antal (i øjeblikket 7) toner, finder man alle melodier som indeholder den tonefølge man lige har fundet
  3. Meldiernes nøgler bliver smidt i en række, som bliver sorteret efter hvilken melodi der er fundet flest gange

Følg links'ene hvis du vil have den nørdede og lange forklaring.

 

Hvad er det, der går galt, når man søger og ikke finder noden

Vi ved det ikke 100%, det er det vil vil undersøge i løbet af de næste par måneder.

Her er nogle af grundene

 

Hvad er FFT

Det er den lille sorte graf ude til højre hvor man kan se tonerne af det man spiller.

Baron Joseph Fourier fandt i starten af 1800-talet en matematisk formel som kan lave frekvens analyse. Dette kan så bruges til at finde toner (og overtoner) ud af lydbølger.
Det kalder man Fourier Analyse.
FFT er en hurtigere beregning, som blev opfundet i starten af 1960-erne
(Læs mere historien i fonoterne)

FFT spektrum

Spektraet er på kun 512 linjer fra 50Hz - 24.000 Hz Det vil sige en opløsning på 50 Herts per linie.

Grunden til at vi bruger så få linier, er at så bliver analysen hurtigere og bruger mindre tid, det vil sige der kommer mindre overlap fra en tone til den næste.

Vi kan så bruge et dette trick til at bestæmme frekvensen for hvert peak.

 

Kan man bruge appliktionen når orkesteret spiller

Lad os være realistisk, svaret er NEJ!!
(Du kan selv verifiere det med at vælge nogle af inspilningerne fra vores Træf-CD-er i dropdownen.

Man kan bruge den når man søger efter en melodi hvor man spiller med en enkelt violin. Man behøver ikke holde takten.Og man kan formenlig spille ret hurtigt,uden at det gør noget.

Man bliver ofte nødt til at spille længe, før man kommer til det sted hvor melodien er speciel.

Måske kan man bruge en mikrofon tættere på sit instrument, og dermed forøge chancerne.

Her er en Plantronics PLT, som jeg købte til formålet for et par år siden, Den blvier testet i weekenden.

 

Hvem ved måske virker det?
Den lå i en meget praktisk dåse spændt fast, den har jeg så klippet ud så den passer på en skulderstøtte, sat fast med dobbeltklæbende tape.

Meningen er så at man kobler den via Bluetooth til Ipad en som så står og finder melodier. I øjeblikket skal man så klikke på den rigtige melodi når den er funden, og de andre IPad'er på det samme WIFI net får et link ved siden af eller under noden, sådan som systemet har virket et par år.

Det er der muligere, at jeg med tiden laver noget smartet, sådan at linket kommer op med det samme når det er fundet, men .... den tid den glæde.

Man kan teste, hvordan det vil virke når hele orkesteret spiller ved at vælge andre melodier.
Feks. melodier fra vores træf. Melodierne bliver spillet i tilfældig rækkefølge, og playeren bliver ved med at spille forskellige melodier, du kan ikke vælge hvilken melodi, der bliver spillet, kun typen af melodier.

vælg

Her har knapperne fået farver, jeg gider ikke at lave billederne om, mens jeg laver småændringer af brudgerinterfacet.
På en IPad ligger listen af maelodi-mapper ud til venstre. Du kan kun ændre melodi før du går i gang. Tryk på genopfrisk når du vælger melodi.

Reset søgning

Når du bruger mikrofon, kan du trykke på reset søgning hvis du undervejs finder ud af at du vil spille en anden melodi. Jeg vil prøve at gøre reset søgning automatisk sådan at hvis der ikke kommer musik i en tidsperiode, så resættes automatisk.

Man kan også trykke "Reset søgning" under en afsilning. Stop knappen stopper afspilningen og spektraet (Der er dog ikke nogen startknap, her må man trykke på Genopfrisk - indtil jeg får tid til at lave en startknap.)

 

Fremtidige projekter

Dem er der meget af.

Historie

Jeg startede dette proejekt for et par år siden. Lavede et par ikke fungerende prototyper f.eks dette spektrogram | og denne nodesøgning (som slet ikke virker)

Jeg har så fokuseret på at lære at spille violin så meget at jeg har fået tennisarm, hvilket har gjort at jeg har måttet sidde ved computeren de sidste par måneder.

Jeg har været meget optaget af Machine Learning (ML) - altså en form for AI (Artificiel Inteleigence)
Men fik det råd af en specialist i emnet at starte med "Markov modeller". Jeg har i mit arbejde med sikkerheds standarder flere gange stødt på begrebet.

Det fik mig til at lave denne første generation.

Planer

Målet er stadig, at bruge en form for mønstergenkendelse, sådan at "Spil og find" kan bruges når hele orkesteret spiller.
Det er forholdsvis nemt, at lave et expertsystem, det der er svært er at også få det at virke. Hvis du er mere interesseret i teknikken foreslår jeg at du ser disse videoer (kun 7 timers video)

Hvis du kun er interesseret i matematikken så se denne forklaring af hvad er en tensor.

En vandrende prik i noden

Lone kom med et forslag, som egentlig er ret interessant: Kunne man få Prikken til at vandre i noden. Se en demo her

Det nemmeste er selvfølgelig at downloade Musescore filen, og afspille denne i Musescore som kan downloades og installere.

Der er selvfølglig en del udfordringer i at lave det på hjemmesiden se diskussionen her.

 

Andenstemme projeketet

Jeg lavede andenstemme projektet som en eksamen på et webkursus fra Pompeu Fabra Universitetet i Barcelona

Hvis du er interesseret af at spille rene (ikke tempererde) anden stemmer, så prøv at lytte på dette | Klik på de små billeder

Det er så første stemmen jeg bruger, i denne applikation fordi violinen laver en meget tydelig tone med mange overtoner..
(Det hele er lavet ud fra en enkelt tone fra min violin - lyder måse ikke så smukt, men når man ved hvad det kan bruges til, så kan man godt vænne sig til tonen. Formentlig skyldes den mindre smukke tone, at kursusmaterialet generer tilfældige fase-informationer under transformationen. Her ligger der så en fremtidig udfordring for dem der gider og forstår.

Dybere (og lidt rodet)udviklings beskrivelse af andenstemme projetet