Coder Social home page Coder Social logo

midifind's Introduction

#MiDiFind MidiFind is an application built by Joe Crozier, Vicky Bilbily, and Tyler Post for Software Engineering 2XB3: Binding Theory to Practice.

MidiFind is a melody recognition tool designed to allow a user to input a melody and identify the track's name and artist. With a comination of various searching and sorting algorithms, Midi Tracks, and musical interpretation, MidiFind can match a song to a musical contour inputted by the user.

###What is a contour? A musical contour is a means of simplifying the melody of a song by expressing each note as a comparison to the previous note, stating whether the note is above, below, or the same as the previous note.

alt text

The contour here can be read as RUDUDDRUDUD. For simplicity, a lower note will be entered using the (A) key, a repeated note using (S), and a higher note by using (D). This three character string will be matched against a database of contours created by MidiFind and any matching songs will be displayed.

###How do I run MidiFind? In order to avoid installing external libraries and dependencies, an executable can be found in the MidiFind exe folder. Launch GUI.exe to get started! Some example contours that can be found in the database include rrurdrdurrdurr or dsaadsaaasddaddd.


###Information MidiFind was created with Python. Pygame and Mido were two external libraries used for this application. MidiFind constructs a database of contours using the mido library to parse information about each note, which is searched upon run-time. Various algorithms implemented included

  • Knuth-Morris-Pratt string search
  • QuickSort
  • 3-way partitioned QuickSort

It should be noted if any midi tracks are found under MidiFind/Midi Files/* they will play if a positive match has been found. Due to size constraints, all but two tracks have been left out of the application.

midifind's People

Contributors

tylerpost avatar bickybee avatar joenot443 avatar

Watchers

James Cloos avatar melodyless avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.