Metadata-Version: 2.4
Name: groovebin
Version: 0.2.0
Summary: MIDI files, note maps and a pattern library in Python: translate drum maps, transform notes, index and search grooves — no DAW or plug-in needed
Author: Mike Farr
License-Expression: Apache-2.0
Project-URL: Repository, https://github.com/phierceweb/groovebin
Project-URL: Changelog, https://github.com/phierceweb/groovebin/blob/main/CHANGELOG.md
Project-URL: Issues, https://github.com/phierceweb/groovebin/issues
Keywords: midi,drums,drum-map,general-midi,groove,smf
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: End Users/Desktop
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Sound/Audio :: MIDI
Classifier: Typing :: Typed
Requires-Python: >=3.12
Description-Content-Type: text/markdown
License-File: LICENSE
License-File: NOTICE
Requires-Dist: pf-core~=0.22.0
Requires-Dist: mido~=1.3
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: ruff>=0.6; extra == "dev"
Dynamic: license-file

# groovebin

MIDI files, note maps and a pattern library in Python. It reads and writes Standard MIDI Files,
translates notes between instrument maps — General MIDI drums, Addictive Drums 2, Logic's Drum Kit
Designer — transforms notes by selection (velocity curves, humanize, swing, note lengths), and indexes a folder of MIDI patterns so they can be searched, shown and recombined.
Nothing needs a DAW or a plug-in installed or running.

Status: alpha. Commands, the library API and the index format may change before 1.0.

## Install

    pip install groovebin
    groovebin --version

Needs Python 3.12 or newer.

## Commands

    groovebin remap IN.mid --from drum-kit-designer --to addictive-drums-2 -o OUT.mid
    groovebin notes IN.mid --map gm
    groovebin transform IN.mid -o OUT.mid --preset humanize --seed 7
    groovebin index ~/Grooves --map addictive-drums-2
    groovebin search --role verse --meter 4/4 --tempo 90-110
    groovebin generate --meter 4/4 --bars 16 --fills --role verse -o verse.mid

Usage: [docs/usage.md](https://github.com/phierceweb/groovebin/blob/main/docs/usage.md).
Changes: [CHANGELOG.md](https://github.com/phierceweb/groovebin/blob/main/CHANGELOG.md).

## Develop

From a checkout:

    bin/run setup
    bin/run pytest
    bin/run lint        # ruff + the pf-core structural gate (300 soft / 500 hard lines)

See [CONTRIBUTING.md](https://github.com/phierceweb/groovebin/blob/main/CONTRIBUTING.md).

groovebin ships note-number tables only: no sounds, patterns or MIDI content from any vendor.
