Skip to content

OSC ←→ WebSockets bridge and JavaScript client for REAPER

License

Notifications You must be signed in to change notification settings

lucianoiam/reaper-websockets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reaper-websockets

Python script for setting up a bidirectional bridge between REAPER's OSC control surface and web-based client implementations.

Includes a JavaScript port of https://github.com/lucianoiam/pyreaosc for interacting with the REAPER mixer through an easy to use object-oriented API.

Features

  • Transport play and record status
  • Track volume, pan and mute
  • FX bypass
  • FX parameter values

Quick start

  • REAPER → Preferences → Control/OSC/web → Add → OSC → Mode "Local port"
  • Run bridge.py
  • Open browser at http://localhost:9000

Client usage example

const reaper = new ReaperClient();

reaper.transport.on('playing', (playing) => console.log(`Playing: ${playing}`));
reaper.transport.on('recording', (recording) => console.log(`Recording: ${recording}`));

reaper.mixer.on('ready', () => {

	reaper.mixer.getTrack(1).volume = -12;	// dB
	
	for (const track of reaper.mixer.tracks) {
		console.log(`Track #${track.n} name=${track.name}`)

		track.on('volume', (value) => {
			console.log(`Volume ${value}`);
		});

		for (const fx of track.fx) {
			console.log(`  Fx #${fx.n} name=${fx.name}`);

			fx.on('bypass', (value) => {
				console.log(`Bypass ${value}`);
			});

			for (const param of fx.parameters) {
				console.log(`    Param #${param.n} val=${param.value}`);

				param.on('value', (value) => {
					console.log(`Parameter ${value}`);
				});
			}
		}
	}
});

await reaper.connect();

Credits

About

OSC ←→ WebSockets bridge and JavaScript client for REAPER

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published