reaper

package module
v0.3.0 Latest Latest
Warning

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

Go to latest
Published: Oct 30, 2018 License: MIT Imports: 3 Imported by: 6

README

reaper

Go library for communicating with Reaper via OSC

Documentation

Installation

To use the default reaper OSC configuration, install via

go get -d -u github.com/goosc/reaper/...

Example

package main

import (
	"fmt"
	"time"

	"github.com/goosc/osc"
	"github.com/goosc/reaper"
)

type handler struct{}

func (handler) Matches(p osc.Path) bool {
	return p != "/time"
}

func (handler) Handle(path osc.Path, vals ...interface{}) {
	fmt.Printf("reaper said: %s %v\n", path, vals)
}

const custom = reaper.Learnable("/my/learnable/controller/trigger")

func main() {
	rp, err := reaper.Connect(handler{})

	if err != nil {
		fmt.Printf("can't connect to bitwig: %#v\n", err.Error())
		return
	}

	fmt.Println(reaper.ACTION)
	reaper.ACTION.WriteTo(rp, 40001 /* insert track */)

	fmt.Println(custom)
	custom.WriteTo(rp, 0.34 /* always use float numbers to be learnable from fx params */)

	fmt.Println(reaper.METRONOME)
	reaper.METRONOME.WriteTo(rp)

	fmt.Println(reaper.PLAY)
	reaper.PLAY.WriteTo(rp)
	time.Sleep(time.Second * 3)

	fmt.Println(reaper.STOP)
	reaper.STOP.WriteTo(rp)
	time.Sleep(time.Second * 2)
}

Customization

To customize the package to your custom .ReaperOSC file run the following

git clone github.com/goosc/reaper
cd reaper
cp yourCustom.ReaperOSC Default.ReaperOSC
go generate
go build

Documentation

Index

Constants

