back to list

Human-editable score notations for micro music?

🔗Herman Miller <hmiller@IO.COM>

4/8/2007 2:31:05 PM

With all this discussion about the limitations of MIDI, I've been thinking about how I used to edit music in the old days before MIDI editors and piano rolls. Well, in the really old days it was pencil and staff paper. But in the early days of home computers, everything was done with ASCII text files. I mainly used a program called MUS-X1, which represented the basic musical events with letters, numbers, and punctuation symbols. To get a quarter note Middle C, you'd simply type "Q4C". Since the letters A-G were reserved for musical notes, eighth notes were represented by "O" instead of "E". Then a period was added for dotted notes: "O.3A" for a dotted eighth note A below middle C, and the symbols + and - for sharps and flats. You could specify key signatures and time signatures. It really was fairly easy to read and edit for the most part, and way faster to type than adding notes to a piano roll these days.

There really are two drawbacks with that kind of system, which is why I haven't done much looking at modern day equivalents like abc notation. One is that rhythms are limited to exact beats or fractions of a beat; this can be expanded by tying notes together, but it gets cumbersome to do things like casual "swing" rhythms or natural variations in timing. The other is that expression is difficult to add. MIDI at least gives you velocity sensitivity and continuous controllers.

On the other hand, the advantage over a piano roll is that you can work with complex notation systems without getting lost. If you're working with 171-ET and you need an interval of 100 steps, you don't have to physically count 100 steps between the notes! For reasons like that, I've occasionally thought about defining some kind of microtonal score language. It would take time to write a program that could translate that into something usable for music, but it might be worth the effort if it saves time in actually writing the music.

What sorts of notation systems like that are available, and how adaptable are they for use with user-defined tunings of any size? You'd pretty much need software that would let you start at any point in the score and play/render the music starting from that point, so you can hear the results immediately as you're editing. So it would have to have some kind of built in sound player or be configurable to launch a MIDI player on demand. But it wouldn't need to be very sophisticated; I managed to get by with MUS-X1 after all. I might consider something like microabc, but there are things I don't like much about abc notation....

Of course, Csound is always an option, and there are some advantages to that approach. Control over timing and expression is more direct. But it's very time-consuming to do anything with it, and not as readable as I'd like.

🔗Graham Breed <gbreed@gmail.com>

4/9/2007 1:24:08 AM

Herman Miller wrote:
> With all this discussion about the limitations of MIDI, I've been > thinking about how I used to edit music in the old days before MIDI > editors and piano rolls. Well, in the really old days it was pencil and > staff paper. But in the early days of home computers, everything was > done with ASCII text files. I mainly used a program called MUS-X1, which > represented the basic musical events with letters, numbers, and > punctuation symbols. To get a quarter note Middle C, you'd simply type > "Q4C". Since the letters A-G were reserved for musical notes, eighth > notes were represented by "O" instead of "E". Then a period was added > for dotted notes: "O.3A" for a dotted eighth note A below middle C, and > the symbols + and - for sharps and flats. You could specify key > signatures and time signatures. It really was fairly easy to read and > edit for the most part, and way faster to type than adding notes to a > piano roll these days.

Okay.

> There really are two drawbacks with that kind of system, which is why I > haven't done much looking at modern day equivalents like abc notation. > One is that rhythms are limited to exact beats or fractions of a beat; > this can be expanded by tying notes together, but it gets cumbersome to > do things like casual "swing" rhythms or natural variations in timing. > The other is that expression is difficult to add. MIDI at least gives > you velocity sensitivity and continuous controllers.

Right.

> On the other hand, the advantage over a piano roll is that you can work > with complex notation systems without getting lost. If you're working > with 171-ET and you need an interval of 100 steps, you don't have to > physically count 100 steps between the notes! For reasons like that, > I've occasionally thought about defining some kind of microtonal score > language. It would take time to write a program that could translate > that into something usable for music, but it might be worth the effort > if it saves time in actually writing the music.

Yes. The advantage of a piano roll is that you can control the exact timing. Staff notation works fine for human performance because you don't have to follow the mathematically strict rhythms.

> What sorts of notation systems like that are available, and how > adaptable are they for use with user-defined tunings of any size? You'd > pretty much need software that would let you start at any point in the > score and play/render the music starting from that point, so you can > hear the results immediately as you're editing. So it would have to have > some kind of built in sound player or be configurable to launch a MIDI > player on demand. But it wouldn't need to be very sophisticated; I > managed to get by with MUS-X1 after all. I might consider something like > microabc, but there are things I don't like much about abc notation....

