ScopeSync Technical Info

Table of Contents


Main points to note

  • The Max For Live and Java code for ScopeSync is open source. Please feel free to take a look on Github
  • The link is Unidirectional (for now), i.e. changing controls in Scope will not update them in the DAW. In fact, if you do change a value in Scope, you will break the sync for that control until you send it a new value (i.e. snapshots will not work).
  • The ScopeSync link supports up to 128 controls and 1 MIDI Port (if using multiple ScopeSync modules in Scope, you must merge the MIDI to get all of the data)
  • We have done everything we can to limit MIDI stuck notes and in normal use they now seem to be very occasional. However, the MIDI panic button is there just in case
  • The control resolution in Max is 64bit, so it should be possible to get very accurate automation between Live and Scope. However, if you map a MIDI controller to a control and use that to change the value, you'll be limited to whatever resolution that MIDI controller has (typically 128 steps). 14-bit MIDI control works fine.
  • We recommend using 32-bit ASIO drivers with this system (ASIO2 Float Source on 64bit Windows and ASIO Float Source and ASIO2 Float Source on 32bit are known to work successfully). The 24bit drivers *should* work for control (with reduced resolution), but will definitely not work for MIDI pass-through.
  • Other digital audio transport methods, e.g. ADAT, should also work fine and we'd love some feedback on any successes using alternatives

Building your own Max For Live patches based on Scope Sync

The example patches provided with BC Modular are designed to show how to make use of ScopeSync, but we would encourage people to try building their own, as it's really easy once you get the key concepts. To help with this, here's a brief overview of what's going on, using the ScopeSync16 Max For Live patch as an example.

Introduction

I created the ScopeSync16 as a simpler introduction to being able to customise the interface and settings of the patch without having to have a deep understanding of the workings of Max. To get started, load up the ScopeSync16.amxd patch into a MIDI channel as above and click on the Edit button (highlighted in red below):

SS16-EditButton.png

Editing the Patch


This will launch the Max editor and you'll see something like the following image:

SS16-Edit.png

Now click on each of the highlighted links in order (Unfreeze patch and switch to Patcher view). This will take you to the next view:

SS16-Patch-Edit.png

Now you can see the guts of the basic patch and how it hooks into the mxj~ Java object. It's actually pretty simple, there are 16 controls and whenever you change a value, it sends a message into the Java object, with the format "<ctrl> <value>". Setting control A1 to maximum will send a message "A1 1.000000" (the control values are sent as floating point values between 0.0 and 1.0).

The "s ---queue_message" and "r ---queue_message" are just a send and receive pair that get the message into to the ScopeSync patcher. You will also see that the "midiin" object is hooked via a utility patcher called midilist and then into the Java object.

The Java object handles all of the queuing and buffering logic, so it doesn't have to pollute the UI patch.

Customising Controls

Editing the display for each control is actually very simple. Just click on the control you want to change and then either open the Side Bar and click on Inspector (see image below), or press Ctrl-I to open the floating Inspector view. Then you can edit the values in the Parameter section to change the display and handling settings for the control. This page has lots of detail about editing these values: Live Parameters, but here are the main ones to consider changing:
Parameter
Description
Long Name
Name of Control as displayed in the Automation chooser in Live
Short Name
Name of Control as displayed on the Max for Live patch and on Ableton Push interface
Range/Enum
Min and Max values for the control range (as displayed). N.B. The range sent to Scope is always 0.0 -> 1.0
Unit Style
Dropdown list of standard unit styles. I'm actually using a Custom style to show the % to 4 decimal places
Automapping Index
This is really cool. Setting values from 1 to 128 for distinct controls will mean they are automatically ordered in the control surfaces that Ableton natively supports. Each version of the patch is configured to map across the appropriate number of control banks (16 in the case of ScopeSync128), which can be accessed on the Ableton Push LCD display (remember to press the button that looks like an Enter key to see Banks for a device).

SS16-Edit-Control.png