issue08

EMUSIC-L Digest                                      Volume 34, Issue 08

This issue's topics: Languages for Electronic Music

	Programming, editing (4 messages)
	Keynote (2 messages)


Your EMUSIC-L Digest moderator is Joe McMahon .
You may subscribe to EMUSIC-L by sending mail to listserv@american.edu with 
the line "SUB EMUSIC-L your name" as the text.
 
The EMUSIC-L archive is a service of SunSite (sunsite.unc.edu) at the 
University of North Carolina.
------------------------------------------------------------------------
Date:         Mon, 11 Nov 1991 12:18:17 EST
From:         Jon Crystal 
Subject:      Programming, Editing

I'm thinking of exploring new areas of MIDI expertise, and could use some
guidance of various sorts. I'd like to learn how to modify sysex code to be
able, for example, to assign a different controller to a realtime parameter cha
nge. More generally, I'd like to learn about creating my own librarians, editor
programs, etc. I have access to both Mac and PC, have programmed before, but
not in C. What language should I check out? Recommendations on books? Warnings
about what not to mess with in an instruments sysex? Thanks.


                                                         Jon

------------------------------

Date:         Wed, 13 Nov 1991 10:57:41 +0000
From:         Nick Rothwell 
Subject:      Re: Programming, Editing

[Second attempt at posting...]

>I'm thinking of exploring new areas of MIDI expertise, and could use some
>guidance of various sorts. I'd like to learn how to modify sysex code to be
>able, for example, to assign a different controller to a realtime parameter cha
>nge.

What you're doing is general munging and transmission of strings of 8-bit
byte values. If you're happy encoding and decoding bit-patterns and the
like, and have a sanitary way of doing MIDI reception and transmission in
real time, that's about it.

>More generally, I'd like to learn about creating my own librarians, editor
>programs, etc.

That gets more complex because of the interface issues in the software.
Also, it depends a *lot* on the instruments involved; a lot of MIDI
instruments have their SysEx facilities programmed by chimpanzees (who also
document the SysEx codes) so be prepared for a *lot* of wading through hex
dumps and general trial-and-error.

>I have access to both Mac and PC, have programmed before, but
>not in C. What language should I check out?

C is as good as anything else. It provides direct access to data structures
and lets you write things quickly and (with care) neatly, but as an example
of well reasoned, thought-out, structured, language design it is absolutely
f*cked, and has quite a steep learning curve especially on non-protected
machines (think of it as a portable assembler) unless you've acquired the
discipline to develop software in a structured manner.

>Recommendations on books?

For the Mac, you should be using MIDI Manager (and I recommend the THINK C
compiler/debugger environment, since the class libraries make application
development a lot neater and easier). Wrt. the PC, I'd use the Mac.

>Warnings
>about what not to mess with in an instruments sysex?

Again, depends on the instrument. You generally can't do too much harm
apart from losing all your patches if you get things seriously wrong. There
are one or two exceptions, but you're unlikely to, say, reprogram the DSP's
microcode EEPROM accidentally unless you're *very* unlucky.

        Nick.

------------------------------
Date:         Mon, 11 Nov 1991 11:39:43 -0800
From:         Phil Burk 
Subject:      Re: Programming, Editing

> I'm thinking of exploring new areas of MIDI expertise, and could use some
> guidance of various sorts.
> What language should I check out?

If you are interested in learning to write your own MIDI/Music
programs, I would recommend a language called HMSL.
I am a codeveloper of this language so I may be biased
but I will try to be objective.