Isn't microabc for typeset notation? What you're talking about is more for computer music control. There are different criteria involved and you can't really expect the same notation to work in both cases.

> Of course, Csound is always an option, and there are some advantages to > that approach. Control over timing and expression is more direct. But > it's very time-consuming to do anything with it, and not as readable as > I'd like.

I think Csound's difficult to beat as a low-level computer music notation. There are some people using pre-processors with it and I may go down that route one day. But I'm note sure how I could improve it and still get the same expressiveness. Maybe relative instead of absolute timing.

An obvious reason to change would be to get letters and symbols instead of numbers for the notes. But I'm finding it isn't really a problem to use numbers. I'm using decimal notation now, and I have one number with a fraction to denote the place on the decimal scale, and another number for quomma accidentals. That's an easy system to generalize.

The other thing is that a Csound score has nothing to do with staff notation and little to do with MIDI. Are you thinking of having the best of all worlds?

Graham

🔗Carl Lumma <clumma@yahoo.com>

4/9/2007 1:37:38 AM

Herman- Have you looked at MusicXML?

-Carl

🔗Gene Ward Smith <genewardsmith@sbcglobal.net>

4/9/2007 1:00:40 PM

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> I've occasionally thought about defining some kind of microtonal
score
> language. It would take time to write a program that could
translate
> that into something usable for music, but it might be worth the
effort
> if it saves time in actually writing the music.
>
> What sorts of notation systems like that are available, and how
> adaptable are they for use with user-defined tunings of any size?

I'll repeat my reommendation for Scala seq files. It's
the best score format I know of.

> You'd
> pretty much need software that would let you start at any point in
the
> score and play/render the music starting from that point, so you
can
> hear the results immediately as you're editing.

I think that would be a keen idea for seq files, presumably with
an option to play only some of the tracks if you so select.

> Of course, Csound is always an option, and there are some
advantages to
> that approach. Control over timing and expression is more direct.
But
> it's very time-consuming to do anything with it, and not as
readable as
> I'd like.

Again, I think Scala seq files are better.

🔗monz <monz@tonalsoft.com>

4/9/2007 1:47:15 PM

Hi Herman,

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> With all this discussion about the limitations of MIDI,
> I've been thinking about how I used to edit music in the
> old days before MIDI editors and piano rolls. Well, in
> the really old days it was pencil and staff paper. But
> in the early days of home computers, everything was
> done with ASCII text files. I mainly used a program
> called MUS-X1, which represented the basic musical events
> with letters, numbers, and punctuation symbols.
>
> <snip>
>
> On the other hand, the advantage over a piano roll is that
> you can work with complex notation systems without getting
> lost. If you're working with 171-ET and you need an interval
> of 100 steps, you don't have to physically count 100 steps
> between the notes!

One of the nice things about Tonescape is that it makes
it easier to work with tunings which have lots of notes.

Composing with 171-edo on your Pitch-Height (i.e., piano roll)
window is still a little daunting, but the Lattice window
makes it easy to see exactly which pitch you're hovering
your mouse over. Tonescape's Pitch-Height and Lattice
windows always work together in real-time as you compose
or "noodle".

Another nice feature of Tonescape's Pitch-Height view is
that scales which have unevenly-spaced steps are displayed
that way on the Pitch-Height. Thus, for example, i find
it *very* easy to work in the 31-tone chain of 1/6-comma
meantone -- you get used to the fact that, say, F# is the
skinny note that appears between two fat ones. (Which note
actually appears in that skinny space depends on which
note, i.e. letter-name, you chose for your origin.) Those
uneven sizes make navigation in the pitch-continuum very easy.

-monz
http://tonalsoft.com
Tonescape microtonal music software

🔗Herman Miller <hmiller@IO.COM>

4/9/2007 8:07:11 PM

Graham Breed wrote:

> I think Csound's difficult to beat as a low-level computer > music notation. There are some people using pre-processors > with it and I may go down that route one day. But I'm note > sure how I could improve it and still get the same > expressiveness. Maybe relative instead of absolute timing.

A Csound preprocessor is a distinct possibility. Macros can definitely help with ease of use in Csound, but there's only so far you can go with macros, and the macro preprocessor in Csound has some unfortunate quirks.

