0.2.0 β€’ Published 2 years ago

@ryanatkn/earbetter v0.2.0

Weekly downloads
-
License
Unlicense
Repository
github
Last release
2 years ago

Earbetter

ear training game and tools for playing and programming music and audio 🎢🦜 earbetter.ryanatkn.com

to help see contributing.md

play at earbetter.ryanatkn.com

usage

npm i -D @ryanatkn/earbetter
import Piano from '@ryanatkn/earbetter/Piano.svelte';

No docs yet, for now see the modules referenced in $lib/exports.ts.

intro

In 2016 I made a simple ear training game named Ear Sharpener because I thought ear training was interesting, but it wasn't a good training tool. The goal of Earbetter is to be a useful and customizable ear trainer. I also want it to be fun so it motivates more training, but it's not there yet.

I'm not a musician and I'm one person so I can't possibly make all of the best ear training challenges. Knowing this, I designed the software so you can create and share custom challenges - the content is all configurable.

Earbetter's gameplay has "levels" broken up into "trials". Each trial is a sequence of notes that you hear and then play back. Your score for the level is the sum of mistakes made in each trial, and you'll get a β˜… when you reach 0 across four runs of the level.

When a sequence is two notes long, it trains individual intervals, and longer sequences train a combination of relative pitch and working memory.

It's limited but supports a decent range of ear training challenges and there's room to add more capabilities. (if you have ideas please share!) In the level creator, you can click the "import" button to get copy-pastable data as text that you can share with others.

"Realms" group multiple levels together, and each realm may have a particular flavor like a scale. Realms can be created and shared just like importing/exporting levels.

"Projects" are like save files. They group multiple realms together. They can similarly be imported/exported.

In the future I'll probably add a way to share in-app, but that requires some kind of server infrastructure. For now I'm accepting content submissions in this repo, so we get the benefit having a lot of static content without needing a server. I'm open to input but I'm hesitant to operate any kind of service or add non-static dependencies -- for now, you're invited to open PRs with your exported data following the default example, or email me if you don't use GitHub.

For more please see contributing.md and the GitHub discussions and issues.

develop

This project uses SvelteKit with the static adapter and Vite, so the normal commands like vite dev work as expected. I use gro for additional things like deploying - see below for more.

Windows is not yet supported (we recommend WSL)

gro dev # npm i -g @feltjs/gro

See SvelteKit, Vite, Svelte, Gro, and felt-ui for more.

build

gro build

See Gro's build docs for more.

test

gro test

See uvu and Gro's test docs.

deploy

Deploy (build, commit, and push) to the deploy branch, e.g. for GitHub Pages:

gro deploy

To configure GitHub pages (which this repo uses) or another static host, customize or delete src/static/CNAME.

credits 🐒🐒🐒

Svelte βˆ™ SvelteKit βˆ™ Vite βˆ™ esbuild βˆ™ uvu βˆ™ TypeScript βˆ™ ESLint βˆ™ Prettier βˆ™ felt-ui βˆ™ @feltjs/util βˆ™ Gro & more

license 🐦

public domain ⚘ The Unlicense

0.2.0

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago