150 likes | 285 Views
Piano Chord Builder. Artem Kuligin CS 470. IDEA - Create easy accessible application to build, learn and play modern piano chords. - To play chords on available music instrument via MIDI interface. - To learn fast, new chords and custom built chords. System Overview.
E N D
Piano Chord Builder Artem Kuligin CS 470
IDEA - Create easy accessible application to build, learn and play modern piano chords. - To play chords on available music instrument via MIDI interface. - To learn fast, new chords and custom built chords. System Overview
General Piano Chords • A chord in music is any set of harmonically-related notes that is heard as if sounding simultaneously - ”harmonically” • All chords are formed by combining certain scale tones according to definitive rule (“Circle of Fifths”) Data Input • Chord Source • Internal application database – most of the chords are being hardcoded. • User file input chords, saved or loaded by user • MIDI input chords from external devices
Data output • Visual. • a) String formula on the screen • b) Graphical presentation on the Circle of Fifths • Audio MIDI. • a) Computer internal sound card - built-in MIDI device • b) ASIO software DSP sound emulator • External General MIDI device - Digital Piano, Keyboard.
User interface • .
Input Data Input Data – Format • Piano Chords • Chord presentation is much the same as industry standard general piano chord. All chords are presented in relative English alphabet letter format. • Ex: C Major - C,E,G. • Same for graphical presentation. All section of Circle of Fifths are marked with note letter label. • Ex: C, C#, A, Ab
Presenting chord data on virtual keyboard • C - Major C D E F G A B
Presenting chord data on the Circle of Fifths • C - Major Note Sequence: C, E, G
Implementation • Chord Data – XML File • System Design: • a) Internal MIDI Engine to generate MIDI messages to audio device • b) Multithreading engine to process music notes in a right order • - Data structures: Hash table, Priority queue. • c) Time based sequencer to play notes in “Legato” style
Environment • C# - Visual studio 2005 • Microsoft Windows API • a) To connect to MIDI input/output devices
System Architecture General Midi output class diagram
Encountered Problems • Lots of theory to cover prior beginning of implementation • MIDI message scheduling. • “General MIDI” Standard. • Communication library for output to external devices • Vista/Win7 – reduced MIDI hardware support.
Schedule WEEK. 1-6: Research. General idea development. Requirements and Input data generalization. Documentation. 6-7: XML Engine implementation. Hardware research. 8-9: UI. Final Specification Review. 10-12: Hardware testing. 13-14: Documentation. Final Debugging. 15: Demonstration
Conclusion • Goal • To deliver a good product that will help beginning piano players to learn and use musical construction rules • To have a good foundation for further development (Portable Devices, Embedded Software and etc…) • To get a good practical skills, while working with musical hardware and software communication