Guide to Operation for NetJam, Berkeley 9 October 1991 Copyright 1990, 1991 Craig Latta You may do anything you like with this document, except sell it. This was derived from K. Richard Magill's (rich@sendai.ann-arbor.mi.us) initial suggestions (copyright 1990 Digital Works, Ltd., with only the right to profit retained), and is available via anonymous ftp from scam.Berkeley.EDU (128.32.138.1), as /misc/netjam/guide. What Is it? NetJam provides a means for people to collaborate on musical compositions, by sending Musical Instrument Digital Interface (MIDI) and other files to each other, mucking about with them, and resending them. All those with MIDI-compatible (and other interesting) equipment, access to emailing and compression facilities (specified below) and the Internet, and an interest in making music (who isn't?) are encouraged to participate. All participant and composition information is documented, and the most actions, such as subscription, submission, and information distribution, are automated. If there is interest, the NetJam group may branch out to the support {soft/hard}ware other than sequencers. For example, there are a bunch of interesting sound synthesis programs out there, like CSound for the NeXT. This group has the following addresses, where "xcf" is xcf.Berkeley.EDU: Address: Where the mail goes: ------- ------------------- netjam@xcf to me, latta@xcf, the "moderator", for general NetJam issues and submissions. netjam-request@xcf to me again, for NetJam requests: getting on the mailing list, etc. netjam-users@xcf to all the people on the NetJam mailing list. Submissions, participant info, and other stuff is archived on scam.Berkeley.EDU (128.32.138.1), where it is available via anonymous ftp. Some things are available via automatic mail. To receive them, send mail to netjam-request@xcf with one of the following phrases in the subject line: Phrase: Action: ------ ------ request for info requests this document request for scripts requests UNIX scripts for packing/unpacking submissions personal info submits personal information for NetJam database add me:unix subscribes under the unix format add me:mac subscribes under the mac format add me:amiga subscribes under the amiga format add me:atari subscribes under the atari format add me:pc subscribes under the pc format add me:none subscribes for discussion only remove me unsubscribes submission:unix submits a unix submission submission:mac submits a mac submission submission:amiga submits an amiga submission submission:atari submits an atari submission submission:pc you guessed it... submits a pc submission The list will grow with the demand for additional things. Why does this group exist, given the existence of other various bulletin boards and such? Mainly because I think the NetJam idea will evolve more quickly and fruitfully with many people involved, trying different approaches. Also, UC Berkeley is fast becoming an interesting place for "Computer Music". NetJam, in conjunction with the Berkeley Electronic and Computer MUsic Group (BECMuG) can inspire more interest in the field. Given the existence of BECMuG, with its membership of roughly 80 people, NetJam has a good potential base of people who can work on compositions in this communal, moderated, electronic way, as well as in person. And if interest in NetJam extends beyond Berkeley, all the better; the location of its members is inherently unrestricted. Who's Out There? Interested people become involved by sending a request for being on the NetJam mailing list to me, via netjam-request@xcf. Upon being added to the group, they will be asked to provide some sort of description of themselves: what kind of stuff they write, what kind of equipment they have, etc. This way, any member can find out about prospective collaborators by looking through these descriptions (which would be kept, organized, and distributed by me). How Do We Work Together? At some point, someone gets an idea for a piece. Then, that person composes something (works out a progression, a riff, a rhythm, some lyrics, sonorities, algorithms for doing any of the preceeding, etc.), and emails it to the moderator (me) via two kinds of files. One kind is for the data (MIDI or other) itself, and the other is for documenting the data ("README"). The formats of these files are described below. The moderator then sends out the submission to all the relevant people in their preferred format, and archives (in a non-duplicating manner) the submission for subsequent retrieval (in "unix" format only -- see the format explanations below) via anonymous ftp. Each composition evolves, in that the collaborators incorporate changes to the data file, and append the documentation for it to the README file. When new compositions start, they have associated with them descriptions of their own. Just as members of the group can see who's out there for collaborating, they can see what compositions are in progress. If composers want to attach themselves to certain kinds of projects, they can find out what's out there from a list of "initial composers" and their attendant composers, with short summaries of the projects. Interested composers can then contact the initial composers to get a grip on what's really going on with each project (what's been done, references on the other composers, influences, stylistic considerations, etc.) I shall maintain and distribute this "master list", as well as assist in any physical reproduction we might like to have later (notation, mixing, mastering, distribution, copyright issues). Real-time jamming seems iffy at best, but I'm looking into it. I think the initial composer/instigator should have the most creative control over what gets assembled (at least, over whatever "final product" gets distributed including his/her original ideas). This extends to copyrights, in that everyone in a particular group should agree on the phrasing of the copyright(s) for their work, before they start and thereafter, with the original composers having the final say in the matter. Of course, the easiest way to deal with this issue is to make the works Public Domain. I, for one, will instigate and contribute gladly to Public Domain works, as have many others in the past. I hope there won't be much wrangling on these points. The original idea, after all, was to JAM! File Formats MIDI jams MIDI jams will be transmitted as two files. The first file will be a standard midi file, format 1. The second file will be a flat text file for documenting what's in the midi file (a README). The flat text file should have end of line markers appropriate for your machine. So, the raw files should be called: .README <title>.mid To simplify interchange problems, I ask that you submit your work in one of the following formats. I also ask that you choose one of the following formats and I will distribute all work to you in your chosen format. In other words, you will send your work in your favorite format, I will convert to all others and remail to each person in his/her favorite format. If you have any suggestions or comments about the file formats, mail to netjam@xcf.berkeley.edu. The formats will be: (format:unix) a uuencode(1)'d, compress(1)'d 'tar(1)' file. Its final system name before submission should be <title>.tar.Z.uu. The 'tar' file should contain the jam's README and MIDI files. I will make a shell script for packing and unpacking available to anyone who wants it. Just mail to "netjam-request@xcf", with a subject line containing "request for scripts". Or, you can get them via anonymous ftp from xcf.Berkeley.EDU (128.32.138.1), as /misc/netjam/scripts.shar (instructions inside). (format:mac) a uuencoded (uudecode strips mail headers... :) stuffit archive. Its final system name before sending should be <title>.sit.uu. It contains the usual two files. The MIDI file will be of type 'Midi', creator 'MACA', and the doc file will be of type 'TEXT' intended for use with 'teachtext'. Stuffit on the mac side can combine, split, binhex, un-binhex, archive, and unarchive. Stuffit is shareware, available via anonymous ftp from sumex-aim.stanford.edu (36.44.0.6). You can read and edit the 'TEXT' file with 'teachtext'. 'teachtext' comes with MacOS. (format:max) same as the mac format, for the distribution of Max objects and patchers, except that the data will be for Max, not necessarily MIDI. (format:amiga) a uuencoded zoo archive. Its final system name before sending should be <title>.zoo.uu. I'll include icons if someone sends me some. (format:atari) a uuencoded zoo archive. (format:pc) a uuencoded zoo archive. Please be sure that your files are of mode 644 (-rw-r--r--) before uuencoding them. If your submission is greater than 25 Kb in size, please split(1) it before sending. The current NetJam scripts don't provide for this, but they will, soon. If you need copies of 'zoo' a UNIX version of 'stuffit' (which only makes archives and doesn't 'binhex', etc.), or a UNIX utility to "unstuff" stuffit archives, called 'unsit', you can get them via anonymous ftp from xcf.Berkeley.EDU (128.32.138.1), in the "/src/utils" directory. The other necessary software is standard UNIX or specific to your machine(s) (telecommunications software, for example). Remember to use the "binary" mode of 'ftp' when grabbing binary files! Track Assignments Please limit yourself to one and only one midi channel. We have to presume that people have multi-timbral capabilities, but we can't assume multiple midi ports. We also can't (yet) assume patch switching at all. (Exception, guitar controllers pretty much require six channels and that eats a big part of a midi wire. I think this should be allowed only if all participants agree. You may split your channel, and I'll detail that under "Track Contents" below. Initially, please don't touch any channel other than your own. I think there's too much potential for creative argument here, and I think we are more interested in actually producing something listenable. The people in a group can hack each others tracks later if they agree on a method. If you have to hack another channel in order to hear it, be sure to save the original so you can add the final version of your track back into the original. If you think that a previous track contains "mistakes", feel free to change your local copy and to mail the original author. But please add your track to the original, not your changed copy. Let the original author fix his own mistakes. "Sketch tracks" are allowed and encouraged. A sketch track is defined as a track whose sole purpose is to give the piece form in the early stages. That is, the author intends that the track be dropped as soon as the piece has enough form to hold rhythm and or chord progressions on its own. Notation If people desire graphic representations of NetJam stuff, I'm willing to feed MIDI files into a music notation program (Finale, troff-music, or MuTeX, others coming), do minor cleaning up, and send out the resulting PostScript or TeX files. If others can do similar things, let me know, so we can coordinate notation efforts. The composers in each group should approve any graphic notation of their works which go outside the group. I have a feeling this aspect of things would be hard to get working, as producing acceptable hardcopy notation from MIDI files is still a difficult thing to do. ASCII notation of music is generally tedious, but notating percussion seems to be bearable. A currently-used format consists of a legend and a series of templates. The legend describes, at least, what instruments are used in the piece and how they are indicated in the templates. Each template indicates a range of measures, the instruments used in that range, and their states (on, 'x', or off, '.') for each subdivision of the measures in the range. The '|' symbol is used to indicate barlines, and the ':' symbol is used to make divisions within a bar easier to see. Here's an example: Written for Yamaha RX-21 Legend (all numbers decimal): 45 BD (Bass Drum) 52 SD (Snare Drum) 57 HHCl (Hi-hat closed) 60 Cym (Cymbal) Measure 18 HHCl: ....:....|.xxx:.xxx BD: x...:x...|x...:x... SD: xxx.:....|....:.... Cym: ....:x...|....:.... Track Contents The idea here is to simplify things for a group's first attempts and to make sure the piece is renderable by everyone involved. Voicings: Whatever patch you use should be described at least in the README. Please use generic terms so that someone on a different tone generator can get close on at least the envelope. You'll also have to give some clue as to the number of voices needed for your part. Later, others in the group can hammer out patch exchanges and the like. If you include patch changes, document them well in the README. If you use keyboard splits, document where the splits are, and what's on either side of them. Controller Info: Keep in mind that most boxes can handle at least the basics, but more exotic data like poly pressure may not be understood by many. If your controller data is extremely important to your part, be sure to give a clue in the description of your patch. Of course, it's a good idea to see what data everyone in the group can send and receive before composing with it. No Looping: This is just for simplicity. Most sequencers can copy data from one place to another so this shouldn't cause many problems. Documentation The README file should contain general descriptions of what you've done, track(s) used, a generic description of your patch, your splits if you used any, your name, and your email address. A README template will probably emerge from NetJam activity. Initially, please also include a statement to the effect that you release your work to the public domain. Contributions to Public Domain compositions will be considered Public Domain. Great... I've Joined. Now What Do I Do? The first step is for you to give some information about yourself, so that I can keep it in the database of composers and compositions for the reference of interested people. You should include your name and email address, preferred NetJam format (currently: UNIX, mac, pc, amiga, and atari), and equipment you use. Everyone is highly encouraged to include their musical interests, influences, philosophies, and anything else which might possibly be relevant. Send it all to netjam-request@xcf. The database may be edited for readability. At some point, you might think of some musical idea, or want to add to someone else's and submit it, by email, in two types of files: data (MIDI or other) and a README. The form of the README is plain text, and its format is outlined above. The format of MIDI files should be one of those given above. Remember, other files relating to musical data (besides MIDI, e.g., scores, lyrics, digital samples, etc.) may be submitted, in the README format (until more specific formats are developed). Under no circumstances should any part of a submission be larger than 25 kilobytes. It isn't pretty when mailers choke! If it seems a submission is particularly large, check with me first to find the best way of compressing/encoding it for sending. All submissions should be sent to netjam@xcf.Berkeley.EDU. I can then send out the submission to people in their preferred formats, and archive it on scam (in "unix" format only, due to space constraints). The newest versions of all compositions will also available via anonymous ftp from scam, in the /misc/netjam/submissions directory. The netjam-users address is for matters of interest to all NetJammers, and probably won't include submissions most of the time, due to incompatibilities between the equipment of a particular participant and the rest of the NetJam group. Administrivia If you're willing to help out with any of the mechanics of this project, let me know. Some parts of it are best centralized, but others (like producing hardcopy notation, collecting software, and coverting files) might be efficiently handled by several people. Thanks very much for your interest; I look forward to hearing (and I do mean HEARING) from you! Craig Latta Music / EECS student, XCF, CNMAT, DSP, BECMuG guy, etc. (Read my .plan!) latta@xcf.Berkeley.EDU