Title: Musical Feature Detection
1Musical Feature Detection
(work in progress)
2Musical Feature Detection
- Introduction
- Architecture
- Extraction
- Query facilities
- Validation case study
- Open problems
- Conclusions
3Introduction
gathering
query
description
extraction
similarity
4Out there on the Web
- Aria Database title, category, voice part
- Midi Files on the Farm per genre
- Meta Searches AltaVista, Infoseek
- Lyrics search .
Keywords and categories
Btw. Why MIDI?
- Informix Musclefish Datablade - Meldex
www.nzdl.www
content
5Architecture
6Extraction - the anatomy of a midi file
7 detector song
to get the filename detector
lyrics
extracts lyrics detector melody
extracts
melody atom str name atom str text
atom str note midi song song file
lyrics melody file name lyrics
text melody note
Feature grammar
8 int melodyDetector(tree pt, list tks )
char buf1024 char _result void q
_query int idq 0 idq
query_eval(q,"Xmelody(X)") while ((_result
query_result(q,idq)) )
printf("note \s\n",_result)
putAtom(tks,"note",_result)
return SUCCESS
Melody detector
embedded logic
9V1 newoid() midi_song.insert(oid(V0),oid(V
1)) V2 newoid() song_file.insert(oid(
V1),oid(V2)) file_name.insert(oid(V2),"ko
rtjakje") song_lyrics.insert(oid(V1),oid(V2
)) lyrics_text.insert(oid(V2),"e")
lyrics_text.insert(oid(V2),"per-")
lyrics_text.insert(oid(V2),"sonne")
lyrics_text.insert(oid(V2),"Moi")
lyrics_text.insert(oid(V2),"je")
lyrics_text.insert(oid(V2),"dis")
lyrics_text.insert(oid(V2),"que")
lyrics_text.insert(oid(V2),"les")
lyrics_text.insert(oid(V2),"bon-")
lyrics_text.insert(oid(V2),"bons")
lyrics_text.insert(oid(V2),"Val-")
lyrics_text.insert(oid(V2),"ent")
song_melody.insert(oid(V1),oid(V2))
melody_note.insert(oid(V2),"a-2")
melody_note.insert(oid(V2),"a-2")
melody_note.insert(oid(V2),"g-2")
melody_note.insert(oid(V2),"g-2")
melody_note.insert(oid(V2),"f-2")
melody_note.insert(oid(V2),"f-2")
melody_note.insert(oid(V2),"e-2")
melody_note.insert(oid(V2),"e-2")
melody_note.insert(oid(V2),"d-2")
melody_note.insert(oid(V2),"d-2")
melody_note.insert(oid(V2),"e-2")
melody_note.insert(oid(V2),"c-2")
Monet updates
Kortjakje.mid
10extraction
11Query
voice
12Case study
Kortjakje
13Representation
Song kortjakje
Composer Who cares.
Melody c c g g a a g g f f e e d d c
Score
14Kortjakje variations Mozart
XII variations
15melody transcription
Meldex
melody retrieval from tunes
16Meldex
Hum that Tune
capture transcribe retrieval
Exact match
Approx match
www.nzdl.org
dynamic programming
17No of notes rel. to size and alg.
Search times, fixed database size
18Conclusions