Skip to main content

Local-LLM-driven terminal based music generator

Project description

vibetune

A lightweight terminal music generator that uses local LLMs (via Ollama) as the creative brain to produce MIDI background music for videos.

Features

  • LLM-driven composition: Ollama translates a vibe description into a full music spec (key, tempo, chords, instruments)
  • Built-in player: Play, pause, and stop without leaving the terminal
  • Trim & crop: Cut clips to any length
  • Loop-friendly export: Crossfade-loop a clip seamlessly for video backgrounds
  • Presets: Save favorite vibes and reuse them
  • Variations: Generate riffs on a track you liked
  • Save/discard: Audition before committing

Installation

1. Install prerequisites

Ollama — runs the local LLM (ollama.com):

ollama pull qwen3.5:4b

FluidSynth — MIDI synthesis (vibetune will remind you if it's missing):

# macOS
brew install fluidsynth

# Ubuntu/Debian
sudo apt install fluidsynth fluid-soundfont-gm

2. Install vibetune

pip install vibetune

3. Run

vibetune

Usage

Generating a track

Describe any vibe and vibetune composes a MIDI track via the local LLM:

vibetune> gen lofi study beat, rainy afternoon, jazzy chords
vibetune> gen upbeat 8-bit adventure theme, fast tempo
vibetune> gen dark ambient drone, cinematic, building tension

Auditioning and editing

vibetune> play               # play the current track
vibetune> pause              # pause
vibetune> resume             # resume
vibetune> stop               # stop playback

vibetune> trim 0 30          # cut to the first 30 seconds
vibetune> trim 0:10 0:45     # also accepts mm:ss format
vibetune> loop               # crossfade the end into the start for seamless looping
vibetune> loop 2.5           # longer crossfade (seconds)
vibetune> undo               # revert the last edit

vibetune> info               # show key, tempo, instruments, chord progression

Saving

vibetune> save               # save with an auto-generated name
vibetune> save my_track      # save with a custom name
vibetune> library            # list all saved tracks
vibetune> discard            # throw away the current track without saving

Variations

Generate a new track with the same vibe but different chords, tempo, and instruments:

vibetune> vary

Presets

Save a vibe you like and reuse it later:

vibetune> preset save              # interactive: pick current vibe or enter a new one
vibetune> preset list              # show all saved presets
vibetune> preset use lofi-study    # generate a track from a preset
vibetune> preset edit lofi-study   # edit the preset's name or vibe inline
vibetune> preset delete lofi-study # remove a preset

Other

vibetune> duration 60        # set default track length to 60 seconds
vibetune> model qwen3.5:9b   # switch to a different Ollama model
vibetune> help               # full command reference
vibetune> quit

Configuration

Env var Default Description
VIBETUNE_HOME ~/.vibetune Data directory (cache, library)
VIBETUNE_MODEL qwen3.5:4b Ollama model to use
VIBETUNE_SOUNDFONT auto-detected Path to a custom .sf2 soundfont
OLLAMA_HOST http://localhost:11434 Ollama server URL

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vibetune-0.1.1.tar.gz (57.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

vibetune-0.1.1-py3-none-any.whl (20.6 kB view details)

Uploaded Python 3

File details

Details for the file vibetune-0.1.1.tar.gz.

File metadata

  • Download URL: vibetune-0.1.1.tar.gz
  • Upload date:
  • Size: 57.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vibetune-0.1.1.tar.gz
Algorithm Hash digest
SHA256 deddbb480b93e691586f035789d0215999673c07fa789166961060b71a3b9a61
MD5 289507273cc9752b98920d3a19ed074f
BLAKE2b-256 30b8d828d6545c0b2d95536fc8c6d25f3c15669fad68427fba87357b190fef62

See more details on using hashes here.

Provenance

The following attestation bundles were made for vibetune-0.1.1.tar.gz:

Publisher: release.yml on SucksToBeAnik/vibetune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file vibetune-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: vibetune-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 20.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for vibetune-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e5dd11b98804f3d16e2ac7079453e4260a59e58ce8b0966e8bcc6ea09057a0b
MD5 28309ed3e971d4cda16a04c774eac6fe
BLAKE2b-256 9e9866cad65cb2498e9a815a7edac7d17adfba1221638765a2f2f6d3b6dcd97d

See more details on using hashes here.

Provenance

The following attestation bundles were made for vibetune-0.1.1-py3-none-any.whl:

Publisher: release.yml on SucksToBeAnik/vibetune

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page