jammittools

Export sheet music and audio from Windows/Mac app Jammit https://github.com/mtolly/jammittools

Latest on Hackage:0.5.5

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

GPL-3 licensed by Michael Tolly
Maintained by miketolly@gmail.com

jammittools

Available on Hackage

A command-line tool for exporting sheet music and audio from the (defunct) Windows/Mac app Jammit. It should go without saying, but please do not distribute content from songs you have purchased—it is for your use only!

Easy export instructions

  1. Download songs through the Windows or Mac Jammit app.

  2. Download jammittools from the releases page.

  3. Unzip somewhere, and run the included easy-export script. Song folders will start being extracted in that same folder.

Command-line instructions

jammittools -?
# Print usage info.

jammittools -d
# Displays the entire library.

jammittools -t "My Song" -r "Some Artist" -x dir
# Easiest export option: exports all sheet music and audio for a song.

jammittools -t "My Song" -r "Some Artist" -s file.pdf -y <parts>
# Exports a single sheet music file with a list of parts, interleaved.
# See below for the syntax of instrument parts.

jammittools -t "My Song" -r "Some Artist" -a file.wav -y <parts>
# Exports a single audio file with a list of parts, mixed together.
# See below for the syntax of instrument parts.

jammittools -t "My Song" -r "Some Artist" -m file.wav
# Exports the metronome click track for the song.

jammittools -t "My Song" -r "Some Artist" -c -y <parts>
# Do a "dry run" of audio extraction, which checks if the parts exist
# but does not do any conversion. Exits with a non-zero code if any
# part does not exist.

jammittools -b dir
# Full library backup: runs -x for each song in your library.
# Each song is extracted to its own folder within "dir".

Other lesser-used flags:

-j /path/to/jammit/lib
# On Windows and OS X, the official app's library location is used
# if you do not specify this flag.
# You can also specify the environment variable JAMMIT.
# Songs in the same folder as the program will also always be found.

-T "My Song"
# Exact search on title, instead of -t which is case-insensitive substring.

-R "Some Artist"
# Exact search on artist, instead of -r which is case-insensitive substring.

-n <parts>
# Allows you to invert certain audio parts when exporting a WAV file.
# This can be used to access "hidden" parts that aren't a part of any
# transcribed instrument part, see below.

-l <number>
# Select the number of sheet music systems per page.
# One system contains a line from each individual part.
# If this flag is not given, an appropriate number of systems will be chosen
# to get close to an 8.5" by 11" page ratio.

--raw
# For -x and -b options, exports all original backing tracks separately
# instead of producing a combined one.

Instrument parts are given by this somewhat terse syntax:

g - Guitar (1)
r - Guitar 2
b - Bass (1)
a - Bass 2
d - Drums (1)
m - Drums 2
k - Keyboard (1)
y - Keyboard 2
p - Piano
s - Synth
o - Organ
v - Vocals (Lead)
x - Vocals (Backing)
GRBA - in sheet music, tab instead of notation
GBDKV - in audio, the backing track for an instrument

So, for example, to make a backing track consisting of just drums and bass:

jammittools <search parameters> -a out.wav -y db

To make a sheet music file with Guitar 1's notation and tab interleaved:

jammittools <search parameters> -s out.pdf -y gG

Accessing hidden parts

Not all the audio in a song has been transcribed and sold by Jammit. Things such as sound-effects, other instruments like violin, and occasionally third guitar or keyboard parts are "hidden" inside the backing tracks for every instrument package that you can purchase. You can listen to these parts by performing audio subtraction, where you take two audio files, invert one of them, and then mix them together.

Let's say you own all 5 instruments for a song. You can access the "hidden" track with a command similar to the following:

jammittools <search parameters> -a out.wav -y D -n grbkyvx

This uses the -n flag to mix many audio files in after inverting them. The D part is the backing track for the drums package. What this does is subtract the non-drums instrument parts from this backing track, leaving you with just the portion of the song that isn't present in any of the transcribed parts. If you use the -x or -b options to export all parts of a song, this process will be done for you and placed in a file called backing.wav.

The resulting file has a thin layer of noise, because all the audio used in Jammit is lossily encoded, which means the backing tracks are not quite perfect mixes of their constituent parts. But the results are generally pretty good, and you can easily use something like Audacity's noise filter to clean it up further. Using the drums backing track as a base is preferred, because drums leaves the most audible noise when you remove it from a different backing track.

Changes

v0.5.5

  • Fixed a memory leak from a song with sheet music height set to 0
  • Fixed one song with some missing info.plist fields
  • Support for all remaining instrument track names
  • Fixed empty string value not parsing from plist files
  • Fixed crash when exporting sheet music for a track with no images

v0.5.4

  • Program will always also look for songs in the folder it's in
  • Add option and script to export all backing tracks without combining them

v0.5.3.2

Mac-only release, fixes some issues on Sierra

v0.5.3

Added support for "Bass 2", "Vocals" (instead of "Vocal"), and "Vocal 1"/"Vocal 2" (instead of "Vocal"/"B Vocals").

v0.5.2

Added the ability to export the metronome click track. Available via the -m option, or via the -x or -b full backup options (including the easy-export script on Windows/Mac).

v0.5.1

Added a -b option for backing up an entire library of songs.

v0.5.0.3

Fixed some bugs in both audio and image decoding.

v0.5.0.1

Fixed a bug in reading the beats.plist file (not actually used in the executable).

v0.5

  • Fixed a bug where "Song Title " wasn't considered the same as "Song Title"
  • Much internal cleanup, smaller executable size
  • Library: added some more Jammit types (beats, ghost beats, sections)

v0.4.1.1

Fixes for GHC 7.10 (no new functionality).

v0.4.1

Uses conduit-audio, and exposes the audio file as an AudioStream.

v0.4

  • Doesn't require ImageMagick or SoX anymore! Thanks to JuicyPixels, HPDF, conduit, and audio code ported from aifc2wav.
  • Prints better instructions.
  • Prints what it is doing during each step of the -x dir export option.
  • Error if the search parameters don't narrow down the library to exactly one song.

v0.3.2

Fixes for Windows, other platforms are unchanged:

  • Use wchar_t for C functions to support non-ASCII filenames
  • Look for SoX in Program Files (the installer doesn't put it in the PATH)

v0.3.1

  • Added support for Drums 1, Drums 2 and Organ parts
  • Better argument handling (quits on unrecognized argument)

v0.3

Split the package into a library and an executable. No functional changes to the executable.

v0.2.0.1

Documentation, packaging, and version bounds improvements.

v0.2

  • Proper Mac support (knows the official library location).
  • Changed the long forms of some commands for consistency.
  • Removed -u and -b, replaced with a simple -c option which does a dry run of audio extraction. That is, it does no audio conversion, but exits with a code of 0 only if all specified audio parts are found.
  • Fixed a crash on very large libraries.

v0.1.1

  • -u and -b audio options for onyxite-customs project
  • -T and -R perform exact title/artist search, instead of existing -t and -r "case-insensitive substring" search

v0.1

Binary compiled with GHC 7.6.3 32-bit on Windows 7 64-bit. Should also work on Wine. You must install ImageMagick and SoX for sheet music and audio export respectively.

comments powered byDisqus