Articulations : full dynamic module for Logic with detailed instructions

Dear all,

I’m a long time Logic user working with a big orchestral template. I’ve never liked the “one track, one articulation” way of work. In my template, I’m using the Articulation system from Logic and it suits well my workflow : one instrument track with all its articulations.

With this system, my complain was that for each track, the default Articulation is the first one in the list (Eg : for my template : mostly “Long”)

But what if want to record some Pizz or staccato, it’s a problem.

I can change the Articulation using the menu on the top of the instrument plugin window before recording or I can use Smart Controls Keyswitches window (ugly and limited to only24 articulations). This isn’t the greatest or fastest solution for my workflow…

I’ve always wanted some physical faders to be able to control dynamic, intensity or vibrato for my libraries. I’ve never found something simple suiting my needs and as a result I’ve builded the Nuances controller

I needed something simple to be able to deal with all my articulations in Logic. My goal was to use the lightest and purest solution without any scripting in Logic or any port routing and also I don’t want any additional software. I needed something working directly with all the songs I’ve already created from my template without any modification.

The result is : Articulations

Of course, it is free !

If my way of working looks like yours, it might be a great upgrade to your workflow.

You can use it freely and mod it to your taste, but please don't sell it or make money with it !

How does it works :

You will have to add a Mackie control surface to your Logic Pro configuration. This will able “Articulations” to know which track is selected on your song without external driver or third party application and on any Mac computer (intel or silicon).

Then “Articulations” will be able to get a direct access to 2 folders in your computer :

  • The LogicPro’s articulation folder in order to know which articulation is available on each of your tracks

  • a LibraryPicture folder containing an illustration (Jpeg or png) to get a fancy picture of the selected track’s library on your Open Stage Control screen

Articulation will then return your choice via the Logic’s Midi remote system of its articulation workflow

A big thanks to jean-emmanuel for his work !
Thanks also to LowweeK75 for his code, a lot of his work is used in this external module !!!
With the great help of Chat GPT and pieces of codes gathered at Open stage Control Community forum.
And of course, thanks to all the OSC community forum members.

Please support jean-emmanuel work on Patreon :

The purpose of this external module is to be able to control Articulations from your select track in Logic Pro via Articulation MIDI remote with Open Stage control (No Logic script or external module). It can also add a fancy picture of the selected track's sound bank

Please note :