HMSL was developed by Phil Burk (me), Larry Polansky, and
David Rosenboom.  Most of the work was done at Mills College
but David is now Dean of Music at Cal Arts and Larry is at Dartmouth.
HMSL is a programming language designed for experimental music
composition and performance.  It is based an the Forth language
which allows you to interact directly with the language.
It is more of an environment then a compiler.
HMSL runs on the Macintosh and the Amiga.
Besides the MIDI toolbox, HMSL also has a set of object oriented
classes that support composition.  These include SHAPEs (abstract
multi-dimensional arrays), PLAYERs (which play shapes), COLLECTIONs
(which can play PLAYERs or other COLLECTIONs in a controlled fashion, etc.
One can construct complex hierarchies of musical information
and perform them, thus the name.  Custom functions can be embedded
throughout the hierarchy allowing very unusual forms of composition.
Any type of data can be "sequenced", not just notes.

HMSL also provides a simple toolbox for creating custom "screens"
which can be used to write editors, or interactive compositions.
There is also support for MIDIFiles, text based Score Entry, graphical
data editing, etc.

HMSL has a steeper learning curve then graphically based programming
systems (eg. Max), but I feel, and users tell me that, ultimately
one can create more sophisticated programs with fewer limitations.
HMSL provides a source level debugger and has many features that
make learning easier then learning 'C' or other "static" languages.
HMSL programs can also be turnkeyed for royalty free distribution.

HMSL has been in use worldwide since 1987.  Here is a brief list
of some of the composers using it and their applications:

Nick Didkovsky - algorithmic composition for Dr. Nerve, controlling
     paper sculptures built by Sarah Garden Armstrong in a NY gallery.
Chris Mann/Larry Polansky - developed an ensemble piece where a goldfish
     controls the formal structure of the piece by swimming in front of
     two video cameras at 90 degree angles.
Morten Carlsen - many interactive programs including interactive video
     systems on the AMIga using the Live board.
Anne LaBerge - interactive pieces for flute and MIDI, using Markov chains
     and other analytical tools.
Pauline Oliveros - stochastically generated Gamelan music.
John Chalmers - numerous compositions exploring just intonation
     created using system exclusive messages sent to an FB-01.

This was just to give you some idea of the scope of HMSL.

If you would like more information on HMSL, you can write
to me at:

    Frog Peak Music,   PO Box 151051,  San Rafael, CA 94915-1051

or send me e-mail at:

    phil@mills.edu

P.S.  I hope this didn't sound too much like an ad.  HMSL wasn't created
 for commercial reasons.  It was created to support the efforts
 of experimental composer/programmers. We charge money because that
 is needed to fund development.  If we were trying to get rich
 we certainly wouldn't have written something as strange as HMSL.

------------------------------


Date:         Wed, 13 Nov 1991 10:57:53 +0000
From:         Nick Rothwell 
Subject:      Re: Programming, Editing

[Second attempt at posting...]

>If you are interested in learning to write your own MIDI/Music
>programs, I would recommend a language called HMSL.

Oh nuts, I forgot to mention Opcode's MAX language for the Mac. Graphical
layout of MIDI components on-screen, with an underlying realtime data- and
event-flow model. I don't have it yet (my copy is still on order) but from
all the reviews I've seen and comments from users, it is an excellent
toolkit for knocking up MIDI applications. Check out Carter Scholz's review
in KEYBOARD a few months ago for more detailed information.

        Nick.

------------------------------

Date:         Fri, 15 Nov 1991 08:38:00 EST
From:         wbf@CBEMA.ATT.COM
Subject:      Music Languages


> If you are interested in learning to write your own MIDI/Music
> programs, I would recommend a language called HMSL.

>> Oh nuts, I forgot to mention Opcode's MAX language for the Mac.

Have you heard of Keynote?  Here's the scoop I received when I joined the
Keynote mailing list.
------------------------------------------------------------------
>From tjt  Mon Jul  1 10:46:43 1991 remote from blink
Date: Mon, 1 Jul 91 10:46:42 EDT
From: blink!tjt (Tim Thompson)
Subject: Keynote mailing list

You have been added to the Keynote mailing list.  Discussion on the list
will include availability and porting issues, usage hints and tutorials,
sharing of user experiences, and discussion of further development.
If you don't know what Keynote is, here's a short description:

	Keynote is an awk-like programming language and graphical editor
	for MIDI data, with both algorithmic and realtime applications.
	The graphical interface is based on only a few built-in functions -
	the entire user interface of a complete music editor (piano-roll
	style with pop-up menus) is written in Keynote itself, and is hence
	completely customizable and extensible by the user.  Although it
	works best on UNIX systems under the X Window System, Keynote is
	portable and runs on the Macintosh and Amiga.

The mailing address for the list is:

	keynote@blink.att.com

The mailing list is run as a 'reflector' - ANYTHING sent to this address is
mailed out immediately to all members of the mailing list, with no filtering
or moderation.  Addition/removal requests should make use of the administrative
address:

	keynote-request@blink.att.com

That is the address you should give to anyone you think might be
interested in joining the list.

IMPORTANT NOTE:

The mail you receive from the list will be from keynote-request@blink.att.com
(in order to avoid mail loops and other annoyances).  So, you won't be able to
use the 'r'eply command of most mail-reading programs.  You will have to mail
things explicitly to keynote@blink.att.com (assuming you want it sent to
everyone on the list).  If things get accidentally sent to keynote-request
(e.g. if you use the 'r'eply command), I usually forward them to the
mailing list, but things work a lot more smoothly if you send it directly
to keynote@blink.att.com, where it gets automatically handled.

ARCHIVE SERVICE:

An archive and distribution service has been setup, allowing you to
retrieve files containing details on availability, documentation,
examples, music, etc...  To get more information on it, send mail to

         keynote-archive@blink.att.com

containing the following line (you should replace RETURNADDRESS
with your internet address):

         send RETURNADDRESS info

To make things easy for yourself, you should add this 1-line shell to your
private bin directory, naming it something appropriate like "keynote-archive":

	echo "send RETURNADDRESS $*" | mail keynote-archive@blink.att.com

Remember, RETURNADDRESS should be replaced with your internet address.

Welcome!

  ...Tim Thompson...AT&T Bell Laboratories/Holmdel/NJ...tjt@blink.att.com...

------------------------------

Date:         Wed, 20 Nov 1991 16:34:14 +0000
From:         Nick Rothwell 
Subject:      Keynote

>>> Oh nuts, I forgot to mention Opcode's MAX language for the Mac.
>
>Have you heard of Keynote?

Yes. It doesn't interest me much compared with a dedicated Macintosh
application with the accompanying user interface which MAX provides. I also
need MIDI Manager/OMS interfacing.

        Nick.

------------------------------
End of the EMUSIC-L Digest
******************************