octane

package module
v0.0.14 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 31, 2025 License: BSD-2-Clause-Views Imports: 4 Imported by: 0

README

octane: a MIDI connector

jam session

ABOUT

octane harmonizes MIDI devices. Primarily by extending pitch range!

For example, a Bastl microGranny sampler and a KORG SQ-1 sequencer operate with mutually exclusive CC signals. That's where octane comes in! octane offers a simple pitch offset parameter. Suddenly we unlock more interesting interactions for your synths. Make sweet, sweet beats with octane.

DOWNLOAD

https://github.com/mcandre/octane/releases

TECH TALK SLIDES

MIDI for Morons

DOCUMENTATION

https://pkg.go.dev/github.com/mcandre/octane?utm_source=godoc

LICENSE

BSD-2-Clause

RUNTIME REQUIREMENTS

  • macOS, Linux, or Windows (experimental)

INSTALL FROM SOURCE

$ go install github.com/mcandre/octane/cmd/octane@latest

CONTRIBUTING

See DEVELOPMENT.md.

TIPS

  • Polling may complete faster when MIDI software such as Arturia Analog Lab is running. Though be careful about such software interfering with your jam sessions.
  • Polling may complete faster on Linux.
  • Any USB MIDI adapter hubs may obfuscate or alter device names.
  • MIDI device names may differ between operating systems.
  • In a pinch, many MIDI devices can serve as adapters to reach further MIDI devices, using "thru" options.
  • By default, octane copies data from all available IN devices to all available OUT devices. Optional -in, -out flags can narrow the mapping.

WE JAMMIN'

A quick hardware example triggers funky beats.

Equipment:

Hardware Configuration:

  1. Ensure speaker is powered on.
  2. Connect sampler to speaker with an audio cable.
  3. Ensure sampler is powered on.
  4. Connect MIDI controller to sampler with a DIN cable.
  5. Connect MIDI controller to PC with a USB cable.
  6. Ensure MIDI controller is powered on.
  7. Set the MIDI controller clock to internal.
  8. Enable Hold function on MIDI controller, if you have one.
  9. Connect sequencer MIDI OUT port to DIN adapter.
  10. Connect sequencer DIN adapter to MIDI IN port of USB adapter.
  11. Connect MIDI USB adapter to PC.
  12. Ensure sequencer is powered on.
  13. Set sequencer pattern to linear, left to right through 8 + 8 = 16 rows.
  14. Randomize sequencer pitch knobs.
  15. Set sequencer mode to Step Jump if you have one.
  16. Ensure PC is powered on.

Software configuration:

  1. Enumerate PC MIDI devices:
$ octane -list
Polling for MIDI devices...
MIDI IN devices:

* SQ-1 SEQ IN
* mio
* Arturia KeyStep 32

MIDI OUT devices:

* SQ-1 MIDI OUT
* SQ-1 CTRL
* mio
* Arturia KeyStep 32

Normally, the KORG SQ-1 sequencer emits notes too high for Bastl microGranny to understand. We will transpose the notes down four octaves, so that the sequencer can correctly trigger instructions to select different sample sounds.

  1. Set -transposeNote to subtract 48 from each sequencer note. Test octane with different inputs and outputs for your particular setup.
$ octane \
    -transposeNote -48 \
    -in "SQ-1 SEQ IN" \
    -out "Arturia KeyStep 32"

Polling for MIDI devices...
Connected to MIDI IN device: SQ-1 SEQ IN
Connected to MIDI OUT device: Arturia KeyStep 32

(Play a sequence)

#0 [4 d:4] channel.NoteOn channel 0 key 48 velocity 64
#0 [1187 d:1187] channel.NoteOff channel 0 key 48
...

Depending on the host, your MIDI devices may enumerate differently. For example, Linux typically may provide fewer. more generic MIDI instruments.

$ octane \
    -transposeNote -48 \
    -in "mio:mio MIDI 1 24:0" \
    -out "mio:mio MIDI 1 24:0"
  1. Set a sample going with the MIDI controller piano keys.
  2. Start the sequencer playing.
  3. Jam.

CREDITS

Documentation

Overview

Package octane provides primitives for manipulating MIDI signals.

Index

Constants

View Source
const Version = "0.0.14"

Version is semver.

Variables

This section is empty.

Functions

func Stream

func Stream(midiIn drivers.In, midiOuts []drivers.Out, offset int)

Stream begins copying data between MIDI IN devices, with an optional note transposition.

func TransposeKey added in v0.0.4

func TransposeKey(key uint8, offset int) uint8

TransposeKey applies a MIDI offset to a key.

Types

This section is empty.

Directories

Path Synopsis
cmd
octane command
Package main implements a CLI MIDI shifter application.
Package main implements a CLI MIDI shifter application.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL