GithubHelp home page GithubHelp logo

thatrobvk / pianotrainer Goto Github PK

View Code? Open in Web Editor NEW
2.0 0.0 1.0 3.28 MB

Practice sight reading sheet music using a MIDI keyboard with this .NET app.

License: GNU General Public License v3.0

C# 100.00%

pianotrainer's Introduction

pianotrainer

What is it?

This app helps you practice sheet music sight reading by prompting you for a note across a set of treble and bass staves. It listens to input from any standard MIDI device, showing you which notes you are playing and comparing them against the prompted note. Any incorrect notes are shown in red. When the correct note, and only the correct note, is played, a new note is selected at random and prompted. This allows for continuous practice. Currently the app picks any note in the range B1 to D6, including flats and sharps.

How to use it

It's still in a very rough and ready state, so you will need to run this from Visual Studio 2017. Plug in and switch on your MIDI device before starting the application. The library used loads standard MIDI devices from Windows so ensure it is installed and working. Start the application, select your MIDI device in the drop down and click Start game. The game will continue to prompt for notes until you close it.

The interface is a bit...

This is only a one-day hack that I've been meaning to do for months. I have not spent any time on the interface beyond putting the controls on that are required to make it work. As I expand the app I'll tidy up the UI and make it look a bit less... bad.

And the code...

It's a spike, true and simple. I have mainly focused on getting something functional. I haven't applied any architectural or design patterns per se. I did have in mind ways I would like to extend it in future so where it wasn't going to add a lot of effort I have built this in an extensible way. As I figure out how I want to extend this further, over time I will evolve this to have a stronger architecture and include all the standard good practices like unit tests etc.

The future

I have a number of ideas of things I'd like this to do in the future:

  • Select a hand for one-handed practice
  • Multiple notes, chords
  • Simultaneous two-handed practice
  • Different keys
  • Generate random practice songs within a given key
  • Dynamics training (ppp - fff)

pianotrainer's People

Contributors

thatrobvk avatar

Stargazers

Djamal avatar Anndream avatar

Forkers

anndream

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.