This is the code to build AnkiJazz Website and Anki Decks.
Extensive music theory library that can answer the following questions, for example:
- what scales contain a Bbm7 chord?
- what is the key signature of F Melodic Minor?
- which Pentatonic Scale is a good substitute for a Gmaj7 Arpeggio?
- what scales to use to improvise over a given chord progression (with fewest scale changes as possible)?
- a nice Midi DSL to generate backing tracks for chord progressions
- and many more!
Generate fretboard diagrams:
with corresponding Audio - what you see is what you hear ;-)
Generate (randomizable but still reasonable) chord progression sheets:
with corresponding Audio - again: what you see is what you hear ;-)
Generate Notation with correct Key Signatures (which is not an easy task as discussed at the bottom of this page)
with corresponding Audio - once again: what you see is what you hear ;-)
This code is licensed under the GNU Affero General Public License
Prerequisites
Install Git, Java JDK 11+, npm, Docker and Anki. In your IDE you have to install Lombok
Start Anki and create a new Profile called build
and adjust the directory path in anki/gradle.properties
.
In webapp
directory run npm install
.
Build Overview
The anki subproject generates "raw media" (Lilypond source files and Midi files) into build/anki
or build/preview
. Then a Docker container is launched, which converts "raw media" into png images and mp3 audio files, which can be consumed by Anki and the Website. The docker runs Ubuntu Linux with tools like lilypond, timidity, lame and others. The Docker container is launched only if the file .media-processed
is not present in the build/anki
or build/preview
directory (see anki/build.gradle). The .media-processed
file is created by the Docker container after processing has finished (see ankijazz.sh)
Build Targets
build
compiles java code and runs tests, generates preview media and builds the website (which includes preview media). Does not build Anki DecksbuildAnkiProfile
generates media and copies them to the Ankibuild
profile. This takes about 1 hour on my machine. When finished, start Anki and manually import the generated .txt files which are located in build/anki folder. Make sure that you use TAB as separator and allow duplicates.processPreviewMedia
is for manual testing. When I deveop new decks I run some unit tests from IDE that generate media into build/preview directory.processPreviewMedia
then processes whatever raw media it finds inbuild/preview
directory. After that I open build/preview/*.html files in a browser to check whether the generated media look right.
TBD.