@sctlib/piano
v0.0.3
Published
a web component for displaying a piano keys layout, and optional interactivity
Downloads
2
Readme
piano Documents of introduction to self teaching piano with repetitive exercises.
notes Ressources to find information on the content of this app.
- https://en.wikipedia.org/wiki/Musical_note
- https://en.wikipedia.org/wiki/Musical_keyboard
- Development
To develop locally on the project:
- if you don't have already, install [[https://www.gnu.org/software/emacs/][emacs]] and [[https://www.gnu.org/software/make/][make]] (see if =make -h= outputs)
- clone this repository
- open 2 shells: =make watch= (to watch for changes, rebuild, and serve the result locally)
To build a =public= folder ready for production deployment
- =make build= will output a =./public= folder
- see the =./gitlab-ci.yml='s =pages= scrip for deployment steps
Additionnaly, the is a =package.json= file, and scripts, which command the =makefile= targets (scripts). They are the same and are here for convenience since we are deploying the javascript as a npm module
- tests
The testing library [[https://github.com/avajs/ava][ava]] is used, on the =tests/**/*= directories, defined in the =package.json.ava= key.
=npm install=
=npm run test=
See: https://github.com/avajs/ava/blob/main/docs/01-writing-tests.md
** Project folder/file structure:
- =/readme.org= (this document); as in every projects, a place of introduction, to learn what this project is about, how it works, how to contribute etc.
- =/index.org=, a text file with all the introduction of the project, and the table of content.
- =/content/*=, all text content, pages and examples for this project
- =/.gitlab-ci.yml=, a config file, used to define what commands should be called to make a website from this project's content
- =/emacs.el=, the config file for [[https://gitlab.com/sctlib/emacs-ssg][emacs-ssg]], the static-site-generator used to make a website out of this project's content
- =/styles.css= a config file to style the generated website
- =/.gitignore=, a file to specify which folder/files should never appear in this project (used automatically by git)
** Tips for when using this project in =emacs=
This project can also be openned with [[https://www.gnu.org/software/emacs/][emacs]]. When the file =index.org= is oppenned, it gives access to the following shortcuts.
- select export format =C-c C-e= (txt, html etc.)
- export to =.txt=: =C-c C-e t A=
- export to =.pdf=: Firefox's "print" page feature ("save file to pdf")
- Licenses
** dependencies
Inside the =libs= folder
- https://github.com/keithwhor/audiosynth/blob/master/audiosynth.js
- https://github.com/keithwhor/audiosynth
** codes
The rest of the code and content are GPLv3.
- FAQ
Some questions answered.
** computer keyboard not handling many simultaneous keys/notes
Keyboard jamming/ghosting is a limitiation of some physical computer keyboards, that limit [[https://en.wikipedia.org/wiki/Key_rollover][key rollover]], when multiple keys are pressed at the same time; double test your computer's keyboard(s) with the [[https://www.microsoft.com/applied-sciences/projects/anti-ghosting-demo][microsoft anti-ghosting-demo]] project.