View Source
const (
	ACTION                            osc.Toggle = "/action/%v"                         // args: t
	ACTION_RELATIVE                   F          = "/action/%v/cc/relative"             // args: f
	ACTION_SOFT                       F          = "/action/%v/cc/soft"                 // args: f
	ANY_SOLO                          B          = "/anysolo"                           // args: b
	AUTO_REC_ARM                      osc.Toggle = "/autorecarm"                        // args: t
	DEVICE_FX_COUNT                   osc.Toggle = "/device/fx/count/%v"                // args: t
	DEVICE_FX_FOLLOWS                 osc.S      = "/device/fx/follows"                 // args: s
	DEVICE_FX_FOLLOWS_DEVICE          osc.Toggle = "/device/fx/follows/device"          // args: t
	DEVICE_FX_FOLLOWS_FOCUSED         osc.Toggle = "/device/fx/follows/focused"         // args: t
	DEVICE_FX_FOLLOWS_LAST_TOUCHED    osc.Toggle = "/device/fx/follows/last_touched"    // args: t
	DEVICE_FX_INST_PARAM_BANK_SELECT  osc.Toggle = "/device/fxinstparam/bank/select/%v" // args: t
	DEVICE_FX_INST_PARAM_COUNT        osc.Toggle = "/device/fxinstparam/count/%v"       // args: t
	DEVICE_FX_PARAM_BANK_SELECT       osc.Toggle = "/device/fxparam/bank/select/%v"     // args: t
	DEVICE_FX_PARAM_COUNT             osc.Toggle = "/device/fxparam/count/%v"           // args: t
	DEVICE_FX_SELECT                  osc.Toggle = "/device/fx/select/%v"               // args: t
	DEVICE_MARKER_BANK_SELECT         osc.Toggle = "/device/marker/bank/select/%v"      // args: t
	DEVICE_MARKER_COUNT               osc.Toggle = "/device/marker/count/%v"            // args: t
	DEVICE_NEXT_FX                    osc.Toggle = "/device/fx/+"                       // args: t
	DEVICE_NEXT_FX_INST_PARAM_BANK    osc.Toggle = "/device/fxinstparam/bank/+"         // args: t
	DEVICE_NEXT_FX_PARAM_BANK         osc.Toggle = "/device/fxparam/bank/+"             // args: t
	DEVICE_NEXT_MARKER_BANK           osc.Toggle = "/device/marker/bank/+"              // args: t
	DEVICE_NEXT_REGION_BANK           osc.Toggle = "/device/region/bank/+"              // args: t
	DEVICE_NEXT_TRACK                 osc.Toggle = "/device/track/+"                    // args: t
	DEVICE_NEXT_TRACK_BANK            osc.Toggle = "/device/track/bank/+"               // args: t
	DEVICE_PREV_FX                    osc.Toggle = "/device/fx/-"                       // args: t
	DEVICE_PREV_FX_INST_PARAM_BANK    osc.Toggle = "/device/fxinstparam/bank/-"         // args: t
	DEVICE_PREV_FX_PARAM_BANK         osc.Toggle = "/device/fxparam/bank/-"             // args: t
	DEVICE_PREV_MARKER_BANK           osc.Toggle = "/device/marker/bank/-"              // args: t
	DEVICE_PREV_REGION_BANK           osc.Toggle = "/device/region/bank/-"              // args: t
	DEVICE_PREV_TRACK                 osc.Toggle = "/device/track/-"                    // args: t
	DEVICE_PREV_TRACK_BANK            osc.Toggle = "/device/track/bank/-"               // args: t
	DEVICE_RECEIVE_COUNT              osc.Toggle = "/device/receive/count/%v"           // args: t
	DEVICE_REGION_BANK_SELECT         osc.Toggle = "/device/region/bank/select/%v"      // args: t
	DEVICE_REGION_COUNT               osc.Toggle = "/device/region/count/%v"            // args: t
	DEVICE_SEND_COUNT                 osc.Toggle = "/device/send/count/%v"              // args: t
	DEVICE_TRACK_BANK_FOLLOWS         osc.S      = "/device/track/bank/follows"         // args: s
	DEVICE_TRACK_BANK_FOLLOWS_DEVICE  osc.Toggle = "/device/track/bank/follows/device"  // args: t
	DEVICE_TRACK_BANK_FOLLOWS_MIXER   osc.Toggle = "/device/track/bank/follows/mixer"   // args: t
	DEVICE_TRACK_BANK_SELECT          osc.Toggle = "/device/track/bank/select/%v"       // args: t
	DEVICE_TRACK_COUNT                osc.Toggle = "/device/track/count/%v"             // args: t
	DEVICE_TRACK_FOLLOWS              osc.S      = "/device/track/follows"              // args: s
	DEVICE_TRACK_FOLLOWS_DEVICE       osc.Toggle = "/device/track/follows/device"       // args: t
	DEVICE_TRACK_FOLLOWS_LAST_TOUCHED osc.Toggle = "/device/track/follows/last_touched" // args: t
	DEVICE_TRACK_SELECT               osc.Toggle = "/device/track/select/%v"            // args: t
	FORWARD                           B          = "/forward"                           // args: b
	FX_BYPASS                         B          = "/fx/%v/bypass"                      // args: b
	FX_EQ_BAND_FREQ                   N          = "/fxeq/band/%v/freq"                 // args: n
	FX_EQ_BAND_FREQ_f                 F          = "/fxeq/band/%v/freq/hz"              // args: f
	FX_EQ_BAND_GAIN                   N          = "/fxeq/band/%v/gain"                 // args: n
	FX_EQ_BAND_GAIN_f                 F          = "/fxeq/band/%v/gain/db"              // args: f
	FX_EQ_BAND_Q                      N          = "/fxeq/band/%v/q"                    // args: n
	FX_EQ_BAND_Q_f                    F          = "/fxeq/band/%v/q/oct"                // args: f
	FX_EQ_BYPASS                      B          = "/track/%v/fxeq/bypass"              // args: b
	FX_EQ_HIPASS_FREQ                 N          = "/track/%v/fxeq/hipass/freq"         // args: n
	FX_EQ_HIPASS_FREQ_f               F          = "/track/%v/fxeq/hipass/freq/hz"      // args: f
	FX_EQ_HIPASS_Q                    N          = "/track/%v/fxeq/hipass/q"            // args: n
	FX_EQ_HIPASS_Q_f                  F          = "/track/%v/fxeq/hipass/q/oct"        // args: f
	FX_EQ_HISHELF_FREQ                N          = "/track/%v/fxeq/hishelf/freq"        // args: n
	FX_EQ_HISHELF_FREQ_f              F          = "/track/%v/fxeq/hishelf/freq/hz"     // args: f
	FX_EQ_HISHELF_GAIN                N          = "/track/%v/fxeq/hishelf/gain"        // args: n
	FX_EQ_HISHELF_GAIN_f              F          = "/track/%v/fxeq/hishelf/gain/db"     // args: f
	FX_EQ_HISHELF_Q                   N          = "/track/%v/fxeq/hishelf/q"           // args: n
	FX_EQ_HISHELF_Q_f                 F          = "/track/%v/fxeq/hishelf/q/oct"       // args: f
	FX_EQ_LOPASS_FREQ                 N          = "/track/%v/fxeq/lopass/freq"         // args: n
	FX_EQ_LOPASS_FREQ_f               F          = "/track/%v/fxeq/lopass/freq/hz"      // args: f
	FX_EQ_LOPASS_Q                    N          = "/track/%v/fxeq/lopass/q"            // args: n
	FX_EQ_LOPASS_Q_f                  F          = "/track/%v/fxeq/lopass/q/oct"        // args: f
	FX_EQ_LOSHELF_FREQ                N          = "/track/%v/fxeq/loshelf/freq"        // args: n
	FX_EQ_LOSHELF_FREQ_f              F          = "/track/%v/fxeq/loshelf/freq/hz"     // args: f
	FX_EQ_LOSHELF_GAIN                N          = "/track/%v/fxeq/loshelf/gain"        // args: n
	FX_EQ_LOSHELF_GAIN_f              F          = "/track/%v/fxeq/loshelf/gain/db"     // args: f
	FX_EQ_LOSHELF_Q                   N          = "/track/%v/fxeq/loshelf/q"           // args: n
	FX_EQ_LOSHELF_Q_f                 F          = "/track/%v/fxeq/loshelf/q/oct"       // args: f
	FX_EQ_MASTER_GAIN                 N          = "/track/%v/fxeq/gain"                // args: n
	FX_EQ_MASTER_GAIN_f               F          = "/track/%v/fxeq/gain/db"             // args: f
	FX_EQ_NEXT_PRESET                 osc.S      = "/track/%v/fxeq/preset+"             // args: s
	FX_EQ_NOTCH_FREQ                  N          = "/track/%v/fxeq/notch/freq"          // args: n
	FX_EQ_NOTCH_FREQ_f                F          = "/track/%v/fxeq/notch/freq/hz"       // args: f
	FX_EQ_NOTCH_GAIN                  N          = "/track/%v/fxeq/notch/gain"          // args: n
	FX_EQ_NOTCH_GAIN_f                F          = "/track/%v/fxeq/notch/gain/db"       // args: f
	FX_EQ_NOTCH_Q                     N          = "/track/%v/fxeq/notch/q"             // args: n
	FX_EQ_NOTCH_Q_f                   F          = "/track/%v/fxeq/notch/q/oct"         // args: f
	FX_EQ_OPEN_UI                     B          = "/track/%v/fxeq/openui"              // args: b
	FX_EQ_PRESET                      osc.S      = "/track/%v/fxeq/preset"              // args: s
	FX_EQ_PREV_PRESET                 osc.S      = "/track/%v/fxeq/preset-"             // args: s
	FX_EQ_WETDRY                      N          = "/track/%v/fxeq/wetdry"              // args: n
	FX_INST_BYPASS                    B          = "/track/%v/fxinst/bypass"            // args: b
	FX_INST_NAME                      osc.S      = "/track/%v/fxinst/name"              // args: s
	FX_INST_NEXT_PRESET               osc.Toggle = "/fxinst/preset+"                    // args: t
	FX_INST_OPEN_UI                   B          = "/track/%v/fxinst/openui"            // args: b
	FX_INST_PARAM_NAME                osc.S      = "/fxinstparam/%v/name"               // args: s
	FX_INST_PARAM_VALUE               N          = "/fxinstparam/%v/value"              // args: n
	FX_INST_PRESET                    osc.S      = "/track/%v/fxinst/preset"            // args: s
	FX_INST_PREV_PRESET               osc.Toggle = "/fxinst/preset-"                    // args: t
	FX_NAME                           osc.S      = "/fx/%v/name"                        // args: s
	FX_NEXT_PRESET                    osc.Toggle = "/fx/preset+"                        // args: t
	FX_OPEN_UI                        B          = "/fx/%v/openui"                      // args: b
	FX_PARAM_NAME                     osc.S      = "/fxparam/%v/name"                   // args: s
	FX_PARAM_VALUE                    N          = "/fxparam/%v/value"                  // args: n
	FX_PRESET                         osc.S      = "/fx/%v/preset"                      // args: s
	FX_PREV_PRESET                    osc.Toggle = "/fx/preset-"                        // args: t
	FX_WETDRY                         N          = "/fx/%v/wetdry"                      // args: n
	GOTO_MARKER                       osc.Toggle = "/marker/%v"                         // args: t
	GOTO_REGION                       osc.Toggle = "/region/%v"                         // args: t
	LAST_MARKER_NAME                  osc.S      = "/lastmarker/name"                   // args: s
	LAST_REGION_NAME                  osc.S      = "/lastregion/name"                   // args: s
	LAST_TOUCHED_FX_NAME              osc.S      = "/fx/last_touched/name"              // args: s
	LAST_TOUCHED_FX_PARAM_NAME        osc.S      = "/fxparam/last_touched/name"         // args: s
	LAST_TOUCHED_FX_PARAM_VALUE       N          = "/fxparam/last_touched/value"        // args: n
	LAST_TOUCHED_FX_TRACK_NAME        osc.S      = "/fx/last_touched/track/name"        // args: s
	MARKER_NAME                       osc.S      = "/marker/%v/name"                    // args: s
	MASTER_PAN                        N          = "/master/pan"                        // args: n
	MASTER_SEND_NAME                  osc.S      = "/master/send/%v/name"               // args: s
	MASTER_SEND_PAN                   N          = "/master/send/%v/pan"                // args: n
	MASTER_SEND_VOLUME                N          = "/master/send/%v/volume"             // args: n
	MASTER_VOLUME                     N          = "/master/volume"                     // args: n
	MASTER_VU                         N          = "/master/vu"                         // args: n
	MASTER_VU_L                       N          = "/master/vu/L"                       // args: n
	MASTER_VU_R                       N          = "/master/vu/R"                       // args: n
	METRONOME                         osc.Toggle = "/click"                             // args: t
	MIDIACTION                        osc.Toggle = "/midiaction/%v"                     // args: t
	MIDILISTACTION                    osc.Toggle = "/midilistaction/%v"                 // args: t
	PAUSE                             osc.Toggle = "/pause"                             // args: t
	PLAY                              osc.Toggle = "/play"                              // args: t
	PLAY_RATE                         N          = "/playrate"                          // args: n
	REAPER_TRACK_FOLLOWS              osc.S      = "/reaper/track/follows"              // args: s
	REAPER_TRACK_FOLLOWS_DEVICE       osc.Toggle = "/reaper/track/follows/device"       // args: t
	REAPER_TRACK_FOLLOWS_REAPER       osc.Toggle = "/reaper/track/follows/reaper"       // args: t
	RECORD                            osc.Toggle = "/record"                            // args: t
	REGION_NAME                       osc.S      = "/region/%v/name"                    // args: s
	REPEAT                            osc.Toggle = "/repeat"                            // args: t
	REPLACE                           osc.Toggle = "/replace"                           // args: t
	REWIND                            B          = "/rewind"                            // args: b
	REWIND_FORWARD_BYMARKER           osc.Toggle = "/bymarker"                          // args: t
	REWIND_FORWARD_SETLOOP            osc.Toggle = "/editloop"                          // args: t
	SAMPLES                           F          = "/samples"                           // args: f
	SCROLL_X_NEXT                     B          = "/scroll/x/+"                        // args: b
	SCROLL_X_PREV                     B          = "/scroll/x/-"                        // args: b
	SCROLL_Y_NEXT                     B          = "/scroll/y/+"                        // args: b
	SCROLL_Y_PREV                     B          = "/scroll/y/-"                        // args: b
	SCRUB                             osc.F      = "/scrub"                             // args: r
	SOLO_RESET                        osc.Toggle = "/soloreset"                         // args: t
	STOP                              osc.Toggle = "/stop"                              // args: t
	TEMPO                             N          = "/tempo"                             // args: n
	TIME                              F          = "/time"                              // args: f
	TRACK_AUTO                        osc.S      = "/track/auto"                        // args: s
	TRACK_AUTO_LATCH                  osc.Toggle = "/track/autolatch"                   // args: t
	TRACK_AUTO_READ                   osc.Toggle = "/track/autoread"                    // args: t
	TRACK_AUTO_TOUCH                  osc.Toggle = "/track/autotouch"                   // args: t
	TRACK_AUTO_TRIM                   osc.Toggle = "/track/autotrim"                    // args: t
	TRACK_AUTO_WRITE                  osc.Toggle = "/track/autowrite"                   // args: t
	TRACK_MONITOR                     B          = "/track/%v/monitor"                  // args: b
	TRACK_MUTE                        B          = "/track/%v/mute"                     // args: b
	TRACK_NAME                        osc.S      = "/track/%v/name"                     // args: s
	TRACK_PAN                         N          = "/track/%v/pan"                      // args: n
	TRACK_PAN2                        N          = "/track/%v/pan2"                     // args: n
	TRACK_PAN_MODE                    osc.S      = "/track/%v/panmode"                  // args: s
	TRACK_PAN_TOUCH                   B          = "/track/%v/pan/touch"                // args: b
	TRACK_RECV_NAME                   osc.S      = "/track/recv/%v/name"                // args: s
	TRACK_RECV_PAN                    N          = "/track/recv/%v/pan"                 // args: n
	TRACK_RECV_VOLUME                 N          = "/track/recv/%v/volume"              // args: n
	TRACK_REC_ARM                     B          = "/track/%v/recarm"                   // args: b
	TRACK_SELECT                      B          = "/track/%v/select"                   // args: b
	TRACK_SEND_NAME                   osc.S      = "/track/send/%v/name"                // args: s
	TRACK_SEND_PAN                    N          = "/track/send/%v/pan"                 // args: n
	TRACK_SEND_VOLUME                 N          = "/track/send/%v/volume"              // args: n
	TRACK_SOLO                        B          = "/track/%v/solo"                     // args: b
	TRACK_VOLUME                      N          = "/track/%v/volume"                   // args: n
	TRACK_VOLUME_TOUCH                B          = "/track/%v/volume/touch"             // args: b
	TRACK_VOLUME_f                    F          = "/track/%v/volume/db"                // args: f
	TRACK_VU                          N          = "/track/%v/vu"                       // args: n
	TRACK_VU_L                        N          = "/track/%v/vu/L"                     // args: n
	TRACK_VU_R                        N          = "/track/%v/vu/R"                     // args: n
	VKB_MIDI_CC                       osc.I      = "/vkb_midi/%v/cc/%v"                 // args: i
	VKB_MIDI_CHANNELPRESSURE          osc.I      = "/vkb_midi/%v/channelpressure"       // args: i
	VKB_MIDI_NOTE                     osc.I      = "/vkb_midi/%v/note/%v"               // args: i
	VKB_MIDI_PITCH                    osc.I      = "/vkb_midi/%v/pitch"                 // args: i
	VKB_MIDI_POLYAFTERTOUCH           osc.I      = "/vkb_midi/%v/polyaftertouch/%v"     // args: i
	VKB_MIDI_PROGRAM                  osc.I      = "/vkb_midi/%v/program"               // args: i
	ZOOM_X_NEXT                       B          = "/zoom/x/+"                          // args: b
	ZOOM_X_PREV                       B          = "/zoom/x/-"                          // args: b
	ZOOM_Y_NEXT                       B          = "/zoom/y/+"                          // args: b
	ZOOM_Y_PREV                       B          = "/zoom/y/-"                          // args: b

)

