Microtonal Support


Would it be possible to update us on the status of this topic? What I’m interested in is being able to individually fine tune each note without the the need for using a MIDI pitch bend command, which would require the proliferation of channels (or staves in the case of Sibelius). As per your previous comments, it seems this will not be problem. What I’m also interested in, is if those adjustments can be connected to the use of custom accidentals (or any accidental)? This way these fine tunings are automatic (once configured by the user) and won’t require manual adjustment inside of Play Mode (I’m assuming this would occur in Play Mode).

(I was at the NYC demonstration last night and I meant to followup up on the microtonality questions, but we ran out of time. And thank you for the presentation! It was really good and I’m looking forward to more great features coming along.)

Sorry that we didn’t get a chance to discuss this further in NYC, Jude. We had a hard stop and they were really serious about throwing us out of the building by 9pm!

The idea for playback is that we will be able to use VST Note Expression in HALion and other enabled plug-ins to allow the fine tuning of pitch for individual notes on the same channel. We don’t have Note Expression support implemented yet, and I can’t say for sure when it will be implemented, but the plan is that this is the way it will be done.

Certainly, when we get there, the amount of sharpening or flattening of the pitch in playback will be determined by the pitch delta (i.e. the number of EDOs by which the accidental raises or lowers the written pitch) defined in the tonality system.

The above statement has me confused. Will all microtonal adjustments require being inside of some sort of EDO? Many systems of just intonation and temperament are explicitly not equal divisions of the octave; so I’m not sure why EDOs even play a role in this system.

My initial reading of this statement leads me to believe I have to figure out how many pitches occur in the octave, then I can use the tonality system in conjunction with VST Note Expression to individually flatten or sharpen a particular pitch.

For instance: if I’m working in a fixed, 21-pitch system of just intonation (i.e., where the sharps and flats are not enharmonically equivalent), I would set my “pitch delta” to 21, then individually select the accidental that applies to each of the 21 discrete pitches – in this case, 7 natural pitches, plus 7 sharps, plus 7 flats – and then use HALion’s Note Expression to sort how much the particular naturals, sharps, and flats are raised and lowered, respectively.

Is my description correct above? Admittedly, this topic is difficult to explain over a messaging board.

My preference would be to assign one of the many accidental glyphs available a property of lowering or raising a pitch automatically once it’s placed in the score. (Although I can already predict problems with my system.)

It sounds like you’re all working on this problem, and I appreciate the effort. it’s not an easy problem to solve.

I’m no expert in this area (to put it mildly) but as I understand it just intonation doesn’t fit neatly into a system whereby you can express each accidental as a fixed number of EDOs, because the precise amount by which the pitch is raised or lowered depends on the scale in use. As such, Dorico’s system isn’t intended to handle just intonation.

It is my understanding, however, that you can use Scala files in HALion to provide playback that approximates just intonation, without needing to do anything specific in the host program (whether that’s Dorico or Cubase).

Whichever way to try to slice it, you have the basic limitation that the MIDI standard for defining “notes” thinks there are exactly different 12 notes in an octave. Scala lets you make a “global” tweak to change the pitch of those 12 notes away from equal temperament. Presumably, the VST3 note-based pitch controls are relative to the “base line” pitches set by Scala.

So you may still hit some limitations if you want to work with “precise” just intonation and a scale of more than 12 notes, because you want to pitch-shift the same “MIDI note” by two different amounts.

Actually, Scala doesn’t do anything that can’t be done a different way, i.e. by creating samples for every MIDI note in whatever temperament you like. But of course it’s much more convenient to use Scala, especially if you want to experiment with different temperaments.

There is also the practical problem of how accurately the sampler interprets the pitch-shifting data. If it rounds off pitch shifts to the nearest cent anyway, much of this discussion becomes irrelevant. I’ve no idea what HALion does internally, but the user interface only lets you “fine-tune” a patch in increments of 1 cent. In the old Creative Labs soundfont player engine, this was even more obfuscated, because the engine used pitch increments that were smaller than 1 cent, but not an “exact” fraction of a cent, so when you specified a “1 cent pitch change” you actually got either more or less than 1 cent, depending how the rounding errors worked out.

