ArtemPresentation.potx - University of Alaska System

Download Report

Transcript ArtemPresentation.potx - University of Alaska System

Piano Chord Builder
Artem Kuligin
CS 470
System Overview
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.
Data Input
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”)
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
c) External General MIDI device - Digital Piano,
Keyboard.
User interface
.
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