Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Honours project: Interim presentation Music pattern recognition and generating new compositions using the Haskore Computer Music System Semester 1, 2003 Amanda Crawford – Comp. Sci. Honours Email: [email protected] Supervisors: Lloyd Allison, Jon McCormack Overview • • • • • • • • Introduction Relevant music theory MIDI music Previous research Research methods - Lempel-Ziv, Haskore Progress so far Summary References/further information Slide 2 Introduction • Repeating patterns and structure in music • Extracting the melody • Compare different aspects of music • Generation of new music from particular genre • MIDI music used Slide 3 Relevant music theory • Notes divided into bars • Accent on starting beat • Time signature Slide 4 Music theory example Slide 5 MIDI music • Musical Instrument Digital Interface • Computer music • Instrument communication • Note on/off, key velocity, pitch bend, etc • General MIDI instruments • Tracks and channels Slide 6 Example of MIDI music data Slide 7 Previous research • Shan, Kuo, Chen (2002). Music style mining and classification by melody. • Mo, Han, Kim (1999). Melody-based similarity computation algorithm for music information. • Shih, Narayanan, Kuo (2001). Automatic main melody extraction with a modified Lempel-Ziv algorithm. Slide 8 Research methods • Extend on models from previous research – Lempel-Ziv algorithm • Functions for analysis of MIDI data • Functions for generating new music • Haskore Computer Music System Slide 9 Lempel-Ziv alg. diagram Slide 10 LZ modified diagram Slide 11 Haskore • Haskore Computer Music System • Paul Hudak - Yale Uni. • Modules in Haskell • Hugs interpreter • Music rather than sound • MIDI file input/output Slide 12 Haskore (cont…) • More information - Haskore website http://haskell.cs.yale.edu/haskore/ Slide 13 Example of Haskore module HaskoreExamples_mine (module HaskoreExamples_mine, module Haskore, module IO) where import Haskore import IO -- octave 4, quarter notes cMaj = [ n 4 qn [] | n <- [c,e,g] ] cMajArp = line cMaj cMajChd = chord cMaj Slide 14 Progress so far • My own MIDI files • Haskore code • Extract features from MIDI • Extracted time signature • MIDI file into bars Slide 15 Example of work so far gm file = do x <- loadMidiFile file let m = removeEOTs $ format x let t = removeMidiEventsNO m print t removeMidiEventsNO :: Track -> Track removeMidiEventsNO ((MidiEvent _ (NoteOff _ _ _)):es) = removeMidiEventsNO es removeMidiEventsNO ((MidiEvent _ (NoteOn _ _ _)):es) = removeMidiEventsNO es removeMidiEventsNO (e:es) = e:(removeMidiEventsNO es) removeMidiEventsNO [] = [] Slide 16 Progress so far - still to come • Generating new compositions – random notes – harmonic relations – key signature • Guitar chord positions Slide 17 Summary • Discovering patterns and structure, generating new music • Lempel-Ziv algorithm • Haskore Computer Music System • Haskore + MIDI information • Functions to extract certain aspects of MIDI data Slide 18 References/further information • Haskore Music Tutorial – Hudak – http://haskell.cs.yale.edu/haskore/ • Computer Music Journal – MIT Press – http://mitpress2.mit.edu/e-journals/ComputerMusic-Journal/ • Introduction to MIDI – http://hotwired.lycos.com/webmonkey/geektalk /97/21/index4a.html Slide 19 Questions? Slide 20