Questions & Answers

Add performance "scripting" language...

+16 votes
asked Jan 8, 2016 in Notion Feature Requests by kmlandre (1,400 points)

It would be great to have some sort of scriptable interface to the notated score.

The workflow could go something like this:

1) Select a section or sections of the score.
2) Right-click on any portion of the selected section.
3) Select a "Performance Script" menu item, which has sub-items like "Presets", "User Scripts", and "Empty Script".
4) A basic text-editor window pops up and displays the contents of the script and three buttons at the bottom: "Save", "Cancel", and "Apply".
5) The script looks something like the following:

/* ScriptName: Randomize Note Start and Velocity, Overlap Note Starts and Ends, and Shift Octave Down Description: Pulls notes slightly ahead in time with some notes lagging behind, but preserves the duration of the note.  Varies the velocity of the note plus or minus twenty relevant to dynamic and articulation markings.  Also causes an overlap between the note start and ends for a legato effects. */  

ChangeNoteStarts(max:+10, min:-5, KeepDurations); ChangeNoteVelocities(max:+20,min:-20,KeepCurrentVelocityAsCenter,RampToDymamicMarkings); OverlapNoteStartAndEnd(max:+10,min:+10); Transpose(-12);

6) Modify any script lines as needed then click the "Save" and/or "Apply" button(s).
7) Under the hood, Notion modifies the performance parameters of the selected notes.

This scripting would be IN ADDITION TO the existing custom playback rules, not as a replacement.

Kurt M. Landre'

4 Answers

0 votes
answered Jan 9, 2016 by kmlandre (1,400 points)
selected Feb 24, 2016 by kmlandre
Best answer

While I understand the need for precision and detail in software design, I believe the the actual story needs to be defined by the product owner and not the end user.
Without a more in-depth knowledge of the source code and design philosophies behind the software a discussion of too many details seems premature. The request as listed was intended only as an example.

I think the intent and purpose of my request is still clear: I would like a single, unified, scriptable interface that allows me to manipulate both note and performance data.

I will leave the design and specific implementation to the developers.
+1 vote
answered Jan 8, 2016 by AlexTinsley (906,360 points)

Thanks for the great detail on your feature request.

The green on black is resonating to look at. yes

If anyone else agrees, or disagrees, please vote on it. 

+1 vote
answered Jan 9, 2016 by martinkutschker (2,980 points)
You ask for a "performance scripting language" which IMHO implies that it is exectuted during runtime. Yet your example looks to me more like a "action/macro scripting language". Beacuse a)  think a note could only be delayed at playback and b) more important during playback any script would affect all of a given staff otherwise things woul get very messy (overlapping script regions?!?!).

Anyway I have asked (BTW without much response) both types of scripting in the old forum. Even with licence research for JavaScript implementations and Lua. In case you're interested, both Google's JS implementation and Lua can be used with closed source software.

To get any +1 from me, please split the request up into macro/action and live/performance. The difference is that with the former you shoud be able to automate stuff like adding staves, bars, notes, etc. That is everything that can be done via keybpard/mouse should be scriptable. The latter may only modify notes and includes changing duration, pitch, etc
+1 vote
answered Jan 9, 2016 by martinkutschker (2,980 points)
It's not the product owner's job to make lonely decisions about what should or shouldn't go into his or her product. The product owner must work together with the customers/users to define new features based on popularity and technical feasability (incl. production costs). And probably marketing wants a few (useless) things as well just because they look good or a competitor has it.

Now for my detailed argumentation:

I tried to offer other users choices on vote to vote for. My reasoning is that an all-singing-and-dancing scripting language may be a goal way too big for Notion 6. So I tried to split it up in the too areas of actions and performance. You want it both (me too), but other users may have needs only for one of them. In this case the devlopers can implement to type of scripting most requested for.

I also suggested two existing languages not only for the benefit of the devlopers. Creating a new language takes time to develop and OTOH users have to invest time to learn it (for a single purpose, scripting of Notion). The advantage of JavaScript is that it is widely know in Web development and is starting to be used on ther server too (in the guise of Node.js). Lua is lesser known, but is used as an embedded language in a number of products. The point is that users are able to find many resources on how to write code in JavaScript or Lua. They won't find nothing than whatever PreSonus will come up as a documentation. So I want users to vote for their language of choice. At least I do not want to waste my time on a proprietary language. There is IMHO absolutely no need for yet another language. But pick any other, I'm also fine with Ruby or Phyton, but don't make it Lisp ;)