Ravel - version 3.0 for MIDI/IBM-pc ------------------------------------------------------------ Ravel is a C-like interpreted programming language that directly supports MIDI music constructs. It combines C-like features with MIDI facilities built into the language. The system is intended to be used for building algorithmic based music systems. The system consists of three principle programs, mos, mc, and ml. mos is a command shell and program executor. mc is the Ravel compiler and is a fast one-pass compiler. With mos and mc, edit, compile, play cycles are very short. ml is the Ravel linker. Using the Ravel export/import mechanism, modules or libraries can be constructed and linked together with the linker to produce a final executable. ml and mc together can be used to build larger applications. mc can be used by itself to build small programs. ------------------------------------------------------------ Features ------------------------------------------------------------ 1. Programming Language: . concurrency, parallel main threads (programs) that run against one event clock. . functions . include files . if-then-else; switch statement . for loop and break . note and time constants for music . almost all C expression operators supported . MIDI action statements, including note, rest, and tie operators plus ways to build chords. . predefined function library . one and two dimensional arrays. Integer and byte data types. . data may be put in global arrays and variables with C like initializers. . MIDI event aggregate data structure called a data action. This is a Ravel language subset that can be used for data import/export to sequencers. . data hiding/abstract data types with import/export mechanism. This is referred to as "encapsulation"; i.e., it is possible to build modules or packages with Ravel. 2. MIDI actions (events): Most actions take expressions as operators; e.g., riff lousyMelody() note C q forte note 60 24 100 note mrandrange(C,HC) mchoose(q,e) mrandrange(100,120) note ar[3] q*2 forte-x tie w rest w end would be note, tie, and rest statements in a riff or function. Each note action statement takes note, time, and velocity expressions. . notes include simple notes (event time = duration) and duration notes if elapsed time and note duration do not match. Complex chords can be built from duration notes. . simple chord statements . patch (program), pitch bend, continuous controller . dx7 param changes . metro - clock change . and others MIDI actions may be declared as statements (code) or may be put in special arrays and treated as data. Actions as data represent a special action data type that is a union of action statement types. 3. Built-in predefined functions: . strong random number package including fractal generator and drunken walk routine . motif manipulation functions . console i/o . raw MIDI i/o . vector (scalar) array manipulation . MIDI oriented functions (linear scaled pitch bend) . action data executor . dynamic parallel mains (voicelist) may be spawned to run concurrently along with static voicelists. . built in window package for runtime manipulation and display of data. 4. Mos features: . UNIX(tm)-like ls, cp, rm, mv. . can execute DOS programs (editors...). . can save current music setup in ASCII mos command file. . can execute commands from mos command file. . control tempo, set startoff patch, change per channel transpose or overall transpose. . can set simulation feature and save MIDI actions. in per channel ASCII file. Subset of Ravel language. . timebase can be set from 24 beats per quarter to 240 beats per quarter in increments of 24. 5. New features: Translation to and from CAKEWALK sequencer ASCII format. Ravel is now modular with a linker ml. The compiler mc has the ability to import/export global data and functions and build modula like libraries. There is a new beta-test utility mtor that translates MIDI File Format files into Ravel files. ------------------------------------------------------------ Machines 1. IBM PC/ mpu-401 only. Distribution disks are 9 sector 48tpi dsdd. ------------------------------------------------------------ Reviews 1. Music Technology. July 1988. p. 74. 2. Keyboard. Nov. 1988 p. 86. 3. Music Technology. July 1989. p. 57 (review of tape made using Ravel). ------------------------------------------------------------ Cost Ravel is free. However, you must send either 3 360k 5 1/4" floppies or 1 1.2M floppy + 2 1.2M floppies for documentation plus postage, and a self-addressed mailer in order to get the Ravel distribution plus on-line documentation. If you don't do this, you won't get it... Ravel is available via anon. ftp at: 131.252.20.145 potemkin.cs.pdx.edu I will no longer distribute the manual except on-line. Ravel is now in the public domain. Feel free to give it to a friend. However, please try and provide that friend with the manual. The manual may be copied. A loose leaf programming manual of about 300 pages + a 90 page appendix that describes new features and software is provided on disks. Of the 3 Ravel music software disks, disk one contains executable programs, disk two contains more executables and simple Ravel music programs and example code, and disk three contains a jazz improvisation system built with Ravel and other more complex pieces. One 1.2M floppy contains the Ravel documentation in both ASCII and nroff form. The second 1.2M floppy contains the Ravel documentation in hp laserjet form. ------------------------------------------------------------ Source Source is available for the seriously inclined. I would estimate about 3 1.2 megabyte floppies are needed. That is the only media I will ship source on. I would be very interested if someone wanted to port it to the Mac or a Cray or to UNIX. The latter is quite possible. +-----------------------------------------------------------+ Mail: Jim Binkley 5814 SW Taylor Portland, Or. 97221 Internet: jrb@jove.cs.pdx.edu +-----------------------------------------------------------+ UNIX is a trademark of A.T.T., Bell Labs.