Giter Club home page Giter Club logo

sforzando's Introduction

sforzando

Project setup

npm install

Compiles and hot-reloads for development

npm run serve

Compiles and minifies for production

npm run build

Run your tests

npm run test

Lints and fixes files

npm run lint

Customize configuration

See Configuration Reference.

sforzando's People

Contributors

dependabot-preview[bot] avatar martijnmichel avatar sustained avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

sforzando's Issues

Assessing the competition

Competing apps/tools

Overview

  • Teoria
    • Tutorials
      • Unfortunately they are not interactive like they could be - lot of room for improvement.
      • But we can certainly take some ideas from here.
    • Exercises
      • The exercises on the other hand are interactive.
      • They even support MIDI keyboard input!
      • But a lot of them seem really... I don't know, too textual/not visual enough?
      • And the UI is a bit clunky for interacting with many of these exercises, IMO.
  • MusicTheory
    • Lessons
      • Here the lessons are interactive and it's wonderful. Really well done.
      • Definitely a good place to take inspiration from.
    • Exercises
  • DaveConservatoire
    • Lessons / Videos
      • Again, we can at the very least take ideas/inspiration for teaching material from here.
    • Exercises
      • Supposedly it has interactive exercises but I can't find them for the life of me.

In-depth analysis

Teoria

Pros

Cons

MusicTheory

Pros

Cons

DaveConservatoire

Pros

Cons

Play note(s) on user input

as seen here: https://dev.to/sustained/comment/f650

A nice and useful feature would be the support of user inputs to play sounds.

Considered inputs are:

  • MIDI piano
  • computer keyboard
  • the UI keyboard (clicking on the visual keys)

My 2 cents on the computer keyboard: A really good feature that is yet to be found on any web-based virtual piano is the ability to configure key mapping: each keyboard is different, in size, shape and layout. Some default mapping for qwertys is good, customizable mapping is great.

Default to a synth + optional initial load of piano samples.

Right now the app loads 12MB of piano samples immediately, firing off more than 70 HTTP requests!

We should probably default to a basic synthesized sound.

In addition to the option of being able to switch between sounds/instruments via the UI, though, we should also allow you to specify to "load piano samples by default".

Responsive CSS

Needs more responsiveness.. one tiny change is to have
.keyboard { width: 100% } instead of 100vw

Figure out how to handle < A0 and > C8.

After this commit the note/octave offset-related stuff works really well for most cases but there are still a few things to think about and fix, mostly relating to < A0 and > C8.

I mean, as much as 88 keys makes sense, there exist now 108-key grand pianos, so we should probably only special-case anything outside of the range C0 - B8.

Relevant code here, here, here, here and here.

Vue.observable > DOM manipulation.

Per the discussion with Benoit we should try to put the active note into an object wrapped by Vue.observable and to get rid of the icky DOM manipulation.

But before this we should experiment with Tone events and the scheduler more, in general, as well as MIDI because we need to know how best to represent our musical data first.

Piano changes to facilitate training of scales, intervals, building chords etc.

Per discussion on Discord:

Todo

  • Allow toggling display of note names entirely.
  • Show proper accidentals depending on key/scale.
  • A mode to only show the note names for notes within the passed:
    • scale
    • chord
    • interval
  • A way to toggle the display of the notes names for the passed scale/chord/interval (for the training modes - i.e. only show after answer).

There are probably more things but this is all I can think of for now.

Piano styling improvements

We should work on the piano styling:

  • Make the keys "pop" (:frowning:) - a more 3D look.
    • With creative use of borders, drop shadows etc. a good look is surely possible.
  • Make the keys actually look pressed when they are active and depressed when not.

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.