I won't guarantee it will work for you and I won't do hotline support (I'm busy writing music)
I won't be responsible for your computer smoking or for any data loss
It won't be my fault if you use this code to write either good or bad music

Enjoy !

Pierre

Step by step installation tutorial in 4 parts on next posts

2 Likes

Part 1 : OpenStageControl for newbie and communication with Logic

First download Open Stage Control application for OSX and install it in your Application folder :

Now it is time to download this file :
OpenStageControl.zip (527.8 KB)

Uncompress it and put the resulting folder (OpenStageControl) in Users/YourMacPersonalUserFolderName/Documents

Launch Open Stage Control (Remember OpenStageControl isn’t signed by Apple, you will have to control-click /open it the first time you will launch it)

MIDI : sysex Mackie:virtual Logic:virtual
(when started, OpenStageControl will create 2 virtual Midi ports : Mackie and Logic)

Load : /Users/YourMacPersonalUserFolderName/OpenStageControl/LogicTrackName.json

You should get this

Launch LogicTrackName.json by clicking on Play

Now it’s time to configure Logic

In Logic go to : Logic Pro/Control Surfaces/Setup…

New/Instal…

Select Mackie Control an click on “Add” (Don’t click on Scan)

Assign the OpenStage newly created virtual ports on this Mackie control

Open a Logic song and then switch to Open Stage app

You should have a weird track name displayed

Click on PanView and Name View to obtain the correct track name from Logic

Test switching tracks in Logic, it should work !

Quit Open Stage Control app
Please keep LogicTrackName.json in your OpenStageControl folder (/Users/YourMacPersonalUserFolderName/OpenStageControl) just in case for future use

For example upgrading Logic from 10.7.7 to 10.7.8 reset the Make Control display in Logic.
You will then need to reopen LogicTrackName.json once to get the correct display mode again

My Articulations module will only read Mackie control data from Logic and never send anything back to it. Unless you delete your control surfaces preferences, Logic Pro will now always send your selected track name to Open Stage Control from all your songs !

For now, you can quit Open Stage Control and Logic

Part 2 : Configuration

Open Stage Control will need some additional linux tools to be able to get access to some of your folders and interact with Logic Pro

Go to the Apple Store and instal Xcode, It will take a while…

Open a terminal window and instal Homebrew :
run the command : /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Don't forget to read your terminal screen and to run the returned 2 command lines :

In the same terminal window, we need to also install Node :
run the command : brew install node

Just in case, when done, close this Terminal window and open a new one

In this new terminal we have to cd to the OpenStageControl_modules folder. (It is inside the OpenStageControl folder)
Easiest way is to type : cd a space and to drag the OpenStageControl_modules folder from the Finder to your terminal window
you should have something like this


:
Enter
and terminal will return : YourUserName@youruser OpenStageControl_modules %

Let instal the right communication tools to be able to get all your articulations and Library picture :

Run the command : npm install xml2js
Then the command : npm install glob
And the command : npm install plist

Quit the terminal app an have a look in your OpenStageControl_modules folder.

If everything went right, you should find a node_modules folder, and 2 files : package-lock.json and package.json

Go back to the OpenStageControl folder, it contains a folder named OpenStageArticulations
Move it to Users/YourMacPersonalUserFolderName/Music/Audio Music Apps/Articulation Settings

Congratulations, you are done with the geekiest part of the installation and quite ready to go!!!

Part 3 : Articulations first launch

LogicMagicalExternalModule.js need to know your Mac personal user folder name to get the correct path to your articulations and pictures, you will need to correct 2 lines in the code.
I like to use Sublime text for this, but you should be able to do it with any text editor
https://www.sublimetext.com/3

So, open LogicMagicalExternalModule.js in your favorite text editor and correct the file @ lines 72 & 78. Just replace yourusernamehere by your Mac personal user folder name.
(The file is in the OpenStageControl/OpenStageControl_modules folder)


Save the file and it is done !

Now it is time to open Open Stage Control
MIDI : same as before
Load : .../OpenStageControl/Articulations_forLogic_byPierre/Articulations_forLogic_byPierre.json
Custom-module : .../OpenStageControl/OpenStageControl_modules/LogicMagicalExternalModule.js

Press Play

Congratulations, everything should be properly configured now !

You can now open Logic, create a new song with a new software instrument named "Instrument" an Open stage control should return you a picture and some articulations for this track !!!

Part 4 : Configure everything with your template

Articulations is matching your Logic selected track name with :

  • your Articulations in the folder : OpenStageArticulations :
    Users/YourMacPersonalUserFolderName/Music/Audio Music Apps/Articulation Settings/OpenStageArticulations

  • your Pictures, in the folder Libpictures :
    /Users/YourMacPersonalUserFolderName/Documents/OpenStageControl/Articulations_forLogic_byPierre/Libpictures

Due to copyright reason, I'm unable to include library pictures in this folder, you will have to put your own, but Google image is your friend :wink:

Articulations is matching your selected track name from logic with keywords between [ ] in articulations file name and in picture file name.

You have to active Midi Remote Global on channel 16 in Logic's Midi Preferences :

My template naming convention is as follow for each track name in Logic :
LIBRARYNAME Instrument name

to get the correct library image displayed I'm naming the picture [LIBRARYNAME] into the Libpictures folder
Each track name containing LIBRARYNAME in their name will display the same picture

To get the correct articulations displayed I'm saving a copy of my articulations settings named [LIBRARYNAME Instrument name] into the OpenStageArticulations folder

That way, all my old projects having the same naming convention, Open Stage Control will always display the correct articulations and the correct Library image for each track !

A last thing :
Articulations only read the content of OpenStageArticulations and Libpictures folders on launch.

When you are configuring your template, adding new articulations or library images, you will have to stop and relaunch the open Stage control server to be able to use the one you have just added.
A quicker alternative is to open LogicMagicalExternalModule.js in your favorite text editor. Even without modifying it, each time you will save it, the content of OpenStageArticulations and Libpictures folders will be refreshed and your modifications reflected !

This is a part of my template for your naming inspiration :
(the first letter v is never included in my articulation or library name, it just means that this track is on Vienna ensemble pro)

For my template , my pictures are named as this in my Libpictures folder :
[CS].jpeg, [BBC].jpeg, [APPA].jpeg, [CINEW].jpeg, etc...

For each articulations used in my template, I've made a "save as" in the OpenStageArticulations folder from my Logic template. They are named : [BBC Piccolo], [BBC Flute], [BBC Flutes a3] [CINEW Hautbois], [BBC Violins1], [CS Violins1], etc, etc...

If I'm not clear, LowweeK75 explains this well in this post :

Congratulations, that's great!

I'm happy to contribute to your product. Let me know if you need something :slight_smile:

I'll check the code, there might be some improvement over my own solution.

Actually, getting the track name using Mackie is nice. I may switch to MCU instead (I need the timecode & bars also) of TouchOSC. That'd be one tool less in the way.

1 Like

How did you get the library picture to display dynamically?

I’m trying to do that with my cubase template. I have dynamic articulations but having a picture of the library would be an added bonus

Hi @Mike1 , my custom module has access to a picture folder in my Mac. It matches picture name with track name (same principle as articulations).
Have a look to the custom module code :wink:
Cheers

Thank you for the reply. I’ll take a look at the module and see if I can adapt it to cubase

1 Like

Hi @pieca I created an account just to say thank you for the great work! :slightly_smiling_face:

One question about Xcode dependency, does it have to be installed to create the npms, or can I copy the node_modules folder over from another computer with Xcode? In tests, it appears selecting an articulation doesn't change it in Logic with the latter setup. Thoughts?

Thanks,

Eric

1 Like

Xcode is MANDATORY!

Does pictures works?
If not you should install all nodes modules from your computer…. :innocent:

If pictures works have a 2nd look to the path to your articulations folder from the external module

@pieca Thanks for the quick reply. Yes, the picture switching works and the art. path in LogicMagicalExternalModule.js is correct.

No worries. I'll run through the Xcode install, Brew and npm installs on this 2nd machine. I was just hoping to save 13GB of drive space. :wink:

@pieca Interesting update: I started the Xcode install. While it was downloading I installed Brew, node, and the npms.

When Xcode finished installing I started OSC and everything worked except the art. switch updating Logic. I checked my Control Surface setup, that was good. Then I realized I didn't have the Midi Remote turned on and set to ch.16. :flushed: Did that and now magically the switch updated in Logic. Yay!

I then closed Logic and OSC, deleted Xcode.app, emptied the Trash and started Logic and OSC. It continues to work! More yay! :joy:

I don't know what's going on, given your comment that Xcode is mandatory, but it appears to work without Xcode. (Unless I'm bonkers - which is very possible. :upside_down_face:) Perhaps it's just needed for setup? But then I ran Brew, node and the npms before Xcode finished installing.

Can anyone else confirm running without Xcode?

Thanks,

Eric

Maybe Xcode isn’t mandatory…

This is what I’ve found :
« You won’t need Xcode to use Homebrew, but some of the software and components you’ll want to install will rely on Xcode’s Command Line Tools package. »

I can’t says more….
Anyway, I’m glad it does work for you !!!!

Looks like Xcode Command Line Tools can be installed as part of Homebrew. I uninstalled Homebrew and Command Line Tools and reinstalled and noticed these lines in Terminal as part of the Homebrew install.

@pieca @LowweeK75 @jean-emmanuel After updating to v1.25.2 I'm getting the following error in the server console:

(ERROR) Custom module loading error
undefined:1
{"libraries":]}
             ^

SyntaxError: Unexpected token ] in JSON at position 13
    at JSON.parse ()
    at /Users/eric/OpenStageControl/OpenStageControl_modules/LogicMagicalExternalModule.js:234:20
    at Script.runInContext (node:vm:139:12)
    at Object.runInContext (node:vm:289:6)
    at CustomModule.load (/Applications/open-stage-control.app/Contents/Resources/app/server/src/server/custom-module.js:127:1)
    at new CustomModule (/Applications/open-stage-control.app/Contents/Resources/app/server/src/server/custom-module.js:87:1)
    at new OscServer (/Applications/open-stage-control.app/Contents/Resources/app/server/src/server/osc/index.js:19:1)
    at Object.353.../custom-module (/Applications/open-stage-control.app/Contents/Resources/app/server/src/server/osc/index.js:209:1)
    at o (/Applications/open-stage-control.app/Contents/Resources/app/server/node_modules/browser-pack/_prelude.js:1:1)
    at /Applications/open-stage-control.app/Contents/Resources/app/server/node_modules/browser-pack/_prelude.js:1:1
