Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow articulations to perform transformations on incoming notes #72

Closed
jtackaberry opened this issue Aug 10, 2019 · 0 comments
Closed
Labels
design Issue contains design details enhancement

Comments

@jtackaberry
Copy link
Owner

jtackaberry commented Aug 10, 2019

To provide more parity with Cubase expression maps output mapping, articulations should be able to:

  1. Transpose
  2. Adjust velocity via a multiplier (for e.g. accents)
  3. Interpolate velocity within a defined min and max value
  4. Interpolate pitch within a defined lower and upper note pitch

Interpolation works like outval = inval * (max-min)/127 + min and would be evaluated after the fixed adjustments.

Screen Shot 2019-08-11 at 01 55 25

Cubase also allows outputting a specific note length. The use-case for this is much less interesting IMO as fixing note lengths precludes massaging performances. Also, it's much harder to implement since it would require timing the note-off, potentially queuing it for a later execution of @block and then ignoring the actual note-off.

Design

Reabank

Propose these articulation level attributes:

  1. velrange=<min>-<max>
  2. pitchrange=<min>-<max>
  3. transpose=<numpitches> (can be negative)
  4. velocity=<coefficient> (A number between 0-10 allowing two decimals of precision)

The attribute names are a lot more verbose than the existing ones since a) these are pretty rare and b) the reabank GUI will eventually render the complexity/readability concerns of reabanks moot.

RFX

Use the new extensions capability to reserve an articulation extension for this feature. Stored in the extension:

  1. Transposition: 7 bits
  2. Velocity multiplier: 10 bits
  3. Min/max velocity: 7+7=14 bits
  4. Min/max pitch: 7+7=14 bits

This would be two 24-bit slots (if packed as (14+7) + (14+10)).

Velocity multiplier is divided by 100.0. 10 bits allows for a range of 0-10 with 2 decimals of resolution.

@jtackaberry jtackaberry added the design Issue contains design details label Aug 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
design Issue contains design details enhancement
Projects
None yet
Development

No branches or pull requests

1 participant