generated via go run generate/main.go Default.ReaperOSC reaper generated.go

Variables

This section is empty.

Functions

func Has

func Has(vals []interface{}) bool

func HasAndIsOff

func HasAndIsOff(vals []interface{}) bool

func HasAndIsOn

func HasAndIsOn(vals []interface{}) bool

Types

type B

type B string

B is the binary value as described in Default.ReaperOSC

func (B) Set

func (i B) Set(vals ...interface{}) B

func (B) WriteTo

func (i B) WriteTo(wr io.Writer, b bool) error

type Connection

type Connection interface {
	io.WriteCloser
	osc.Listener
	Connect() (err error)
}

func New

func New(handler osc.Handler, options ...Option) Connection

type F

type F string

F is the float value as described in Default.ReaperOSC

func (F) Set

func (i F) Set(vals ...interface{}) F

func (F) WriteTo

func (i F) WriteTo(wr io.Writer, fs ...float32) error

type Learnable

type Learnable string

Learnable is a custom osc.Path that gets a single float value that should have values between -1 and 1. These paths can be "learned" for fx parameters via reaper GUI.

func (Learnable) Set

func (i Learnable) Set(vals ...interface{}) Learnable

func (Learnable) WriteTo

func (i Learnable) WriteTo(wr io.Writer, v float32) error

type N

type N string

N is the normalize float value as described in Default.ReaperOSC

func (N) Set

func (i N) Set(vals ...interface{}) N

func (N) WriteTo

func (i N) WriteTo(wr io.Writer, fs ...float32) error

type Option

type Option func(*connection)

func ListenAddress

func ListenAddress(address string) Option

ListenAddress is an option to overwrite the default listen address of "127.0.0.1:9001"

func WriteAddress

func WriteAddress(address string) Option

WriteAddress is an option to overwrite the default write address of "127.0.0.1:8001"

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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