Neural network DJ that mixes Bach like a cocktail
DeepJ generates MIDI music by blending composer styles as tunable parameters, not just imitating one.

What it does DeepJ is a Keras/TensorFlow model that generates polyphonic MIDI music conditioned on a weighted mixture of composer styles. You train it on your own MIDI dataset, then generate new compositions by dialing in how much Mozart, Chopin, or whoever you want in the blend. The paper claims it outperforms the earlier Biaxial LSTM approach in human evaluations.
The interesting bit Most music generation models pick a style and stick to it. DeepJ treats style as a continuous control vector — more like adjusting sliders on a mixing board than selecting a radio station. The paper also emphasizes learning musical dynamics (volume, expression) alongside notes, which is where a lot of generated music sounds robotic.
Key highlights
- Style is a tunable parameter, not a hard classification
- Learns dynamics (loudness/expression) in addition to pitch and timing
- End-to-end MIDI generation with Keras/TensorFlow
- Human rater evaluation against prior work (Biaxial LSTM)
- Accompanying research paper with proof-of-concept style control technique
Caveats
- No dataset included; you bring your own MIDI collection to
data/ - Requires manual install of an external
python-midifork before pip dependencies - Python 3.5 requirement suggests the codebase may need attention for modern environments
- README is sparse on architecture details — you’ll need the paper for the full picture
Verdict Worth a look if you’re researching controllable music generation or want a concrete implementation of style-conditioned sequence models. Skip if you need a batteries-included tool or modern Python support without elbow grease.