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 ******************************