Here be dragons, as the medieval map-makers used to say…

Fortunately, the issues are surrounding playback of microtonal music. It seems that custom accidentals based upon established libraries like Ben Johnston notation and Scweintz/Sabat notation (my understanding is that these glyphs either have been or will be brought into Dorico), so the actual notation of the scores won’t be much of a problem.

I’m excited to hear how the playback problem is address and eventually solved. Hopefully it will be simple and elegant; my understanding is that MuseScore has a fairly simple method for retuning pitches. From the sound of it, the HALion note expression will be more difficult than MuseScore, but less difficult than Sibelius.

Just a note- Scala files can be used in Steinberg Halion, the sampler, but it is not available in Halion Sonic SE, the player that ships with Dorico.

Jude, a fixed scale of just intonation can be approximated arbitrarily close by an EDO. Your 21 note scale, which I assume to be C C# Db D D# Eb etc. where sharp and flat alter by 25/24 and the white notes are 1/1, 9/8, 5/4, 4/3 etc. could be defined in 72edo so that the white note scale is defined in steps as (0,)12,11,7,12,11,12,7 and sharp and flat defined as 4 steps. If you want better accuracy in the playback, you can use a larger EDO, such as 205EDO.
Any accidentals and any EDOs can already be used and defined in Finale, with correct playback (polyphonic, without pitchbend). For example, I use 31EDO notation and playback in Finale for ¼-comma meantone; they’re virtually identical. However, a re-tunable instrument has to be used, with tuning scripts such as scala, and one is limited to 128-note tunings on a single midi channel. Obviously this is not enough for larger EDOs so Dorico’s proposed VST3 note expression method is extremely welcome.
However, music with fixed scales in Just Intonation is a special case, whereas in principle JI has an infinite number of pitches and the notation (Johnston, Sabat-v.Schweinitz, etc.) likewise an infinite number of accidental combinations. A Johston symbol font is unlikely to include all the combined accidentals needed for notating a string quartet by Johnston himself. There may be a symbol for the seventh harmonic of the seventh harmonic (77) but what if the composer decides need that flattened by 25/24 and 77b is missing in the font? For notating JI, it would be ideal to be able to combine accidentals freely and have the combinations play back correctly. No notation software is able to do this - “cumulative” accidentals -, although Finale and Mus2 do handle non-equal tunings with microtonal accidentals.
Finale is already capable of notating JI the way Jude describes above (”…those adjustments can be connected to the use of custom accidentals (or any accidental)”. This is rather awkward, though, because in this case the accidentals are manually inserted text symbols, and pitchbends are used for playback in addition to script-tuning (for the unequal white note scale). But the accidentals do send out the pitchbend messages themselves. Dorico promises less if I understood correctly.

As a microtonal composer who often works in JI, I’m disappointed by Dorico’s decision to leave out full support for this important area of 20th and 21th Century music, apparently the only reason being that it’s trickier to program than EDO’s - only few of which are as popular and wide-spread among microtonalists as JI.

It’s not missing. I designed the Johnston accidental glyphs in Bravura myself, and they combine very nicely.

For notating JI, it would be ideal to be able to combine accidentals freely and have the combinations play back correctly.

My discussions with Daniel 3 years ago led me to believe this is exactly what Dorico will offer. Set your score to play in J.I. in the key of C, and each accidental symbol adjusts by a number of cents (hopefully to 4 decimal places to handle multiplying hugely built-up accidentals without a rounding error). Choose a provided Johnston library of some more common accidentals and add more as your piece requires them.

Correct playback will require more work in the VST area, but it is definitely planned.

Well, this is excellent news! Having to build up an ever-expanding library of compound accidentals is not as economic or elegant than having just the small number of primary accidentals and being able to add them up directly in the score, but in all fairness, the more complex the accidental combination, the more remote and thus the rarer the ratio is, so in practice one gets by with a reasonable-sized library without having to add new compound symbols in it too often.
I’m very glad to hear I was mistaken - I thought that Dorico is going to concentrate on equal divisions, and non-equal systems, while not ruled out, are not in the works in any foreseeable future. The system you describe where the accidentals do not send out midi note transpositions as in EDOs (at least the way Finale deals with EDOs) but tuning adjustments in the VSTi - with some other method than pitch bend - is precisely what is needed for JI and other unequal temperaments.

It would be good to have the option for extended accidentals to be above the notes too.
File attached.
Elegy for Fallen Wellies.jpg

I was wondering when the play back will be supported. It would be great if someone could answer these questions:

  1. How does VST3 implements the microtonal? Does it round to nearest cent?
  2. Dorico need to use a better data structure to accommodate customer’s needs. Scala is one!
  3. What is the smallest pitch change ( as a fraction of cent) that human can detect?

Here is wikipedia’s article on “cent” and just noticeable difference (JND) - did you look at this already?
“Note that the JND for pitch difference is 5–6 cents. Played separately, the notes may not show an audible difference, but when they are played together, beating may be heard (for example if middle C and a note 10 cents higher are played). At any particular instant, the two waveforms reinforce or cancel each other more or less, depending on their instantaneous phase relationship. A piano tuner may verify tuning accuracy by timing the beats when two strings are sounded at once.”

Steve Parker that looks like a pretty terrific trombone quintet!

Thank you, Stephen! If you have a quintet of trombones you are welcome to the score?

Following that we have the largest JND ( solo, combined, complex sine wave, simple sine wave,etc) is attained at 20 Hz and that is 21/20 = 1.05 or as you mentioned is 5 cents. That means that developers can focus on cents ( I suppose they are doing ), when they are developing the data structure.

Thank you Stephen.

Would be nice if someone could answer they other two questions. :slight_smile:

The JND depends wildly on context. Two sine waves - anyone can hear the difference between 700 and 702 cents.
In some contexts, it is possible to hear less than a cent. I’ve spent years trying to pin down what is ‘good enough’ in terms of equivalent ratios, but without real satisfaction.

Something is wrong there. A frequency ratio of 1.05 is 84 cents (nearly a semitone) not 5 cents. Measuring musical intervals, “cent” means 1/1200 of an octave or 1/100 of a semitone.

Yep. The formula (for anyone that cares) is log (x/y) x 1200/log 2 where x/y is the ratio.

Hello everyone,

Microtonal music is a focus for me both as a composer and programmer. I’m the inventor of Tonal Plexus keyboards and everything found at http://hpi.zentral.zone

I’m very glad to see microtonal support in Dorico, and would like to offer my help to the development team on this topic in whatever way I can. I use an expanded notation system for my microtonal music http://musictheory.zentral.zone/huntsystem1.html and would be very interested to know if Dorico could be used to produce this expanded staff output.

As far as microtonal output, until Dorico’s native microtuned output is working (which it sounds like could take a long while, for reasons related to VST3), a feature which would be very helpful in the mean time would be to provide external MIDI output. I heard from a Dorico team member that this is planned for a future release.

As soon as Dorico supports sending MIDI to virtual ports, Dorico users can simply connect playback to other apps in order to get microtonal playback. The free software Scala provides playback functionality in a limited way, though it’s hard to get it working on a Mac. I’ve written several commercial apps for this purpose, the best known of which is called microsynth. It is a multi-timbral microtonal soundfont synth with a lot of advanced functions not found in any free tool. Features list and download at http://hpi.zentral.zone/microsynth

Also, if anyone has questions for me about microtonal stuff in general, rather than posting on the Dorico forum (where the focus needs to be Dorico!), please reach me through email at http://hpi.zentral.zone/email Thanks.

Best Regards,
Aaron Andrew Hunt

A lot of notation systems (including Ben Johnston’s) would be catered for by being able to define the pitches of notes in a key (for example C major: the ‘white’ notes), as well as self defined accidentals. This isn’t too far from current functionality and would allow a lot of non-equal systems to be easily used.