tvl-depot/users/wpcarro/website/sandbox/learnpianochords
sterni 11f9306b9a chore(3p/sources): Bump channels & overlays
Use nixos-unstable-small which fixes CVE-2018-25032
(out of bounds write while compressing).

* //users/grfn/xanthous:

  - Supporting random-fu 0.3 requires considerable changes and patching
    random-extras (https://github.com/aristidb/random-extras/pull/5).

    For now we downgrade random-fu and its dependency rvar to 0.2.*,
    forcing us to build xanthous with GHC 8.10.7, due to random-fu 0.2.*
    not supporting that version.

    Nix expressions for the downgraded packages are checked in to avoid
    the potential need to compile Haskell at pipeline eval time.

  - generic-arbitrary exposes a GenericArbitrary newtype now.
    This means we no longer have to implement it in xanthous
    downstream and patch generic-arbitrary to expose the
    GArbitrary type class.

  - Minor adjustments for lens 5.0:

    Xanthous.Game.Memo: clear needs to use ASetter' instead of Lens'

    Xanthous.Data.EntityMap: TraversableWithIndex no longer has an
    itraversed function.

  - Xanthous.Orphans: adjust for aeson's KeyMap, use KM.size explicitly
    instead of relying on MonoTraversable's length

* //nix/buildLisp: the CCL issue has resurfaced, disabling the
  implementation once again.

* //3p/arion: remove, as depot uses the nixpkgs package of it anyways.

* //users/wpcarro: accomodate GHC 9.0.1's stricter parsing of operators.

* //users/tazjin: disable rustfmt as it stopped respecting settings

* //3p/overlays: upgrade home-manager until fix for serivce generation
  has landed upstream

* //users/grfn/system: remove rr override, as the pinned commit is part
  of the 5.5.0 release shipped by nixpkgs.

Change-Id: If229e7317ba48498f85170b57ee9053f6997ff8a
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5428
Tested-by: BuildkiteCI
Autosubmit: sterni <sternenseemann@systemli.org>
Reviewed-by: grfn <grfn@gws.fyi>
Reviewed-by: tazjin <tazjin@tvl.su>
Reviewed-by: wpcarro <wpcarro@gmail.com>
2022-04-11 19:37:01 +00:00
..
src chore(3p/sources): Bump channels & overlays 2022-04-11 19:37:01 +00:00
.envrc subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
.gitignore fix(users/wpcarro): Delete and/or fix broken targets 2021-12-15 17:29:07 +00:00
default.nix style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
elm-srcs.nix style: format entire depot with nixpkgs-fmt 2022-01-31 16:11:53 +00:00
elm.json subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
ideas.org subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
index.css subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
index.html subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
output.css fix(users/wpcarro): Delete and/or fix broken targets 2021-12-15 17:29:07 +00:00
README.md subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
registry.dat subtree(users/wpcarro): docking briefcase at '24f5a642' 2021-12-14 02:15:47 +03:00
shell.nix fix(wpcarro/nix): Remove <briefcase> references 2021-12-15 15:49:40 +00:00

Learn Piano Chords (LPC)

Are you a musician looking for a more effective way to improve your craft? Maybe you're a music teacher looking to create useful exercises to give your students.

Studying music theory can be a fruitful undertaking, but it can often overwhelm or bore students. I think that if practicing is enjoyable, students will practice more. Practice doesn't make perfect; perfect practice makes perfect. Learn Piano Chords is a web app that lowers the barrier to practicing and internalizing music theory.

How does it work?

  1. Grab a cell phone or a laptop and your instrument.
  2. Open a web browser and visit the Learn Piano Chords app (URL and app forthcoming).
  3. Set the tempo (i.e. pace) at which you would like to practice.
  4. Set the target duration of your session.
  5. Select the key(s) and chord(s) you would like to practice.
  6. LPC will display chords at various rhythmic intervals during your practice session. It is your job to play these chords in time before the next chord appears.

Highlights

Here are some useful features of LPC:

  • Tempo: Set the rate at which LPC displays chords.
  • Predefined practice sessions: LPC offers users a few practice sessions to get users started. The goal, however, is to teach users to create their own bespoke practice sessions. LPC aims to foster a community of practitioners who curate and share their practice sessions.
  • Whitelist / blacklist: Construct the set of chords you would like to practice. Let's say you only want to practice triads in the keys of F, C, and G. Would you also like to avoid diminished chords? Or maybe you only want to practice major-7th chords for all keys. LPC supports all of these scenarios and many others. You can save these chord configurations to reuse them at any time. You can also share chord configurations with other LPC users if you find the practice useful.
  • Inversions: Every chord has inversions. For instance, every triad (i.e. chord composed of three notes) has three inversions: root, second, and third positions. LPC acknowledges all of the positions in which chords may appear and helps you study all, some, or none of these inversions.
  • Harmony: LPC understands basic harmony and can sort the chords you would like to train in various harmonious permutations.
  • Chaos-mode: Feeling confident? Throw the classical notions of harmony to the wayside and use LPC in "chaos-mode" where LPC samples randomly from the Circle of Fifths.

Developing

If you're interested in contributing, the following will create an environment in which you can develop:

$ nix-shell
$ elm-live -- src/Main.elm --output=elm.js