(INFO) Server started, app available at 
    http://127.0.0.1:8080
    http://192.168.68.89:8080

I've attached my load and custom module files. I note I don't have the /Applications/open-stage-control.app/Contents/Resources/app/server/src/ folder. I grabbed it from Github and reloaded, but no change. This is what I'm seeing.

I'm sure I've messed something up. Any help is appreciated. :crazy_face:

Thanks,

Eric

Articulations_forLogic_byPierre.json (7.0 KB)
LogicMagicalExternalModule.js (12.0 KB)

Realized my Logic articulations went missing when I added them to this project. I must have moved them instead of copied them. After restoring them, I now have the following error.

(ERROR) Custom module loading error
undefined:1
{"libraries":[{"library":"BBC Xylophone","articulations":[{"Hits":0,"Rolls":1}],"symbols":"#5E81AC,#5E81AC"},{"library":"BBC Violas","articulations":[{"Legato":0,"Long":1,"Long CS":2,"Long Flautando":3,"Spiccato":4,"Staccato":5,"Pizzicato":6,"Col Legno":7,"Tremolo":8,"Trill Maj 2nd":9,"Trill Min 2nd":10,"Long sul Tasto":11,"Long Harmonics":12,"Short Harm":13,"Bartok Pizz":14,"Long Marc Att":15,"Trem Sul Pont":16,"Tremolo CS":17,"Long Sul Pont":18,"Spiccato CS":19}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#f94144,#f3722c,#EBCB8B,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#EBCB8B,#bb3e03,#5E81AC,#5E81AC,#5E81AC,#f94144"},{"library":"BBC Vibraphone","articulations":[{"Hits":0,"Rolls":1}],"symbols":"#5E81AC,#5E81AC"},{"library":"BBC Tubular Bells","articulations":[{"Hits":0,"Rolls":1,"Hits Damped":2}],"symbols":"#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tuba","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Trumpets a3","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Trumpet 4","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Trumpet 3","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Trumpet 2","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Trumpet 1","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Triangle","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Toys","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Timpani","articulations":[{"Hits":0,"Rolls":1,"Hits Soft":2,"Rolls Soft":3,"Hits HotRods":4,"Long Rolls HR":5,"Hits Damped":6,"Hits SuperDamp":7,"HR Hits Damp":8,"Hits Damp Soft":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tenor Trombones a3","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tenor Trombone 3","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tenor Trombone 2","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tenor Trombone 1","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tenor Drum","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tambourine","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Tam Tam","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Snare 2","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Snare 1","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Piccolo","articulations":[{"":undefined,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8,"Rips":9,"Falls":10,"Legato (Ext)":0}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Piatti","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Oboes a3","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Multi-Tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Oboe 2","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Multi-Tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Oboe 1","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Multi-Tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Military Drum","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Marimba","articulations":[{"Hits":0,"Rolls":1}],"symbols":"#5E81AC,#5E81AC"},{"library":"BBC Horns a4","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"
Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Horn 4","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Horn 3","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Horn 2","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Horn 1","articulations":[{"Legato (Ext)":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7,"Trill Maj 2nd":8,"Trill Min 2nd":9}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Harp","articulations":[{"Sustained":0,"Damped":1,"Damp Medium":2,"Bisbigl Trem":3,"Gliss Fx":4}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Glockenspiel","articulations":[{"Hits":0,"Rolls":1}],"symbols":"#5E81AC,#5E81AC"},{"library":"BBC Flutes a3","articulations":[{"Legato (Ext.)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Flute 2","articulations":[{"Legato (Ext.)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Flute 1","articulations":[{"Legato (Ext.)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Cymbals","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Crotales","articulations":[{"Hits":0,"Hits Bowed":1}],"symbols":"#5E81AC,#5E81AC"},{"library":"BBC Clarinets a3","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Clarinet 2","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Clarinet 1","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Celli","articulations":[{"Legato":0,"Long":1,"Long CS":2,"Long Flautando":3,"Spiccato":4,"Staccato":5,"Pizzicato":6,"Col Legno":7,"Tremolo":8,"Trill Maj 2nd":9,"Trill Min 2nd":10,"Long sul Tasto":11,"Long Harmonics":12,"Short Harm":13,"Bartok Pizz":14,"Long Marc Att":15,"Trem Sul Pont":16,"Tremolo CS":17,"Long Sul Pont":18,"Spiccato CS":19}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#f94144,#f3722c,#EBCB8B,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#EBCB8B,#bb3e03,#5E81AC,#5E81AC,#5E81AC,#f94144"},{"library":"BBC Celeste","articulations":[{"Sustained":0,"Damped":1,"Damp Medium":2}],"symbols":"#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bassoons a3","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bassoon 2","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bassoon 1","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Basses","articulations":[{"Legato":0,"Long":1,"Long CS":2,"Long Flautando":3,"Spiccato":4,"Staccato":5,"Pizzicato":6,"Col Legno":7,"Tremolo":8,"Trill Maj 2nd":9,"Trill Min 2nd":10,"Long sul Tasto":11,"Long Harmonics":12,"Short Harm":13,"Bartok Pizz":14,"Long Marc Att":15,"Trem Sul Pont":16,"Tremolo CS":17,"Long Sul Pont":18,"Spiccato CS":19}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#f94144,#f3722c,#EBCB8B,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#EBCB8B,#bb3e03,#5E81AC,#5E81AC,#5E81AC,#f94144"},{"library":"BBC Bass Trombones a2","articulations":[{"Legato":0,"Long":1,"Staccatissimo":2,"Marcato":3,"Long Cuivre":4,"Long Sfz":5,"Long Flutter":6,"Multi-tongue":7}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bass Drum 2","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bass Drum 1","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Bass Clarinet","articulations":[{"Legato (Ext)":0,"Long":1,"Trill Maj 2nd":2,"Trill Min 2nd":3,"Staccatissimo":4,"Tenuto":5,"Marcato":6,"Long Flutter":7,"Multi-Tongue":8}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC Anvil","articulations":[{"Anvil":0,"Bass Drum 1":1,"Bass Drum 2":2,"Cymbals":3,"Military Drum":4,"Piatti":5,"Snare 1":6,"Snare 2":7,"Tam Tam":8,"Tambourine":9,"Tenor Drum":10,"Toys":11,"Triangle":12}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC"},{"library":"BBC 2nd Violins","articulations":[{"Legato":0,"Long":1,"Long CS":2,"Long Flautando":3,"Spiccato":4,"Staccato":5,"Pizzicato":6,"Col Legno":7,"Tremolo":8,"Trill Maj 2nd":9,"Trill Min 2nd":10,"Long sul Tasto":11,"Long Harmonics":12,"Short Harm":13,"Bartok Pizz":14,"Long Marc Att":15,"Trem Sul Pont":16,"Tremolo CS":17,"Long Sul Pont":18,"Spiccato CS":19}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#f94144,#f3722c,#EBCB8B,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#EBCB8B,#bb3e03,#5E81AC,#5E81AC,#5E81AC,#f94144"},{"library":"BBC 1st Violins","articulations":[{"Legato":0,"Long":1,"Long CS":2,"Long Flautando":3,"Spiccato":4,"Staccato":5,"Pizzicato":6,"Col Legno":7,"Tremolo":8,"Trill Maj 2nd":9,"Trill Min 2nd":10,"Long sul Tasto":11,"Long Harmonics":12,"Short Harm":13,"Bartok Pizz":14,"Long Marc Att":15,"Trem Sul Pont":16,"Tremolo CS":17,"Long Sul Pont":18,"Spiccato CS":19}],"symbols":"#5E81AC,#5E81AC,#5E81AC,#5E81AC,#f94144,#f3722c,#EBCB8B,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#5E81AC,#EBCB8B,#bb3e03,#5E81AC,#5E81AC,#5E81AC,#f94144"}]}
SyntaxError: Unexpected token u in JSON at position 6243
    at JSON.parse ()

The number of BBC articulations parsed above matches the number of .plist files (57), so I'm not sure where to look next.

Edit: Found it. Corrupt articulation file with undefined articulation number.

{"library":"BBC Piccolo","articulations":[{"":undefined,"Long":1,...

Hopefully this helps someone in the future. :sweat_smile:

I followed all the steps here and it worked. But to make my own layout some doubts arose.

  1. Is the file I have to edit the joints OpenStagearticulation? One file for each library? Do I edit this file in text editor or xcode?

  2. I have very little experience with code but I'm here trying to follow the steps.

  3. How do I configure the layout in openstage control?

Thank you for your attention.

I'm totally new to OSC, and I'm guessing that this is a dumb question, but can anyone tell me how I run this on my iPad?

Just flash the QR code on the OSC app window :wink:

1 Like