Skip to main content

Generate Line 6 Helix Stadium .hsp / legacy .hlx preset files from JSON tone specs.

Project description

helixgen-core

The core Python library + CLI behind helixgen: generate Line 6 Helix Stadium .hsp presets (and legacy .hlx) from JSON tone recipes, edit them surgically in place, manage impulse responses by Stadium-exact content hash, and control a Helix Stadium directly over the LAN (OSC-over-ZeroMQ — no editor app).

⚠️ Unofficial tool — use at your own risk. Not affiliated with or endorsed by Line 6 / Yamaha (see Trademark notice). Loading any user-generated preset on your hardware carries risk — rejected loads, corrupted preset slots, on-device crashes. Review what you import. The MIT LICENSE disclaims all warranty.

Repo family

Repo What it is
helixgen-core (this repo) The helixgen Python package: libs + CLI (the engine's only surface)
helixgen The Claude Code plugin — /tone, /setup, /device skills + marketplace
helixgen-tui Terminal UI for tones, setlists, and device control

Want natural-language preset generation inside Claude Code? Install the plugin — you don't need this repo directly. This repo is for using the CLI/library standalone, or developing against it.

Install

Requires Python 3.11+. Published to PyPI:

pip install 'helixgen[device]'

Extras: device (network device control: pyzmq, msgpack, paramiko), dev (pytest).

A standalone install starts with an empty block library — seed it first:

helixgen bootstrap

Computing IR hashes from WAVs (register-irs <wav>, ir-scan) additionally needs libsndfile (brew install libsndfile / apt install libsndfile1).

Quick tour

helixgen list-blocks --category amp        # browse the block library
helixgen show-block "Brit Plexi Brt"       # exact param names/ranges
helixgen generate recipe.json -o tone.hsp  # author a preset from a recipe
helixgen set-param tone.hsp "Tape Echo Stereo" Mix 0.3   # surgical edit
helixgen view tone.hsp                     # read a .hsp back as a recipe
helixgen device list                       # talk to a Stadium on the LAN
helixgen device sync my-setlist            # mirror a managed setlist onto it

Full references:

Tests

Run from a source checkout with the package on PYTHONPATH:

PYTHONPATH=$PWD/src python -m pytest

Live integration suite (tests/live/)

An opt-in suite that drives the real CLI via subprocess against the user's real block library and a real Helix Stadium on the LAN. It is skipped entirely (fast, green) unless HELIXGEN_LIVE=1:

HELIXGEN_LIVE=1 PYTHONPATH=$PWD/src python -m pytest tests/live -q

Tests are grouped by impact area with registered markers — authoring, library, ir, device_read, device_write, liveops, setlists, sync, device_ir (plus live on everything and live_global for the extra-gated global-settings write) — so a targeted change can run just its blast radius, e.g.:

HELIXGEN_LIVE=1 PYTHONPATH=$PWD/src python -m pytest -m "live and sync" tests/live

The device_write module's #38 regression guard only guards when the active preset's edit buffer is dirty — that is the state that made /CreateContent answer status field 3 = 1, which pre-0.30.0 clients misread as an error and "cleaned up". A clean buffer answers 0 and exercises the uninteresting path. The dirty_edit_buffer fixture establishes that state itself (a manual tweak wouldn't survive: an earlier device load in the same module clears the flag), and skips rather than passing green if it can't — so a skip there means the guard did not actually run. See each module's docstring.

Safety is enforced by fixtures: all local state (manifest, IR mapping, IR-hash cache, prefs, backups) is redirected to a scratch dir; an upfront device backup runs; device state is diffed before/after (the suite fails itself on any leak); every artifact is HGTEST-prefixed and torn down even on failure. See tests/live/conftest.py for the full safety model and the list of deliberately excluded verbs.

Acknowledgments

helixgen leans heavily on sensorium/phelix — a community-maintained, hand-curated repository of Helix block JSON files. The helixgen bootstrap command clones phelix and ingests its blocks/ directory; without that pre-extracted catalog the cold-start experience of this tool would be considerably worse.

Trademark notice

helixgen is an unofficial community project. Line 6, Helix, HX, and related product names are trademarks of Yamaha Guitar Group, Inc. helixgen is not affiliated with, endorsed by, or sponsored by Line 6 or Yamaha. References in this project to Line 6 hardware, file formats (.hlx, .hsp), and model identifiers are descriptive — helixgen generates files intended to be compatible with Line 6 Helix devices but is not a Line 6 product.

If you are a representative of Line 6 / Yamaha and have concerns about this project's name or scope, please open an issue.

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

helixgen-0.30.0.tar.gz (765.0 kB view details)

Uploaded Source

Built Distribution

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

helixgen-0.30.0-py3-none-any.whl (475.9 kB view details)

Uploaded Python 3

File details

Details for the file helixgen-0.30.0.tar.gz.

File metadata

  • Download URL: helixgen-0.30.0.tar.gz
  • Upload date:
  • Size: 765.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for helixgen-0.30.0.tar.gz
Algorithm Hash digest
SHA256 052cba77e3e4a7fc55ff65fae55f3cca5eed96d117f2433f761169020aab8f47
MD5 cf75f6e84bac2e32c19956ba319ea0af
BLAKE2b-256 4c76ba3e81110ec7624dec848a1436c6dbeda45972c4cac72ebdd65c21587cf3

See more details on using hashes here.

Provenance

The following attestation bundles were made for helixgen-0.30.0.tar.gz:

Publisher: publish.yml on sheax0r/helixgen-core

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

File details

Details for the file helixgen-0.30.0-py3-none-any.whl.

File metadata

  • Download URL: helixgen-0.30.0-py3-none-any.whl
  • Upload date:
  • Size: 475.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for helixgen-0.30.0-py3-none-any.whl
Algorithm Hash digest
SHA256 1ecc77ed1eb8b987fde44c6c623a7c6e4a517152dd7295570e5fb8d8101e027a
MD5 fe4662ea3d5497ae3a7371f8fe556983
BLAKE2b-256 ede57e2561eef8ea33ab22bae533cda68aa05aa8bba6bb14b012ce86f0dcfd0b

See more details on using hashes here.

Provenance

The following attestation bundles were made for helixgen-0.30.0-py3-none-any.whl:

Publisher: publish.yml on sheax0r/helixgen-core

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