> An obvious reason to change would be to get letters and > symbols instead of numbers for the notes. But I'm finding it > isn't really a problem to use numbers. I'm using decimal > notation now, and I have one number with a fraction to > denote the place on the decimal scale, and another number > for quomma accidentals. That's an easy system to generalize.

It's easy enough to create a Csound instrument that responds to some kind of regular temperament notation, and I even had a set of macros for using Sagittal accidentals for JI.

> The other thing is that a Csound score has nothing to do > with staff notation and little to do with MIDI. Are you > thinking of having the best of all worlds?

I like the ability to get a keyboard performance directly from MIDI, but standard keyboards aren't all that useful for many of the tuning systems I'm interested in. If it wasn't for the convenience of plugins like Absynth and z3ta+, I might have stuck with Csound long enough to get some use out of it. I don't really need the ability to print out a score in staff notation.

🔗Herman Miller <hmiller@IO.COM>

4/9/2007 8:26:45 PM

Carl Lumma wrote:
> Herman- Have you looked at MusicXML?

I hesitate to look at any variety of XML for all the typing concerns, but well, if it's any good I could always dig up an XML editor.

But ugh, just look at that Wikipedia example for a whole note middle C!

http://en.wikipedia.org/wiki/MusicXML

The MUS-X1 equivalent would be something like:

0010 (100,4,4) W4C

(Not an exact equivalent since the Wikipedia example doesn't have a tempo, and MUS-X1 doesn't have a treble clef, but close enough).

I don't think MusicXML looks very suitable for editing by hand. Each individual note is several lines long, worse than a Csound score. Just look at one single note picked at random from one of the example files on the MusicXML page:

<note default-x="109">
<pitch>
<step>C</step>
<octave>3</octave>
</pitch>
<duration>4</duration>
<voice>2</voice>
<type>eighth</type>
<stem default-y="-57">down</stem>
<staff>2</staff>
<beam number="1">end</beam>
</note>

🔗Carl Lumma <clumma@yahoo.com>

4/9/2007 10:44:05 PM

> Carl Lumma wrote:
> > Herman- Have you looked at MusicXML?
>
> I hesitate to look at any variety of XML for all the typing
> concerns, but well, if it's any good I could always dig up
> an XML editor.
>
> But ugh, just look at that Wikipedia example for a whole note
> middle C!
>
> http://en.wikipedia.org/wiki/MusicXML

Yeesh.

> The MUS-X1 equivalent would be something like:
>
> 0010 (100,4,4) W4C
>
> (Not an exact equivalent since the Wikipedia example doesn't have a
> tempo, and MUS-X1 doesn't have a treble clef, but close enough).
>
> I don't think MusicXML looks very suitable for editing by hand.
> Each individual note is several lines long, worse than a Csound
> score. Just look at one single note picked at random from one of
> the example files on the MusicXML page:
>
> <note default-x="109">
> <pitch>
> <step>C</step>
> <octave>3</octave>
> </pitch>
> <duration>4</duration>
> <voice>2</voice>
> <type>eighth</type>
> <stem default-y="-57">down</stem>
> <staff>2</staff>
> <beam number="1">end</beam>
> </note>

Jeez. Forget I mentioned it. :)

-Carl

🔗Gene Ward Smith <genewardsmith@sbcglobal.net>

4/10/2007 1:13:14 PM

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> But ugh, just look at that Wikipedia example for a whole note
middle C!
>
> http://en.wikipedia.org/wiki/MusicXML

Butt ugly!

> The MUS-X1 equivalent would be something like:
>
> 0010 (100,4,4) W4C

Scala seq might be

10 note 0 960

or

10 note C.0 960

or

10 note 0.0 960

or even

10 note (0.0) 960

depending on what notation you want to use.

> I don't think MusicXML looks very suitable for editing by hand.
Each
> individual note is several lines long, worse than a Csound score.

It's quite simply horrible. I have yet to see a better
system than Scala. I'll issue a general challenge to
produce one. Any takers?

One thing a lot of people don't realize is that many
of us don't want to learn, eg, a new computer language.
We want to write music, not programs. Much too much
of the stuff out there is music-unfriendly.

🔗monz <monz@tonalsoft.com>

4/11/2007 12:23:50 AM

Hi Herman and Graham,

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:
>
> Graham Breed wrote:
>
> > I think Csound's difficult to beat as a low-level computer
> > music notation. There are some people using pre-processors
> > with it and I may go down that route one day. But I'm note
> > sure how I could improve it and still get the same
> > expressiveness. Maybe relative instead of absolute timing.
>
> A Csound preprocessor is a distinct possibility. Macros
> can definitely help with ease of use in Csound, but there's
> only so far you can go with macros, and the macro preprocessor
> in Csound has some unfortunate quirks.

