Giter Club home page Giter Club logo

musictime's Introduction

Music Time

This will eventually be a SPA for practicing music scales.

musictime's People

Contributors

sbuffkin avatar

Watchers

 avatar  avatar

musictime's Issues

UI design, especially for the bar

The bar is probably generated bespoke for the given timing, for 4/4 it'd be four measures of four beats.

Each of these given beats is a drop down (or just input checked against the generic-checker), data-bound to an array in the program.
Each given beat can either be blank or anything in the range of the generics, with each given beat having no bearing on what anything else is. The whole thing can be full of the same note or completely empty.

Once 'start practice' is hit the program will begin generating the scales. It will pick a note randomly from a given set (perhaps allowing the user to pick the first note). The draw pool will be selected by the user from a set of keys. After a set number of iterations for each given scale another key will be selected and a new scale will be generated, shown shortly before the old one fades.

consistent timing for beats

There are several libraries for this sort of thing, main thing is checking to make sure they actually work properly

From generic to chords

The way that you go from the generic form to the chord is by checking the number given in the generic and what it corresponds to in the key that was chosen.

For the purposes of translating the generic to the chord, these are the rules:

1.) The roman numeral given corresponds to that scale degree - ie, the third note of C is E, so a III would become E. If there is a # or b before the roman numeral, you can keep it.*

*If the chord you generate with this is Fb, change it to E. If it's Cb, change it to B. If it's E#, change it to F. If it's B#, change it to C.

2.) If the roman numeral is lowercase and neither "m" or "dim" follows it, then immediately following the note you got from the generic should be a lowercase m. If "m" is following it, then you don't need to add another m.

3.) If there are any additional things added to the generic, they are copied directly to the chord form.

4.) If you see an "ma" after an uppercase roman numeral without any number following it, ignore it. If you see an "m", ignore it.

5.) If you see an "ma" following a lowercase roman numeral, if there is no 7 after the ma, that chord is invalid. If there is a 7, then include the include the "ma" with a "/" before it. ie: iima7 -> Dm/ma7

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.