Languages

Breadcrumb

Microtonal / Just Intonation notation playback for musescore 3

I am interested to take up this issue following discussions in the feature request forum
with Marc Sabatella I am reposting here. Looking towards ways of implementing a seamless
integration of microtonal accidental notation and playback in musescore 3 with a possible
MIDI output option (MTS). I am new to coding, github, etc. but not afraid of the
command line and learning. My basic approach would be to allow a definition
of the tuning of the standard notes based on the (enharmonic aware) pitch
class property: essentially to be able to tune the series of fifths as one likes, and
working with the assumption that the note pitch class property (being a
signed integer) can be extended to represent various "cycles" like 31ED2 etc.
(making circles of fifths at whatever point desired, or leaving them
untempered, or defining them for example as quarter-comma fifths, etc. ---
thus the standard definition would be -1/12 Pythagorean comma tempered which
gives an enharmonic equivalence after 12). Then USER-defined accidentals (not
the standard b n #) could be added to precede any note (including strings of
accidentals), and these could be defined as modifications by ratio/cents.

One concern here is the proposed move to eliminate composite symbols. Ideally
it should be possible to only to use the preset symbols in Bravura as single characters,
but as STRINGS, so that one can combine (for example) the major third (syntonic comma)
with the seventh harmonic (raised or lowered) etc.

Then one could (for example) have the program automatically determine the
tuning for any symbol combination and calculate cents deviations which could
optionally be made visible globally or case-by-case. Since musescore already
supports a polyphonic retuning note-by-note I believe it is the best
candidate to move in this direction, which would enable it to be the notation
of choice for microtonal notation/composition/sequencing workflows. I would
appreciate your help and advice moving forward. best, Marc Sabatmasa@plainsound.org

Comments

Hello, slowly getting up to speed: managed a compile of musescore 3 on macOS 10.11 (el cap) and am pleased to see the various microtonal accidentals including Extended Helmholtz-Ellis (HE). I am busy trying to get an overview of the code to attack my problem: microtonal playback (also through MIDI) directly from notated symbols.

I have a general question about symbols as they are currently structured in musescore: most accidentals are representable as single symbols, but the HE accidental symbols are designed to be combined, forming short strings (generally 1, 2 or 3 symbols) which, together with the tonal pitch class (tpc), can accurately depict various just intonation "ratio" intervals, within the realm of the humanly playable. (More complex ratios are best written simply as cents deviations). The HE notation, essentially, is graphically showing the prime factors, or the simple harmonic steps that lead to a given microtonal pitch.

--- next paragraph is an example of how just intonation represents intervals: basically as any reference frequency in Hz (represented abstractly by the ratio 1/1) and a set of rational multipliers which then reflect how humans perceive intervals & consonance ---

For example, the note A-FLAT_ARROW_UP (which in HE means raised by a syntonic comma) preceded by LOWER_BY_SEPTIMAL_COMMA (thus, in total, A preceded by two accidentals, a septimal sign followed by a flat with arrow) indicates that
1) Ab is tuned as a natural seventh (of B-FLAT_ARROW_UP),
2) which is a pure major third below D.
So starting from A as 1/1,
D would be 4/3 (in "normalised"/"pitch class" Partch-style ratios),
Bb is 16/15 (4/3 * 4/5),
Ab is 28/15 (16/15 * 7/4).

See attached jpeg. Ideal, that the accidental could be assembled (currently is faked as text), automatically positioned, and parsed to give a tuning value (automatically) and that the tuning value is cents could be toggled to display as in the picture. When playing MIDI, one could have the option of sending MIDI Tuning Standard Real-Time data (see attached pdf) in addition to the normal stream.

My question: is anyone familiar with the data structures used to represent the accidental, and about the possibility of defining them as a string of symbols which could be parsed to extract the ratio/tuning information from (for example) the smufl unicode definition? As long as I can determine which accidentals are combined and which tpc, order irrelevant, the tuning info could be extracted and automatically applied to the "tuning" parameter of Note.

Thanks for helping someone completely new to this development scene and sorry if I am asking something that is very obvious, any tips appreciated!

How many associations are possible? Would it make sense to hard code them all and give them an hardcoded tuning value ? Or user would need to define them ?

If user needs to define them, would it make sense for a user to add a FLAT_ARROW_UP to the note, and then to add LOWER_BY_SEPTIMAL_COMMA and see it move in front of the FLAT_ARROW_UP ? In this case, the accidentals could be independent and an array of accidentals associated with a note.
Or would the user wants to create accidentals LOWER_BY_SEPTIMAL_COMMA+FLAT_ARROW_UP with and put them in the palette in order to reuse them ?