BTW, Tonescape does allow the user to export a .tonescape
file as a Csound .csd file (that is, a unified file combining
the .orc and .sco files which go together).

Unfortunately, there is as yet no way to go the other direction,
and that's mainly because .tonescape files contain data which
no other software uses, mainly having to do with the Lattice.
I'm sure that Scala comes closest, and we certainly hope to
make Tonescape and Scala as compatible as possible at some
point in the future. (So far, many folks have had problems
getting Tonescape running on their system, and Manuel is one
of them, alas ...)

-monz
http://tonalsoft.com
Tonescape microtonal music software

🔗Herman Miller <hmiller@IO.COM>

4/11/2007 8:24:04 PM

Gene Ward Smith wrote:

> It's quite simply horrible. I have yet to see a better
> system than Scala. I'll issue a general challenge to
> produce one. Any takers?

Scala seq does look pretty simple compared with Csound scores. Still it seems a bit awkward for composing in. I'll see what I can come up with.

> One thing a lot of people don't realize is that many
> of us don't want to learn, eg, a new computer language.
> We want to write music, not programs. Much too much > of the stuff out there is music-unfriendly.

Well, on the one hand you can use a score editor, which is the closest thing to writing music. Some of them even allow you to customize accidentals, I believe, although I haven't done much exploration in that area. On the other hand you have MIDI editors, which are more directly associated with performances, taking input from devices that frequently act like piano keyboards (but other kinds of MIDI input devices are available; I've got a Yamaha WX7 wind controller for instance).

With all this technology, I've had a tendency to overlook the old-style text-based formats. They do have a learning curve, but the benefit is that you can type a string of notes more efficiently than entering it by clicking on a staff or a piano roll. Something like this:

<key Bb Eb>
<meter 3 4>
1: p;
q3B e.B=s4C qC#;
q [3F 4D F]. [3G 4E G]. [3A 4F A].;
q [1B 2B]. [1A 2A]. [1F 2F].|
2: q3Bb e.B=s4C e.C#sF;
q [3F 4D F]. [3G 4E G]. [3A 4F A].;
q [1B 2B]. [1A 2A]. [1F 2F].|

This is actually a brief example of a system I was thinking about implementing back in 2003 when I was between jobs. I was too busy with other things and decided it wasn't worth the effort. But now that I've got ways of notating most of the tuning systems I'm interested in, I might want to revisit the idea; it could be useful for testing notation systems at the very least.

🔗Gene Ward Smith <genewardsmith@sbcglobal.net>

4/12/2007 1:19:22 AM

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:
>
> Gene Ward Smith wrote:
>
> > It's quite simply horrible. I have yet to see a better
> > system than Scala. I'll issue a general challenge to
> > produce one. Any takers?
>
> Scala seq does look pretty simple compared with Csound scores.
Still it
> seems a bit awkward for composing in. I'll see what I can come up
with.

It no doubt is, but it's the easiest system to
compose in I have found.

> Well, on the one hand you can use a score editor, which is the
closest
> thing to writing music.

Highly recommended if you want to compose in 12-et,
or even meantone. Not otherwise.

> With all this technology, I've had a tendency to overlook the old-
style
> text-based formats. They do have a learning curve, but the benefit
is
> that you can type a string of notes more efficiently than entering
it by
> clicking on a staff or a piano roll. Something like this:
>
> <key Bb Eb>
> <meter 3 4>
> 1: p;
> q3B e.B=s4C qC#;
> q [3F 4D F]. [3G 4E G]. [3A 4F A].;
> q [1B 2B]. [1A 2A]. [1F 2F].|
> 2: q3Bb e.B=s4C e.C#sF;

This is better than a Scala seq file because...?
You get some abstraction, which might be useful
(Scala does timing numerically) but it looks a
bit of a mess and does nothing for tuning, which
for our purposes makes it useless.

🔗Herman Miller <hmiller@IO.COM>

4/12/2007 7:15:48 PM

Gene Ward Smith wrote:
> --- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:

>> <key Bb Eb>
>> <meter 3 4>
>> 1: p;
>> q3B e.B=s4C qC#;
>> q [3F 4D F]. [3G 4E G]. [3A 4F A].;
>> q [1B 2B]. [1A 2A]. [1F 2F].|
>> 2: q3Bb e.B=s4C e.C#sF;
> > This is better than a Scala seq file because...? Way faster to type, for one thing. Melodic lines and harmonic progressions can be organized in a way that's easier to follow. It corresponds more closely to what you would see in a notated score.

