Giter Site home page Giter Site logo

hacklabsguitar / helix-py-api Goto Github PK

View Code? Open in Web Editor NEW
4.0 1.0 0.0 1.51 MB

Unofficial API for managing Line 6 Helix files and related devices

Home Page: https://hacklabsguitar.github.io/helix-py-api

License: BSD 3-Clause "New" or "Revised" License

Python 100.00%

helix-py-api's Introduction

Helix Py API

Unofficial API for managing Line 6 Helix files and related devices

Source Code Issues Python Windows BSD 3-Clause Sponsor

Overview

Helix-py-api is the unofficial API for managing Line 6 Helix files and related devices. It includes features for editing, standardizing, importing/exporting, renaming, reordering, and cloning bundles, setlists, presets, and snapshots. You can easily build setlists and presets from separate files as well as breakup bundles and setlists into individual setlist and preset files. It also includes simplified MIDI control (i.e. no MIDI message format/value knowledge needed) for Helix hardware and software (Helix Native) as well as direct MIDI control for other Line 6 (ex. FBV) and 3rd party devices.

Helix-py-api will open up a new world of possibilities. Here are a few ideas to get you started:

  • Automatically change to a specific setlist, preset, and or snapshot with one click (i.e. script, button, etc)
    1. ex. Change on your Helix, your co-guitarist, your bass player, or all at once
  • Cleanup all your setlist, preset and snapshot names:
    1. ex. Uppercase, no special characters, etc
    2. ex. Change "Lead" to "Solo", "New Preset" to ""
  • Standardize snapshot colors (for every preset in every setlist) to your desired criteria (ex. SOLO=red, CLEAN=WHITE, etc)
  • Easily mass import a ton of presets into a single setlist
    1. ex. After you downloaded bunch of presets from CustomTone
  • Individually backup all your presets to Github

Notable Limitations

Until time, knowledge, and desire permits to add new features, below are some notable limitations.

Helix

  • Reading state/changes directly from the Helix
  • Importing/exporting files to/from the Helix
  • Anything not exposed in the API (ex. blocks, IRs, favorites, etc)

Helix Native

  • Controlling Helix Native requires a virtual MIDI cable: https://springbeats.com/2016/12/10/springbeats-free-virtual-midi-cable/
  • Helix Native midi control through VST's is severely limited as stated in the Helix Native product manual: AU and AAX Plugin Formats Only: At this time, remote MIDI control of setlist and preset changes is supported only with the AU (Mac) and Pro Tools AAX (Mac and Windows) Helix Native plugin formats. It is not supported for the VST2 or VST3 Helix Native plugin formats on Mac or Windows.

Support the Project

If you find this project useful, please consider supporting it to help with ongoing development and maintenance:

Your contributions are greatly appreciated!

Getting Started

Download and install the API

git clone https://github.com/HackLabsGuitar/`Helix-py-api`.git
cd `Helix-py-api`
pip install -r requirements.txt

Optionally change any default settings.

Create an API instance.

import helixapi

helix = Helix()

This will load a default empty bundle template. You can instead load your own bundle:

import helixapi

helix = Helix(file_path="/path/to/bundle.hlb")

Usage Examples

The full API of this library can be found in the API reference.

# Example: Import/export files
helix.setlists[1].import_setlist(file_path="/path/to/setlist.hls")
helix.bundle.export_bundle(file_path="/path/to/bundle.hlb")
# Example: Import multiple/export to individual files
helix.setlists[4].presets.import_presets(file_paths=["/path/to/preset1.hlx", "/path/to/preset2.hlx"])
helix.setlists.export_setlists(file_path="/path/to/setlists")
# Example: Change properties of a setlist, preset, or snapshot
helix.setlists[0].name = "Setlist 1"
helix.setlists[1].presets[0]. = "Set2-Pres1"
helix.setlists[0].presets[0].snapshots[0].name = "Snapshot 1"

import helixapi.snapshot.LEDColor as LEDColor
helix.setlists[0].presets[0].snapshots[0].ledcolor = LEDColor.RED
# Example: loop through items
for setlist in helix.setlists:
    print(setlist.name)
    
    for preset in setlist.presets:
        print(preset.name)

        for snapshot in preset.snapshots:
            print(snapshot.name)
# Example: standardize setlists, presets, and snapshots
helix.setlists.standardize()
for setlist in helix.setlists:      
    setlist.presets.standardize()
    for preset in setlist.presets:
        preset.snapshots.standardize()

Licensing

Copyright 2024 Hack Labs Guitar

Licensed under the BSD 3-Clause License (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

https://opensource.org/licenses/BSD-3-Clause

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

A copy of the license is available in the repository's LICENSE file.

helix-py-api's People

Contributors

hacklabsguitar avatar

Stargazers

 avatar  avatar Mandy Schoep avatar Jim Sproull avatar

Watchers

 avatar

helix-py-api's Issues

helix = Helix(): NameError: name 'Helix' is not defined

Hi,
thanks for the great project! Just cloned the repo, "import helixapi" works fine but "helix = Helix()" throws an error: NameError: name 'Helix' is not defined
I'm just a user, no programmer, I can't get it to work.
Python3.9 on WSL, debian bullseye
Thanks,
Jörn

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.