jammittools: Export sheet music and audio from Windows/Mac app Jammit

[ gpl, library, program, sound ] [ Propose Tags ]

Jammit is a service and associated app for Windows/Mac/iOS that sells isolated instrument audio tracks from popular music, along with full transcriptions. This is a library and executable that allow you to export the sheet music (in PDF format) and audio (in WAV format) to tracks that you have purchased.

Any sheet music or audio you export is solely for your own use, e.g. for use on Linux and Android devices that do not have the official app available. Please do not use this tool to share content with others who have not purchased it!

Please see the README for usage information.

[Skip to Readme]
Versions [faq], 0.3, 0.3.2, 0.4, 0.4.1,, 0.5,,,, 0.5.1, 0.5.2, 0.5.3,, 0.5.4, 0.5.5,,
Dependencies base (>= && <5), boxes (>=0.1.3 && <0.2), bytestring (>= && <0.11), conduit (>= && <1.3), conduit-audio (==0.1.*), containers (>= && <0.6), directory (>= && <1.3), filepath (>= && <1.5), HPDF (>=1.4.6 && <1.5), jammittools (==, JuicyPixels (>=3.2.2 && <3.3), process (>= && <1.3), property-list (>= && <0.2), resourcet, temporary (>= && <1.3), transformers (>= && <0.5), vector (>= && <0.11) [details]
License LicenseRef-GPL
Author Michael Tolly
Maintainer miketolly@gmail.com
Category Sound
Home page https://github.com/mtolly/jammittools
Bug tracker https://github.com/mtolly/jammittools/issues
Source repo head: git clone https://github.com/mtolly/jammittools
Uploaded by mtolly at 2015-05-10T01:53:51Z
Distributions NixOS:
Executables jammittools
Downloads 11046 total (25 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2015-05-10 [all 1 reports]




Maintainer's Corner

For package maintainers and hackage trustees

Readme for jammittools-

[back to package description]


Available on Hackage

A command-line tool for exporting sheet music and audio from the 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!


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" -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.

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.

-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.

Instrument parts are given by this somewhat terse syntax:

g - Guitar (1)
r - Guitar 2
b - Bass
d - Drums (1)
m - Drums 2
k - Keyboard (1)
y - Keyboard 2
p - Piano
s - Synth
o - Organ
v - Vocals (Lead)
x - Vocals (Backing)
GRB - 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 the following command:

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 option 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.