The basic idea behind the notation is that there are reasonable defaults for anything that gets left out. So if you've got a melodic line, where the next note starts as soon as the current one ends, you don't need to specify when the next note starts. If you have a series of notes all of the same duration, you don't have to specify the duration each time. You could type a score consisting of a single letter "C", and expect a reasonable result from that. If you don't specify a tuning, you get 12-ET. :-( Okay, maybe 1/6-comma meantone. :-)

> You get some abstraction, which might be useful
> (Scala does timing numerically) but it looks a
> bit of a mess and does nothing for tuning, which
> for our purposes makes it useless.

You could always add white space to line up the notes if it gets confusing.

q3B e.B= s4C qC# ;
q [3F 4D F]. [3G 4E G]. [3A 4F A]. ;
q [1B 2B]. [1A 2A]. [1F 2F]. |

Tuning would be set the same way as in a Scala seq file, by defining the notation system.

<notation "lemba"> q4I# eR_5D qU eN#_N | qU hD qT | hU er D_4R#_R | h.5D

There's no reason you can't type one note per line with this system if that's really what you want. Instead of just setting the time at the start of each measure, you could set it separately for each note. You could set all of the parameters explicitly for each note.

1:01:000 p q 3 Bb ! time, dynamic, duration, octave, note + acc.
1:02:000 p e. 3 B=
1:02:180 p s 4 C=
1:03:000 p q 4 C#

You could get even closer to raw MIDI by substituting <velocity 40> for each "p" and <duration 240> for each "q" (assuming the same time standard as used by Scala). Why not even use MIDI note numbers?

1:01:000 <vel 40> <dur 240> <note 58>
1:02:000 <vel 40> <dur 180> <note 59>
1:02:180 <vel 40> <dur 60> <note 60>
1:03:000 <vel 40> <dur 240> <note 61>

But this really gets tedious, and it's practically essential to have a shorter way to notate this. Also, it would be nice to define units in a way that's more friendly to musicians than MIDI. So rather than <dur 240>, which doesn't mean anything, something like <dur 1/4> for a quarter note would be far easier to understand. Alternatively, <dur 1.0> for one beat. (It's decisions like that, which could reasonably go either way, that I got hung up on when trying to define the notation.)

🔗Gene Ward Smith <genewardsmith@sbcglobal.net>

4/12/2007 8:29:08 PM

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:

> Way faster to type, for one thing.

Not if your real composing has been on another
program, and you are using the score to listen
to however far you've gotten. Which maybe sounds
insane, but it seems to work for me.

> You could get even closer to raw MIDI by substituting <velocity 40>
for
> each "p" and <duration 240> for each "q" (assuming the same time
> standard as used by Scala).

I'd be happy only if I could mostly just program
writing the score. Scala and Csound, which are
closer to midi, make that easy.

🔗Herman Miller <hmiller@IO.COM>

4/12/2007 10:16:51 PM

Gene Ward Smith wrote:
> --- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:
> >> Way faster to type, for one thing.
> > Not if your real composing has been on another
> program, and you are using the score to listen
> to however far you've gotten. Which maybe sounds
> insane, but it seems to work for me.
> >> You could get even closer to raw MIDI by substituting <velocity 40> > for >> each "p" and <duration 240> for each "q" (assuming the same time >> standard as used by Scala).
> > I'd be happy only if I could mostly just program
> writing the score. Scala and Csound, which are > closer to midi, make that easy.

Okay.... Well, you started out by saying that "Much too much
of the stuff out there is music-unfriendly." From that, I assumed that you were looking for something a little more music-friendly. What it sounds like is you've got some kind of algorithmic composition thing going on, but you need a way to get sounds out of your lists of numbers. In that specific case, I don't see how a more music-friendly notation scheme will do much good..... Maybe I'm missing something.....

🔗Jon Szanto <jszanto@cox.net>

4/12/2007 11:10:47 PM

Herman,

--- In tuning@yahoogroups.com, Herman Miller <hmiller@...> wrote:
> Maybe I'm missing something.....

You aren't. Get Gene to define "music", and then maybe the rest will
fall into place, but be prepared that pretty much anything that isn't
already the way Gene works is out of the question.

Best of luck,
Jon