diff options
Diffstat (limited to 'muse/doc')
-rw-r--r-- | muse/doc/README.CVS | 3 | ||||
-rw-r--r-- | muse/doc/README.de | 69 | ||||
-rw-r--r-- | muse/doc/README.instruments | 108 | ||||
-rw-r--r-- | muse/doc/README.ladspaguis | 63 | ||||
-rw-r--r-- | muse/doc/README.realtime | 37 | ||||
-rw-r--r-- | muse/doc/README.shortcuts | 159 | ||||
-rw-r--r-- | muse/doc/README.softsynth | 86 | ||||
-rw-r--r-- | muse/doc/README.translate | 62 | ||||
-rw-r--r-- | muse/doc/dimpl/dimpl.pdf | bin | 0 -> 166457 bytes | |||
-rw-r--r-- | muse/doc/dimpl/dimpl.tex | 773 | ||||
-rw-r--r-- | muse/doc/man/de/man-de.tex | 173 | ||||
-rw-r--r-- | muse/doc/man/en/man-en.tex | 302 | ||||
-rw-r--r-- | muse/doc/man/fdl.tex | 510 | ||||
-rw-r--r-- | muse/doc/man/gpl.tex | 318 | ||||
-rw-r--r-- | muse/doc/man/titlelogo.jpg | bin | 0 -> 15896 bytes |
15 files changed, 2663 insertions, 0 deletions
diff --git a/muse/doc/README.CVS b/muse/doc/README.CVS new file mode 100644 index 00000000..43d973c5 --- /dev/null +++ b/muse/doc/README.CVS @@ -0,0 +1,3 @@ + +To compile a cvs tree, inspect ./autogen.sh and then run it + diff --git a/muse/doc/README.de b/muse/doc/README.de new file mode 100644 index 00000000..b6b03c5a --- /dev/null +++ b/muse/doc/README.de @@ -0,0 +1,69 @@ +==================================================================== + MusE --- Linux (Midi) Music Editor +==================================================================== + +Guten Tag! +dies ist MusE, der Open Source MIDI/Audio Sequencer. + +MusE steht unter der GNU General Public Licence (GPL). +Für Einzelheiten siehe COPYING. + +,-----------------------------------------------------------------. +| HINWEIS | +|-----------------------------------------------------------------| +| Viel Teile des Codes von MusE sind EXPERIMENTELL und können | +| zu Programmabstürzen und wer weiß was sonst noch allem | +| führen. | +| SIE BENUTZEN DIESE SOFTWARE AUF EIGENES RISIKO! | +`-----------------------------------------------------------------' + + ============================= + Voraussetzungen + ============================= + + - qt 3.2.0 oder neuer + ftp://ftp.trolltech.com/qt/source + Bitte mit "-thread" option compilieren. + + - libsndfile 1.0.1 (aktuell ist 1.0.4) + http://www.zip.com.au/~erikd/libsndfile/ + + - JACK + http://jackit.sourceforge.net/ + download: + http://jackit.sourceforge.net/download/ + + - fluidsynth-1.0.3 (the synti formerly known as "iiwusynth") von + http://savannah.nongnu.org/download/fluid + + - Linux Kernel mit rtc (RealTimeClock) Treiber (device /dev/rtc) + ("low latency patches" für minimales timing-jitter wären fein) + + - ALSA von http://www.alsa-project.org/ + Version 0.9.x oder neuer + + - gcc 3.x.x + (es muß der gleiche Compiler wie der zum compilieren der + QT-Libraries verwendet werden) + + - natürlich: eine Soundkarte und/oder irgendwelche Midi Geräte + + ============================= + Kompilierung + ============================= + + - download source von http://lmuse.sourceforge.net/ + - untar source: + tar xvofj muse-current-tar.bz2 </code> + - konfigurieren: + run "configure" + - kompilieren: + run "make all" + - installieren + als root, run "make install" + - Test + +==================================================================== +Aktuelle(re) Infos gibt es auf der MusE Homepage +http://lmuse.sourceforge.net/ + diff --git a/muse/doc/README.instruments b/muse/doc/README.instruments new file mode 100644 index 00000000..a2693b4e --- /dev/null +++ b/muse/doc/README.instruments @@ -0,0 +1,108 @@ +================================================ + MusE loadable Midi Instrument Definitions + (as of 10.09.2003) MusE 0.7.0 +================================================ + + - File Extension ".idf" + - searched in Subdirectory "instruments" + (/usr/share/muse/instruments on my system) + + All found instrument definitions are presented by MusE + in Config->MidiPorts in Pulldown in column "Instrument". + +------------------------------------------------- + Example of Instrument Definition File: +------------------------------------------------- + +<?xml version="1.0"?> +<muse version="1.0"> + <MidiInstrument name="GM"> + <Init> + ...MusE event list which initializes instrument + </Init> + <PatchGroup name="Piano"> + <Patch name="Grand Piano" prog="0"/> + <Patch name="Bright Piano" prog="1"/> + ... + </PatchGroup> + <PatchGroup name="Bass"> + <Patch name="Acoustic Bass" prog="32"/> + <Patch name="Fingered Bass" prog="33"/> + </PatchGroup> + ... + <Controller name="Brightness"> + <n>0x4a</n> + <min>0</min> + <max>127</max> + <init>0</init> + </Controller> + ... + </MidiInstrument> + </muse> + +------------------------------------------------- + Notes +------------------------------------------------- + + (1) PatchGroups are not mandatory; its valid to write: + + <MidiInstrument name="GM"> + <Patch name="Grand Piano" prog="0"/> + <Patch name="Bright Piano" prog="1"/> + <Patch name="Acoustic Bass" prog="32"/> + <Patch name="Fingered Bass" prog="33"/> + ... + </MidiInstrument> + + (2) An "Instrument Definition File" can define more than on + Instrument, but it is recommended to use one file for + one instrument + + (3) the "prog" parameter in a "Patch" is mandatory. Missing + "hbank" or "lbank" are treated as "don't care". + Missing "drum" is treated as drum="0". + + A XG-Patch looks like: + <Patch name="Electro" drum="1" hbank="127" lbank="0" prog="24"/> + + (5) A patch can be associated with a "mode" with one of + + 1 - GM + 2 - GS + 4 - XG + + Example: + <Patch name="Electro" mode="4" drum="1" hbank="127" lbank="0" prog="24"/> + + Mode id's can be ore'd together for patches which are valid + for more than one mode: + + <Patch name="Grand Piano" mode=7" hbank="0" lbank="0" prog="0"/> + + (4) example for MusE event (Sysex "XG-On"): + + <event tick="0" type="5" datalen="7"> + 43 10 4c 00 00 7e 00 + </event> + + (5) <Init> ... </Init> part can be omitted + + + (6) Controller have the following porperties: + + name: arbitrary unique (short) string describing the controller + n: controller number, defines also the controller type: + values from 0x0 - 0x7f are 7Bit controller + values from 0x1000 - 0x1ffff are 14 bit controller with + MSB/LSB value pairs + values from 0x20000 - 0x2ffff are RPN's + values from 0x30000 - 0x3ffff are NRPN's + + min: minimum value for controller + max: maximum value for controller + init: reset value for controller; when controller value is + undefined after instrument reset, use the ''undefined'' + value 0x10000 + + the min/max/init values can be ommited + diff --git a/muse/doc/README.ladspaguis b/muse/doc/README.ladspaguis new file mode 100644 index 00000000..5c77be26 --- /dev/null +++ b/muse/doc/README.ladspaguis @@ -0,0 +1,63 @@ +MusE can create LADSPA GUI's (graphical user interfaces) from +Qt designer *.ui files at runtime. +This allows a user to create or modify customized LADSPA guis without +recompiling MusE. + +====================== + Installation +===================== + +Copy the file muse/awl/libawlplugin.so and muse/awl/libawlplugin_debug.so +into a directory were Qt (designer) can find it. + +Example: + if you installed Qt in /usr/qt4: + su -c "cp -af awlplugin.so /usr/qt4/plugins/designer" +Check: + After starting the Qt designer you see all MusE specific widgets + in the widget box titled "MusE Awl Widgets". + If you cannot find any MusE widgets, designer did not find the + muse shared libs. + The MusE shared libs must have a signature qt designer understands. + If the signature is wrong, qt designer silently ignores the libs. + +====================== + Environment +====================== + +Naming: + The Qt designer files are named after the LADSPA plugin ID. + Example: the "freeverb" plugin has the id "1050". A gui for + freeverb has to be named "1050.ui". + The plugin ID is shown in the MusE plugin browser. + +Path: + MusE looks for *ui files at (museglobalshare)/plugins/. + If you installed MusE at "/usr" (configured with --prefix=/usr) + MusE looks at "/usr/share/muse/plugins" for *ui files. + +====================== + Creating *.ui file +====================== + +The association between LADSPA plugin parameters and Qt-Widgets is +done by name. All input widgets which manipulate a LADSPA parameter +must have a name starting with the letter "P". +The "id" property of every widget must be set to the parameter index +of the plugin, +One parameter can be manipulated with more than one widgets. + + Example: + A "Slider" widget which manipulates the 3th parameter of a + plugin has the name "Pslider" and the "id" property has a + value of "3". + +Supported Widgets: + "AwlSlider" slider for float values + "AwlFloatEntry" entry for float values + "AwlCheckbox" to manipulate a on/off LADSPA parameter + "AwlComboBox" select from a list of named values; sets + integer LADSPA values + +(for more hints please look at the example *.ui files) + diff --git a/muse/doc/README.realtime b/muse/doc/README.realtime new file mode 100644 index 00000000..1d7b3e31 --- /dev/null +++ b/muse/doc/README.realtime @@ -0,0 +1,37 @@ +For reliable operation MusE needs "realtime priviledges". + +Kernel >= 2.6.12 + - load the set_rtlimits utility from: + http://www.physics.adelaide.edu.au/~jwoithe + - compile & install + + - create an audio group (if you dont have one already): + groupadd audio + + - add yourself to the audio group + + - create an entry in "/etc/set_rtlimits.conf": + + @audio /home/ws/projects/muse/muse/muse/muse -1 90 + + - start MusE with + set_rtlimits -r 60 /usr/local/bin/muse + + +======================================================== + Low Latency +======================================================== + + Start JACK with a realtime priority of 60 (option -P60). + This should be higher than all (Realtime) system processes + if you run a realtime kernel (with Ingo Molnars realtime + patches). The JACK default priority is 10 which is too low. + + MusE must be started with a higher priority than jack. + This allows the MusE midi thread to interrupt all + audio threads. This is important to get a midi timing + which is of higher resolution than the audio segment + time. The default priority of 70 for MusE should do. + + + diff --git a/muse/doc/README.shortcuts b/muse/doc/README.shortcuts new file mode 100644 index 00000000..48de30f3 --- /dev/null +++ b/muse/doc/README.shortcuts @@ -0,0 +1,159 @@ +From: Frank Neumann +Subject: [MusE] Keyboard shortcut list + +Hi all, +while reading some MusE source code during the last weeks, I made a list +of all keyboard shortcuts I found in there. I thought other might find +this useful, so I am posting this here. There are some "?" spots in +there where I am not perfectly sure if something is correct or really +works the way it should, so comments or corrections are welcome. A few +keys are also result of my first ever cvs commit to Muse :-). + +Frank + +2004-04-xx: + Also changed Ctrl+Shift+A to Select None. + +2004-01-08: + Changed Ctrl+A to Select All in Arranger for the sake of uniformity. (ML) + +2003-10-26: + Added Alt+L shortcut in drumeditor to set fixed length on drumnotes + according to drummap (Mathias Lundgren) + 2003-10-19: + In Arranger, Part Canvas: + added Alt+P shortcut in to move locators to part boundaries + Crsr Up / Crsr Down to move to nearest part on track above/below + in current window. + +04.01.2003: + - (ws) added new Delete keys in pianoroll and drumedit + +<cut here> + +Shortcut keys in Muse, as of 0.6.0pre5: + +Arranger: +========= +Undo: Ctrl-Z +Redo: Ctrl-Y +New: Ctrl-N +Open: Ctrl-O +Save: Ctrl-S +Open PianoRoll Editor: Ctrl-E +Open Score Editor: Ctrl-R + +Open Recent: Ctrl-S (? collides with "Save"?) +Config Printer: Ctrl-P +Quit: Ctrl-Q + +Cut: Ctrl-X +Copy: Ctrl-C +Paste: Ctrl-V +Delete Track: Delete +Add Track: Ctrl-J +Select all: Ctrl-A +Deselect All Parts: Ctrl-B +Open Drums Editor: Ctrl-D +Open List Editor: Ctrl-L +Open Graphical Mastertrack Editor: Ctrl-M +Open List Mastertrack Editor: Shift-Ctrl-M +Open MIDI Transform Editor: Ctrl-T +Open Transport Panel: F11 +Open Bigtime Window: F12 +Open Help Browser: F1 +Start "What's This" Mode: Shift-F1 +Toggle Metronome Click: C + +Stop Playback / Rewind: Space +Stop Playback: Insert +Start Playback: Enter +Go to left Marker: End (Keypad) +Go to right marker: CursorDown (Keypad) +Toggle Loop Mode: / (Keypad) +Start Recording: * (Keypad) + + +Arranger, Part Canvas: +====================== +Cut: Ctrl-X +Copy: Ctrl-C +Select previous/next part in this track: Crsr-Left / Crsr-Right +Remove Part: Delete + + +Arranger, Track List Canvas: +============================ +Move to previous track: Crsr-Up +Move to next track: Crsr-Down + + +Pianoedit: +========== +Cut: Ctrl-X +Copy: Ctrl-C +Paste: Ctrl-V +Select All: Ctrl-A (just added in CVS) +Deselect All: Ctrl-Shift-A (just added in CVS) +Invertion Selection: Ctrl-I (just added in CVS) +Delete selected Events: Delete + +Insert Notes at locator position: Shift-Crsr-Right +Move Locator right: Crsr-Right +Move Locator left: Crsr-Left +Delete under Locator: Delete (KP?), "collects" notes left of locator +Set Grid Snap/Quantizer to 1/1, 1/2, 1/4, 1/8, 1/16, 1/32, 1/64: +1/2/3/4/5/6/7 +Toggle "triolic" flag of Grid Snap/Quantizer: T +Toggle "punctuated" flag of Grid Snap/Quantizer: . +Set Grid Snap/Quantizer to "first value in list"(?): , +Open "Event Color" dialog: e (just fixed in CVS) + + +Drumedit: +========= +Cut: Ctrl-X +Copy: Ctrl-C +Paste:Ctrl-V +Load Drummap: Ctrl-O +Save Drummap: Ctrl-S +Set fixed length: Alt-L (Sets length on selected events to the length specified in the drummap) + +Delete selected Events: Delete + +Listedit: +========= +Insert Note: Ctrl-N +Insert SysEx: Ctrl-S +Insert Ctrl: Ctrl-T +Insert Pitch: Ctrl-E +Insert Channel Aftertouch: Ctrl-A +Insert Key Aftertouch: Ctrl-P +Delete Events: Delete + + +Score Edit: +=========== +When entering Lyrics: +Move to next Note's Lyrics: Crsr-Left (problems when at beginning/end of +notes) +Move to previous Note' Lyrics: Crsr-Right +Cancel (?) entering notes: Escape +Remove last character from lyrics: Backspace or Delete +End entering Lyrics: Enter + + +Help Browser: +============= +New Window: Alt-N +Open File: Alt-O +Print: Alt-P +Close: Alt-Q +Exit: Alt-X + + +Transport: +========== +Toggle metronome Click: C +Toggle Loop Mode: / (Keypad) + diff --git a/muse/doc/README.softsynth b/muse/doc/README.softsynth new file mode 100644 index 00000000..e3201ff2 --- /dev/null +++ b/muse/doc/README.softsynth @@ -0,0 +1,86 @@ +============================================================= + Short instructions to get the soft + synthesizer up and running +============================================================= + +1. Compile and install MusE + +3. Run MusE from an xterm with Option "-D"; + look at the debug output in the xterm; you should see something + like: + + 3 soft synth found + found soft synth <fluid> <fluid soft synth> + found soft synth <organ> <organ soft synth> + found soft synth <S1> <organ soft synth> + + +4. Configure Software Synthesizer + + Open Settings->MidiPorts/SoftSynth. + + - select a software synthesizer + - press "Add Instance" to create an istance of this + synthesizer; the synthi shows up in the list + of instances with a unique name + +5. Configure Midi Port + + To use the synthesizer instance you must + connect it to a MusE midi port: + + - click into the "Device Name" column of an empty midi port + (Device Name == "none") + - select the synthesizer from the dropdown menu. + + This connects the synthesizer to the selected midi port. + The instrument type is automatically set. + +6. Open the Audio Mixer + + You see a new mixer strip of type "Synthi" and the name + of the new created synthesizer instance. + + Route the audio output of this strip to "Output". + (per default the synthesizer is routed to the first Output strip) + +7. Now you are ready to play with the "organ" synthesizer + + - create midi track + - set the midi port to the synthesizer port + - click the "R" column in the tracklist to enable "Recording" + +8. Optional: open Configure->MidiPorts and click in column GUI + to show a GUI for the synthesizer instance. + There is no gui available for the S1 synth. + The iiwu gui enables you to enter a different sound font. + The organ gui has some "draw bars" to let you play with + sounds in real time. + +These are the software synthesizers currently available: + + - S1 a simple sythesizer skeleton as a guide for all who + want to code their own one: + - only one tone at a time + - simple sinus wave form + - no gui + The synthi may be used as a metronome. + + - organ, an adapted version of the LADSPA plugin + "Organ - Additive Organ Synthesizer Voice" from + David A. Bartold + + "organ" implements a gui connected bidirectional + to the synth via stdin/stdout + + - fluid, is the adapted version of Peter Hanappe´s + sample based fluid synthesizer (formerly known as iiwu) + - loadable sound fonts + - multi timbral + - 128 voices + - simple gui lets you load a different sound font + Fluid loads a default sound font determined by the + environment variable "DEFAULT_SOUNDFONT". + + + diff --git a/muse/doc/README.translate b/muse/doc/README.translate new file mode 100644 index 00000000..d169e35f --- /dev/null +++ b/muse/doc/README.translate @@ -0,0 +1,62 @@ +Internationalisation + +If you want to contribute a translation the following hints +may be of help to you: + + +Step 1: + enter the MusE directory and edit the + file "muse.pro" + + Append a new target file name at "TRANSLATIONS" + e.g. change + TRANSLATIONS = share/locale/muse_de.ts + into + TRANSLATIONS = share/locale/muse_de.ts \ + share/locale/muse_fr.ts + if you want to generate a french MusE version. + +Step 2: + start the Qt-Program "lupdate" + + lupdate muse.pro + + Maybe "lupdate" is not in your PATH and you must + specify the complete pathname "lupdate" + Example: + /usr/qt3-2/bin/lupdate muse.pro + + This generates the file "locale/muse_fr.ts". + +Step 3: + Edit "locale/muse_fr.ts" manually or use the Qt "linguist" tool: + + linguist muse_fr.ts + +Step 4: + Save the edited file "muse_fr.ts" from linguist and + start File->Release. This generates the file "locale/muse_fr.qm" + + or + + start the Qt program "lrelease" + + lrelease muse.pro + + This generates all *.qm files. + +Step 5: + install the *.qm files: as superuser start "make install" + + +Step 6: + Test: + set the environment variable LANG to the desired + Language: + export LANG=fr + + Start MusE: + muse + + + diff --git a/muse/doc/dimpl/dimpl.pdf b/muse/doc/dimpl/dimpl.pdf Binary files differnew file mode 100644 index 00000000..0e055d37 --- /dev/null +++ b/muse/doc/dimpl/dimpl.pdf diff --git a/muse/doc/dimpl/dimpl.tex b/muse/doc/dimpl/dimpl.tex new file mode 100644 index 00000000..81bc23c8 --- /dev/null +++ b/muse/doc/dimpl/dimpl.tex @@ -0,0 +1,773 @@ +%==================================================================== +% Muse +% Design & Implementation +% +% (C) 2005 Copyright: Werner Schweer and Others +%==================================================================== + +%---------------------------------------------------------- +% Setup +%---------------------------------------------------------- + +%\showframe +%\showsetups +\usemodule[chart] +\setupcolors[state=start] +\setupbodyfont[Palatino] +\language[en] +\enableregime[il1] + +\startuseMPgraphic{FunnyFrame} + picture p; numeric o; path a, b; pair c; + p := textext.rt(\MPstring{FunnyFrame}); + o := BodyFontSize; + a := unitsquare xyscaled(OverlayWidth,OverlayHeight); + p := p shifted (20, OverlayHeight-ypart center p); + drawoptions (withpen pencircle scaled 1pt withcolor .625red); + b := a superellipsed .95; + fill b withcolor .85white; draw b; + b := (boundingbox p) superellipsed .95; + fill b withcolor .85white; draw b; + draw p withcolor black; + setbounds currentpicture to a; + \stopuseMPgraphic + +\defineoverlay[FunnyFrame][\useMPgraphic{FunnyFrame}] +\defineframedtext[FunnyText][frame=off,background=FunnyFrame] +\def\StartFrame{\startFunnyText} +\def\StopFrame{\stopFunnyText} +\def\FrameTitle#1% + {\setMPtext{FunnyFrame}{\hbox spread 1em{\hss\strut#1\hss}}} +\setMPtext{FunnyFrame}{} + + +\define\M{Muse} +\define[1]\Index{{\it #1}\marginpar{#1}\index{#1}} + +\defineindenting[Cmdi][text=,separator=,width=fit,distance=1em] + +\define[1]\Cmd{ + \Cmdi + \framed[ + background=color, + width=fit, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\tt\space #1}} + +\define[2]\CCmd{ + \Cmdi + \framed[ + background=color, + width=broad, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\vbox{\hbox{\tt\space #1}\hbox{\tt\space #2}}}} + + +%\define\startdescription{\startpacked} +\define\startdescription{} +%\define\stopdescription{\stoppacked} +\define\stopdescription{} + +\define[1]\Fig{\hbox{\externalfigure[pics/#1]}} + +\define[2]\Screen{ + \placefigure[here][fig:#1]{#2}{\externalfigure[pics/#1][scale=1600]} + } +\define[1]\Noten{ + \blank[line] + {\externalfigure[pics/#1][scale=700]} + \blank[line] + } + +\definedescription[Option][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Filetype][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[FileList][ + location=left, + headstyle=bold, + width=7em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Input][ + location=left, + headstyle=bold, + width=9em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[InputN][ + location=left, + headstyle=bold, + width=6em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\define[2]\Figure{ + \placefigure + [#1][fig:#2]{} + {\externalfigure[pics/#2]} + } + +\define[1]\Menu{ + \placefigure[right][fig:#1]{} + {\externalfigure[pics/#1][scale=2000]} + } + +\definedescription[Opt][location=hanging,headstyle=bold,width=broad] + +\setuptyping[before=\blank\startbackground, after=\stopbackground\blank] % source code with background +\setupwhitespace[medium] + +%---------------------------------------------------------- +% Body +%---------------------------------------------------------- + +\starttext + \language[en] + \mainlanguage[en] + \startstandardmakeup[doublesided=no] + \definebodyfont[10pt,11pt,12pt][rm][tfe=Regular at 48pt] + \tfe\setupinterlinespace + \hfill \color[red]{\M}\par + \hfill \color[blue]{Design \&}\par + \hfill \color[blue]{Implementation}\par + \vfill + \definebodyfont[10pt,11pt,12pt][rm][tfb=Regular at 24pt] + \tfb\setupinterlinespace + \hfill Version 1.0\par +%% \hfill April 2005\par +%% \hfill Werner Schweer + \stopstandardmakeup + + \startstandardmakeup[page=no] + \vfill + \M\ is hosted on SourceForge:\par + \type{http://lmuse.sourceforge.net/} + \blank[line] + This document was created using \pdfTeX\ and the + \ConTeXt\ macro package. + \blank[line] + \copyright 2005 Werner Schweer and Others + \stopstandardmakeup + + \completecontent + +%% +%%======================================================================= +%% File Formats +%%======================================================================= +%% + +\chapter{File Formats} + \section{Instrument Definition Files} + + \M\ Instrument Definition Files are used to describe the + properties of external midi instruments. + + IDF-Files have the file extension \type{*.idf} \index{idf} and + they are searched in the \M\ "instruments" subdirectory (which is on + my system \type{/usr/share/muse-1.0/instruments}. + + An instrument\index{Instrument definition} is a property of the + midi ouput port \index{Midi output port}. + All found instrument definitions are presented by MusE + in the Instrument pulldown menu of the midi output port. + + Example of an instrument definition file: + \blank +\starttyping +<?xml version="1.0"?> +<muse version="1.0"> + <MidiInstrument name="GM"> + <Init> + ...MusE event list which initializes instrument + </Init> + <PatchGroup name="Piano"> + <Patch name="Grand Piano" prog="0"/> + <Patch name="Bright Piano" prog="1"/> + ... + </PatchGroup> + <PatchGroup name="Bass"> + <Patch name="Acoustic Bass" prog="32"/> + <Patch name="Fingered Bass" prog="33"/> + </PatchGroup> + ... + <Controller name="Brightness"> + <n>0x4a</n> + <min>0</min> + <max>127</max> + <init>0</init> + </Controller> + ... + </MidiInstrument> + </muse> +\stoptyping + \blank + + PatchGroups\index{PatchGroups} are not mandatory; its valid to write: + + \blank +\starttyping +<MidiInstrument name="GM"> + <Patch name="Grand Piano" prog="0"/> + <Patch name="Bright Piano" prog="1"/> + <Patch name="Acoustic Bass" prog="32"/> + <Patch name="Fingered Bass" prog="33"/> + ... + </MidiInstrument> +\stoptyping + \blank + + An instrument definition file should only define one + instrument. + + The "prog" parameter in a "Patch" is mandatory. Missing + "hbank" or "lbank" are treated as "don't care". + Missing "drum" is treated as drum="0". + + A XG-Patch looks like this: + + \blank + \starttyping +<Patch name="Electro" drum="1" hbank="127" + lbank="0" prog="24"/> + \stoptyping + \blank + + A patch can be associated with a "mode" with one of: + \blank[medium] + \Option{1} - GM\par + \Option{2} - GS\par + \Option{4} - XG\par + \blank[big] + + Example: + + \blank + \starttyping +<Patch name="Electro" mode="4" drum="1" hbank="127" + lbank="0" prog="24"/> + \stoptyping + \blank + + Mode id's can be ore'd together for patches which are valid + for more than one mode: + + \blank + \starttyping +<Patch name="Grand Piano" mode=7" hbank="0" lbank="0" prog="0"/> + \stoptyping + \blank + + example for MusE event (Sysex "XG-On"): + + \blank + \starttyping +<event tick="0" type="5" datalen="7"> + 43 10 4c 00 00 7e 00 + </event> + \stoptyping + \blank + + \type{<Init> ... </Init>} part can be omitted + + + Controller\index{Controller} have the following properties: + + \starttabulate + \NC name:\NC + arbitrary unique (short) string describing the controller\NC\NR + \NC n:\NC + controller number, defines also the controller type:\par + values from \type{0x0 - 0x7f} are 7Bit controller\par + values from \type{0x1000 - 0x1ffff} are 14 bit controller with + MSB/LSB value pairs\par + values from \type{0x20000 - 0x2ffff} are RPN's\par + values from \type{0x30000 - 0x3ffff} are NRPN's + \NC\NR + \NC min:\NC minimum value for controller\NC\NR + \NC max:\NC maximum value for controller\NC\NR + \NC init:\NC + reset value for controller; when controller value is + undefined after instrument reset, use the ''undefined'' + value \type{0x10000} + \NC\NR + \stoptabulate + + the min/max/init values can be ommited + +%% +%%======================================================================= +%% Midi Plugins +%%======================================================================= +%% +\chapter{Plugins} + \section{Midi Plugins} + + + Midi plugins have the file extension \type{*.so} and they are + searched in the \M\ "\type{midiplugins}" subdirectory (which is on + my system \type{/usr/lib/muse-1.0/midiplugins}. + +% +%----------------------------------- +% Midi Filter +%----------------------------------- +% + \subsection{Midi Filter} + + Example for an midi plugin which does essentially nothing: + + First define your custom \type{Filter} class with \type{Mempi} + as base class. + +\starttyping +#include "../libmidiplugin/mempi.h" + +class Filter : public Mempi { + virtual void process(unsigned, unsigned, + MPEventList*, MPEventList*); + + public: + Filter(const char* name, const MempiHost*); + ~Filter() {} + virtual bool init() { return false; } + }; + +Filter::Filter(const char* name, const MempiHost* h) + : Mempi(name, h) + { + } +\stoptyping + + Now comes the main \type{Mempi} function you have to implement: + \type{process()} which has two parameters, an midi event input + list and an midi event output list. The example code simply + copies all events from the input list to the output list. + +\starttyping +void Filter::process(unsigned, unsigned, MPEventList* il, + MPEventList* ol) + { + for (iMPEvent i = il->begin(); i != il->end(); ++i) { + ol->insert(*i); + } + } +\stoptyping + + When loading the plugin, the \type{Mempi} Host looks for + the symbol \type{mempi_descriptor}. This function returns a + pointer to the plugin class description you have to fill in. + +\starttyping +static Mempi* instantiate(const char* name, const MempiHost* h) + { + return new Filter(name, h); + } + +extern "C" { + static MEMPI descriptor = { + "Filter", + "MusE Zero Filter", + "0.1", // filter version string + MEMPI_FILTER, // plugin type + MEMPI_MAJOR_VERSION, MEMPI_MINOR_VERSION, + instantiate + }; + + const MEMPI* mempi_descriptor() { return &descriptor; } + } +\stoptyping + + +% +%----------------------------------- +% GUI interface +%----------------------------------- +% +\subsection{GUI interface} + Every midi plugin can implement a native graphical user + interface (GUI). For this you have to overload five + virtual functions. + +\starttyping + virtual bool hasGui() const { return true; } +\stoptyping + This function informs the host whether there is an GUI or not. + +\starttyping + virtual bool guiVisible() const { return gui->isVisible(); } +\stoptyping + This fuction returns \type{true} if your GUI is visible. + +\starttyping + virtual void showGui(bool val) const { gui->setShown(val); } +\stoptyping + This function shows or hides the GUI. + + There are two helper functions the plugin host uses to save + and restore the GUI geometry across sessions: + +\starttyping + virtual void getGeometry(int* x, int* y, int* w, int* h) const; + virtual void setGeometry(int, int, int, int); +\stoptyping + +% +%----------------------------------- +% Persistent Parameters +%----------------------------------- +% +\subsection{Persistent Parameters} + + The plugin host can save and restore plugin parameter across + sessions. When the host saves his session status, he calls + the midi plugin function: + +\starttyping + virtual void getInitData(int* len, const unsigned char**p) const; +\stoptyping + + You can overload this function to return a pointer to your + session data and the len of the data block. + + When the session is restored, the host calls + +\starttyping + virtual void setInitData(int len, const unsigned char* p); +\stoptyping + + which you can use to restore the last plugin state. +% +%----------------------------------- +% Host Access Functions +%----------------------------------- +% + +\subsection{Host Access Functions} + + The plugin host supplies some functions which are + accessible through the \type{MempiHost*} in the + \type{Mempi} interface. + + The host supplies the following functions: + +\starttyping + int division() const; +\stoptyping + \index{division()} + returns the midi \type{division} value which gives the number + of midi ticks per midi beat, typically 384. + +\starttyping + int tempo(unsigned tick) const; +\stoptyping + \index{tempo()} + returns the midi tempo value. + +\starttyping + unsigned tick2frame(unsigned tick) const; +\stoptyping + \index{tick2frame()} + This function converts a transport position given in midi ticks + to a audio frame position. + +\starttyping + unsigned frame2tick(unsigned frame) const; +\stoptyping + \index{frame2tick()} + This function converts a transport position given in audio frames + to midi ticks. + +\starttyping + void bar(int tick, int* bar, int* beat, unsigned* rest) const; +\stoptyping + \index{bar()} + This function return bar/beat and a tick rest for a given + tick position. + +\starttyping + unsigned bar2tick(int bar, int beat, int tick) const; +\stoptyping + This is the opposite to the \type{bar} function. It converts + a time position given in bar/beat/tick into a midi tick value. + +% +%----------------------------------- +% Midi Synthesizer +%----------------------------------- +% +\subsection{Midi Synthesizer} + As an example for a midi synthesizer plugin we use a midi + metronome. + + Lets start with the class definition: + +\starttyping +#include "../libmidiplugin/mempi.h" + +//--------------------------------------------------------- +// metronom - simple midi metronom +//--------------------------------------------------------- + +class Metronom : public Mempi { + + protected: + struct InitData { + char measureNote; + char measureVelo; + char beatNote; + char beatVelo; + } data; + MetronomGui* gui; + friend class MetronomGui; + + unsigned int nextTick; + unsigned int lastTo; + + virtual void process(unsigned, unsigned, MPEventList*, + MPEventList*); + + public: + Metronom(const char* name, const MempiHost*); + ~Metronom(); + virtual bool init(); + + virtual bool hasGui() const { return true; } + virtual bool guiVisible() const { return gui->isVisible(); } + virtual void showGui(bool val) { gui->setShown(val); } + virtual void getGeometry(int* x, int* y, int* w, int* h) const; + virtual void setGeometry(int, int, int, int); + + virtual void getInitData(int*, const unsigned char**) const; + virtual void setInitData(int, const unsigned char*); + }; +\stoptyping + +% +%----------------------------------- +% MESS interface +%----------------------------------- +% +\chapter {The M.E.S.S (MusE Experimental Software Synthesizer) API} + + M.E.S.S.\index{M.E.S.S.} stands for MusE Experimental Soft Synth and is + an API/interface (like DSSI) to enable programmers to easily create their + own softsynths. + + The interface for a M.E.S.S.-synth consists of two classes, the Mess and + MessGui. In short, the framework provides the Mess (the synth) midi data + (notes, controllers and sysexes) and methods that handle the IPC between + the gui and the synth, so the programmer can focus on DSP-issues instead. + + The interface for the synth is specified in the mess.h file in the libsynti + directory. The interface for the MessGui is specified in the gui.h file. + +\starttyping +//--------------------------------------------------------- +// Mess +// MusE experimental software synth +// Instance virtual interface class +//--------------------------------------------------------- + +class Mess { + MessP* d; + + int _sampleRate; + int _channels; // 1 - mono, 2 - stereo + + public: + Mess(int channels); + virtual ~Mess(); + + int channels() const { return _channels; } + int sampleRate() const { return _sampleRate; } + void setSampleRate(int r) { _sampleRate = r; } + + virtual void process(float** data, int offset, int len) = 0; + + // the synti has to (re-)implement processEvent() or provide + // some of the next three functions: + + virtual bool processEvent(const MidiEvent&); + virtual bool setController(int, int, int) { return false; } + virtual bool playNote(int, int, int) { return false; } + virtual bool sysex(int, const unsigned char*) { return false; } + + virtual void getInitData(int*, const unsigned char**) const {} + virtual int getControllerInfo(int, const char**, int*, int*, int*) const {return 0;} + virtual const char* getPatchName(int, int, int) const { return "?"; } + virtual const MidiPatch* getPatchInfo(int, const MidiPatch*) const { return 0; } + + // synthesizer -> host communication + void sendEvent(MidiEvent); // called from synti + MidiEvent receiveEvent(); // called from host + int eventsPending() const; + + // GUI interface routines + virtual bool hasGui() const { return false; } + virtual bool guiVisible() const { return false; } + virtual void showGui(bool) {} + virtual void getGeometry(int* x, int* y, int* w, int* h) const; + virtual void setGeometry(int, int, int, int) {} + }; +\stoptyping + +\section{Overview of virtual member functions} + This is a short description of the virtual functions in the Mess-class: +\subsection{process} +\starttyping +virtual void process(float** data, int offset, int len) = 0; +\stoptyping + This is where the audio processing takes place. The Mess is called with a float array, and + it's up to the programmer to fill it with data beginning at data[offset] to data[offset+len]. + +\subsection{processEvent} + There are two ways to go when it comes to how midi data is fed into the Mess. You can either + implement processEvent and manage the different event types (controllers, sysexes and notes) + or implement one or more of the setController, playNote and sysex functions. + + + Note that overriding processEvent results in setController, playNote and sysex + not being called! + +\subsection{setController, playNote, sysex} + The setController, playNote and sysex functions should return false if the event was + processed, true if the synth was busy. + +\starttyping +virtual bool setController(int channel, int controller_no, int value) + +virtual bool playNote(int channel, int pitch, int velo) + +virtual bool sysex(int length, const unsigned char* data) +\stoptyping + +\subsection{getInitData} + MusE provides an interface for storing the state of the synth in the project file. + getInitData is called when the project is saved, and provides a pointer to a data + block where you store the data which will recreate the synths current state when + the project is reopened. +\starttyping +virtual void getInitData(int* nrofchars, const unsigned char** data) const {} +\stoptyping + +\subsection{getControllerInfo} + getControllerInfo is called when the Mess is instantiated, and this is where + you tell MusE which controllers the Mess supports. The function is called + repeteadly: just fill in the values for the controller and return the index + you want to be sent next time. Return 0 when you've given MusE information about + all controllers your Mess supports. + + As you can see, the necessary parameters are an index (used internally), a name + for the controller, an int describing the actual controller number (f.ex. 91 for + reverb), and finally min and max values for the controller. + +\starttyping +virtual int getControllerInfo(int index, + const char** name, + int* controller, + int* min, + int* max) const +\stoptyping + +\subsection{hasGui} + hasGui is called when the Mess is instantiated, and tells MusE if the synth has + a gui or not. +\starttyping +virtual bool hasGui() const; +\stoptyping + +\subsection{showGui} +showGui is called from MusE when the gui is supposed to be visible +\starttyping +virtual void showGui(bool show); +\stoptyping + +\subsection{getPatchName, getPatchInfo} + getPatchName and getPatchInfo are used to give MusE information about patches, + which can be selected in the track inspector. + + The getPatchName function specifies three parameters to be passed: channel, + program, and a third that is unused. It is the responsibility for the synth + to return the patchname for the particular channel and a program. + +\starttyping +virtual const char* SimpleSynth::getPatchName(int channel, int program, int unused) const +\stoptyping + + getPatchInfo is called repeatedly until the synth returns 0. The synth must + send information back in a MidiPatch struct. The MidiPatch parameter sent + contains information on the last MidiPatch that was sent from the synth + (a null pointer on first call). + +\starttyping +virtual const MidiPatch* getPatchInfo(int channel, + const MidiPatch* previouspatch) + const; + +struct MidiPatch { + signed char type; // 1 - GM 2 - GS 4 - XG + signed char hbank, lbank, prog; + const char* name; + }; +\stoptyping + + +\subsection{Descriptor} + Since the synths are built as shared libraries, you need to specify a descriptor + for your MESS. They look something like this: (example taken from SimpleSynth/SimpleDrums) + +\starttyping +static Mess* instantiate(int sr, QWidget*, const char* name) + { + printf("SimpleSynth sampleRate %d\n", sr); + SimpleSynth* synth = new SimpleSynth(sr); + if (!synth->init(name)) { + delete synth; + synth = 0; + } + return synth; + } +extern "C" + { + static MESS descriptor = { + "SimpleSynth", + "Mathias Lundgren (lunar_shuttle@users.sf.net)", + "0.1", //Version string + MESS_MAJOR_VERSION, MESS_MINOR_VERSION, + instantiate, + }; + const MESS* mess_descriptor() { return &descriptor; } + } +\stoptyping + +\section{MessGui} + For the Gui, there's really only one method that is interesting, processEvent. + processEvent in the gui is called whenever the synth sends it a midiEvent, which + it does with send(MidiEvent ). + Since this is the only method of communicating the gui can send midimessages + to the synth via sendEvent, sendController and sendSysex calls. +\starttyping +virtual void processEvent(const MidiPlayEvent&) {}; +\stoptyping + + +\completeindex +\stoptext diff --git a/muse/doc/man/de/man-de.tex b/muse/doc/man/de/man-de.tex new file mode 100644 index 00000000..04fc20c2 --- /dev/null +++ b/muse/doc/man/de/man-de.tex @@ -0,0 +1,173 @@ +%==================================================================== +% MusE Manual +% dies ist das MusE Manual +% +% (C) 2006 Copyright: Werner Schweer und Andere +%==================================================================== + +%---------------------------------------------------------- +% Setup +%---------------------------------------------------------- + +%\showframe +%\showsetups +\usemodule[chart] +\setupcolors[state=start] +\setupbodyfont[Palatino] +\language[de] +\enableregime[il1] + +\startuseMPgraphic{FunnyFrame} + picture p; numeric o; path a, b; pair c; + p := textext.rt(\MPstring{FunnyFrame}); + o := BodyFontSize; + a := unitsquare xyscaled(OverlayWidth,OverlayHeight); + p := p shifted (20, OverlayHeight-ypart center p); + drawoptions (withpen pencircle scaled 1pt withcolor .625red); + b := a superellipsed .95; + fill b withcolor .85white; draw b; + b := (boundingbox p) superellipsed .95; + fill b withcolor .85white; draw b; + draw p withcolor black; + setbounds currentpicture to a; + \stopuseMPgraphic + +\defineoverlay[FunnyFrame][\useMPgraphic{FunnyFrame}] +\defineframedtext[FunnyText][frame=off,background=FunnyFrame] +\def\StartFrame{\startFunnyText} +\def\StopFrame{\stopFunnyText} +\def\FrameTitle#1% + {\setMPtext{FunnyFrame}{\hbox spread 1em{\hss\strut#1\hss}}} +\setMPtext{FunnyFrame}{} + + +\define\M{MusE} +\define[1]\Index{{\it #1}\marginpar{#1}\index{#1}} + +\defineindenting[Cmdi][text=,separator=,width=fit,distance=1em] + +\define[1]\Cmd{ + \Cmdi + \framed[ + background=color, + width=fit, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\tt\space #1}} + +\define[2]\CCmd{ + \Cmdi + \framed[ + background=color, + width=broad, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\vbox{\hbox{\tt\space #1}\hbox{\tt\space #2}}}} + + +%\define\startdescription{\startpacked} +\define\startdescription{} +%\define\stopdescription{\stoppacked} +\define\stopdescription{} + +\define[1]\Fig{\hbox{\externalfigure[pics/#1]}} + +\define[2]\Screen{ + \placefigure[here][fig:#1]{#2}{\externalfigure[pics/#1][scale=1600]} + } +\definedescription[Option][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Sc][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Filetype][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[FileList][ + location=left, + headstyle=bold, + width=7em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Input][ + location=left, + headstyle=bold, + width=9em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[InputN][ + location=left, + headstyle=bold, + width=6em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\define[2]\Figure{ + \placefigure + [#1][fig:#2]{} + {\externalfigure[pics/#2]} + } + +\define[1]\Menu{ + \placefigure[right][fig:#1]{} + {\externalfigure[pics/#1][scale=2000]} + } + +\definedescription[Opt][location=hanging,headstyle=bold,width=broad] + +%---------------------------------------------------------- +% Body +%---------------------------------------------------------- + +\starttext + \language[de] + \mainlanguage[de] + \startstandardmakeup[doublesided=no] + \definebodyfont[10pt,11pt,12pt][rm][tfe=Regular at 48pt] + \tfe\setupinterlinespace + \hfill \color[red]{\M}\par + \hfill \color[blue]{Manual}\par + \vfill + \hfill \color[blue]{DE}\par + \definebodyfont[10pt,11pt,12pt][rm][tfb=Regular at 24pt] + \tfb\setupinterlinespace + \hfill Version 1.0pre1\par + \stopstandardmakeup + + \startstandardmakeup[page=no] + \vfill + \M\ wird von SourceForge gehostet:\par + \type{http://mscore.sourceforge.net/} + \blank[line] + Dieses Dokument wurde mit \pdfTeX\ und dem Macro Paket + \ConTeXt\ erstellt. + \blank + \copyright 2006 Werner Schweer und Andere + \stopstandardmakeup + + \completecontent + +\chapter{Einführung} + \section{Was ist \M?} + \M\ ist ein ein "open source" Programm, veröffentlicht unter der GNU General + Public License (GPL) (siehe Appendix). + +\completeindex +\stoptext diff --git a/muse/doc/man/en/man-en.tex b/muse/doc/man/en/man-en.tex new file mode 100644 index 00000000..d05123e2 --- /dev/null +++ b/muse/doc/man/en/man-en.tex @@ -0,0 +1,302 @@ +%==================================================================== +% +% MusE Manual +% this is the MusE manual +% +% (C) 2006 Copyright: Werner Schweer and Others +%==================================================================== + +%---------------------------------------------------------- +% Setup +%---------------------------------------------------------- + +%\showframe +%\showsetups +\usemodule[chart] +\setupcolors[state=start] +\setupbodyfont[Palatino] +\language[en] +\enableregime[il1] + +\startuseMPgraphic{FunnyFrame} + picture p; numeric o; path a, b; pair c; + p := textext.rt(\MPstring{FunnyFrame}); + o := BodyFontSize; + a := unitsquare xyscaled(OverlayWidth,OverlayHeight); + p := p shifted (20, OverlayHeight-ypart center p); + drawoptions (withpen pencircle scaled 1pt withcolor .625red); + b := a superellipsed .95; + fill b withcolor .85white; draw b; + b := (boundingbox p) superellipsed .95; + fill b withcolor .85white; draw b; + draw p withcolor black; + setbounds currentpicture to a; + \stopuseMPgraphic + +\defineoverlay[FunnyFrame][\useMPgraphic{FunnyFrame}] +\defineframedtext[FunnyText][frame=off,background=FunnyFrame] +\def\StartFrame{\startFunnyText} +\def\StopFrame{\stopFunnyText} +\def\FrameTitle#1% + {\setMPtext{FunnyFrame}{\hbox spread 1em{\hss\strut#1\hss}}} +\setMPtext{FunnyFrame}{} + + +\define\M{MusE} +\define[1]\Index{{\it #1}\marginpar{#1}\index{#1}} + +\defineindenting[Cmdi][text=,separator=,width=fit,distance=1em] + +\define[1]\Cmd{ + \Cmdi + \framed[ + background=color, + width=fit, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\tt\space #1}} + +\define[2]\CCmd{ + \Cmdi + \framed[ + background=color, + width=broad, + align=right, + backgroundcolor=lightgray, + framecolor=blue] + {\vbox{\hbox{\tt\space #1}\hbox{\tt\space #2}}}} + + +%\define\startdescription{\startpacked} +\define\startdescription{} +%\define\stopdescription{\stoppacked} +\define\stopdescription{} + +\define[1]\Fig{\hbox{\externalfigure[pics/#1]}} + +\define[2]\Screen{ + \placefigure[here][fig:#1]{#2}{\externalfigure[pics/#1][scale=1600]} + } +\definedescription[Option][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Sc][ + location=left, + headstyle=bold, + width=4em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Filetype][ + location=left, + headstyle=bold, + width=6em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[FileList][ + location=left, + headstyle=bold, + width=7em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[Input][ + location=left, + headstyle=bold, + width=9em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\definedescription[InputN][ + location=left, + headstyle=bold, + width=6em, + before={\startnarrower[left]\setupblank[0pt]}, + after={\stopnarrower\setupblank}] + +\define[2]\Figure{ + \placefigure + [#1][fig:#2]{} + {\externalfigure[pics/#2]} + } + +\define[1]\Menu{ + \placefigure[right][fig:#1]{} + {\externalfigure[pics/#1][scale=2000]} + } + +\definedescription[Opt][location=hanging,headstyle=bold,width=broad] + +%---------------------------------------------------------- +% Body +%---------------------------------------------------------- + +\starttext + \language[en] + \mainlanguage[en] + \startstandardmakeup[doublesided=no] + \definebodyfont[10pt,11pt,12pt][rm][tfe=Regular at 48pt] + \tfe\setupinterlinespace + \hfill \color[red]{\M}\par + \hfill \color[blue]{Manual}\par + \vfill + \rightaligned{\externalfigure[../titlelogo.jpg]} + \vfill + \hfill \color[blue]{EN}\par + \definebodyfont[10pt,11pt,12pt][rm][tfb=Regular at 24pt] + \tfb\setupinterlinespace + \hfill Version 1.0pre1\par + \stopstandardmakeup + + \startstandardmakeup[page=no] + \vfill + \M\ is hosted on SourceForge:\par + \type{http://mscore.sourceforge.net/} + \blank[line] + This document was created using \pdfTeX\ and the macro package + \ConTeXt\. + \blank + \copyright 2006 Werner Schweer and Others + \stopstandardmakeup + + \completecontent + +\chapter{Introduction} + \section{Where from and where to go} + There's a long history of sequencers. In the beginning there were + only analogue synthesizers, which could only be played live. The classical + example is presumably the Moog. After the introduction of MIDI, the first + devices appeared where music data could be saved and replayed, in short: + Sequencers. To program these devices, i.e. to record and process music can + rather be compared with assembler programming of computers than with making + music. But soon the first sequencers for computers were developed. At + first, one could only process MIDI data, since the corresponding hardware + capacities were missing. But those developed at high speed and thus the + quality of hardware - and what is most important in this case: sound + cards - improved that much, that one could even do without external tape + drives. Now multi-track audio on-line recordings were possible and there + were even astounding possibilities for the post-editing of large projects. + Hard to believe, but nowadays computers can do even more. + Software-synthesizers in combination with software sequencers + (\M\ for example!) offer apparently unlimited possibilities of + variation. In fact, one can compose without even touching the wheel or + the button of a "real" synthesizer. It will need time, however, until this + software will be affordable, as the prices are immense. That's where \M\ + enters the game! + + \section{\M\ and its competitors} + Of course there will always be "better" programs or not! This decision is + due to strongly subjective criteria. On the one hand, it depends on what one + is aiming at. On the other hand, it depends on individual technical knowledge + in the field of synthesizers/sequencers. To the time that I write this article, + there are unfortunately no commercial sequencers for Linux, not to speak of + whole studios like Cubase or Logic. So the Linux-user can only choose between + a parallel installation either to Mac (if one has a PPC architecture) or to + Windows (in case of IBM Hardware). But where do those programs actually beat + \M? Certainly not in their price because commercial, proprietary software + is expensive. That's where programs like \M\ become interesting because + everybody can have it for free. Furthermore they are "open source", which is + another important point, because thereby the users get the opportunity of + finding bugs themselves and doing away with them. + + Naturally, all projects start small. It's the same with \M. With \M, + Linux enters a new dimension of MIDI and Audio processing. Together with + Jack, even multi-track on-line recordings can be realized. In the the next + few years \M\ will certainly evolve strongly and with some luck there will + be an easier installation and more comfortable manuals. + + \section{Features of \M} + + Main features of \M: + + \startitemize[1,packed] + \head Arranger + The arranger window structures a song into tracks and + parts. + + \head Pianoroll Editor + + \head Drum Editor + + \head Mastertrack + Allows you to edit tempo changes and time signatures + + \head Controller Editor + Allows to graphically edit controller values. + + \head Recording + Muse allows simultaneous midi and audio recording. + Midi can be recorded non realtime step by step. + + \head Editing + Midi and audio editing can be done even during play. + + \head LADSPA, JACK etc. compatible + + \stopitemize + + +\chapter{Invoking \M} + \section{Invoking \M} + \M\ is invoked from the command line by typing in: + + \Cmd{muse} + + Optionally, you can use command line options of the form: + + \Cmd{muse <options> <midifile>} + + \definedescription[Mops][location=left,headstyle=bold] + + \Mops{\tt <options>:} + see below for a list of available options. + \Mops{\tt <midifile>:} + can be either a standard MIDI file or a \M\ file + ({\tt *.med, *.med.gz or *.med.bz2}). + + \section{Command Line Options} + + \M\ accepts some options as listed below: + + \blank[medium] + \Option{ -v}print version\par + \Option{ -m}MIDI only mode\par + \Option{ -d}debug mode: no threads, no RT\par + \Option{ -D}debug mode: enable some debug messages\par + \Option{ -i}debug mode: trace midi Input\par + \Option{ -o}debug mode: trace midi Output\par + \Option{ -p}don't load LADSPA plugins\par + \blank[big] + + Example: + + \Cmd{muse -i mysong.med} + + will add trace midi input and open mysong.med on startup. + + \section{File types used by \M} + + \Filetype{\textasciitilde/.MusE} + \M\ Configuration File (``\textasciitilde´´ refers to your home directory + aka "/home/tux")\par + \Filetype{\textasciitilde/.musePrj} + Hidden Project File; stores list of last projects\par + \Filetype{.med} + \M\ song file; internal \M format\par + \Filetype{.mid} + midi file; can be imported or exported\par + \Filetype{.kar} + karaoke: midi file with additional information; some types + can be imported\par + +\startappendices + \component ../gpl.tex + \completeindex + \stopappendices +\stoptext diff --git a/muse/doc/man/fdl.tex b/muse/doc/man/fdl.tex new file mode 100644 index 00000000..bdad2a11 --- /dev/null +++ b/muse/doc/man/fdl.tex @@ -0,0 +1,510 @@ +%---------The file header--------------------------------------------- +\documentclass[a4paper,12pt]{book} % possibilities : report book article , etc. + +\usepackage[english]{babel} %language selection +\usepackage[T1]{fontenc} + +\pagenumbering{arabic} + +\usepackage{hyperref} +\hypersetup{colorlinks, + citecolor=black, + filecolor=black, + linkcolor=black, + urlcolor=black, + pdftex} + + +\begin{document} +%--------------------------------------------------------------------- +\chapter{GNU Free Documentation License} +%\label{label_fdl} + + \begin{center} + + Version 1.2, November 2002 + + + Copyright \copyright 2000,2001,2002 Free Software Foundation, Inc. + + \bigskip + + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + \bigskip + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. +\end{center} + + +\begin{center} +{\bf\large Preamble} +\end{center} + +The purpose of this License is to make a manual, textbook, or other +functional and useful document "free" in the sense of freedom: to +assure everyone the effective freedom to copy and redistribute it, +with or without modifying it, either commercially or noncommercially. +Secondarily, this License preserves for the author and publisher a way +to get credit for their work, while not being considered responsible +for modifications made by others. + +This License is a kind of "copyleft", which means that derivative +works of the document must themselves be free in the same sense. It +complements the GNU General Public License, which is a copyleft +license designed for free software. + +We have designed this License in order to use it for manuals for free +software, because free software needs free documentation: a free +program should come with manuals providing the same freedoms that the +software does. But this License is not limited to software manuals; +it can be used for any textual work, regardless of subject matter or +whether it is published as a printed book. We recommend this License +principally for works whose purpose is instruction or reference. + + +\begin{center} +{\Large\bf 1. APPLICABILITY AND DEFINITIONS} +\addcontentsline{toc}{section}{1. APPLICABILITY AND DEFINITIONS} +\end{center} + +This License applies to any manual or other work, in any medium, that +contains a notice placed by the copyright holder saying it can be +distributed under the terms of this License. Such a notice grants a +world-wide, royalty-free license, unlimited in duration, to use that +work under the conditions stated herein. The \textbf{"Document"}, below, +refers to any such manual or work. Any member of the public is a +licensee, and is addressed as \textbf{"you"}. You accept the license if you +copy, modify or distribute the work in a way requiring permission +under copyright law. + +A \textbf{"Modified Version"} of the Document means any work containing the +Document or a portion of it, either copied verbatim, or with +modifications and/or translated into another language. + +A \textbf{"Secondary Section"} is a named appendix or a front-matter section of +the Document that deals exclusively with the relationship of the +publishers or authors of the Document to the Document's overall subject +(or to related matters) and contains nothing that could fall directly +within that overall subject. (Thus, if the Document is in part a +textbook of mathematics, a Secondary Section may not explain any +mathematics.) The relationship could be a matter of historical +connection with the subject or with related matters, or of legal, +commercial, philosophical, ethical or political position regarding +them. + +The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles +are designated, as being those of Invariant Sections, in the notice +that says that the Document is released under this License. If a +section does not fit the above definition of Secondary then it is not +allowed to be designated as Invariant. The Document may contain zero +Invariant Sections. If the Document does not identify any Invariant +Sections then there are none. + +The \textbf{"Cover Texts"} are certain short passages of text that are listed, +as Front-Cover Texts or Back-Cover Texts, in the notice that says that +the Document is released under this License. A Front-Cover Text may +be at most 5 words, and a Back-Cover Text may be at most 25 words. + +A \textbf{"Transparent"} copy of the Document means a machine-readable copy, +represented in a format whose specification is available to the +general public, that is suitable for revising the document +straightforwardly with generic text editors or (for images composed of +pixels) generic paint programs or (for drawings) some widely available +drawing editor, and that is suitable for input to text formatters or +for automatic translation to a variety of formats suitable for input +to text formatters. A copy made in an otherwise Transparent file +format whose markup, or absence of markup, has been arranged to thwart +or discourage subsequent modification by readers is not Transparent. +An image format is not Transparent if used for any substantial amount +of text. A copy that is not "Transparent" is called \textbf{"Opaque"}. + +Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input format, SGML +or XML using a publicly available DTD, and standard-conforming simple +HTML, PostScript or PDF designed for human modification. Examples of +transparent image formats include PNG, XCF and JPG. Opaque formats +include proprietary formats that can be read and edited only by +proprietary word processors, SGML or XML for which the DTD and/or +processing tools are not generally available, and the +machine-generated HTML, PostScript or PDF produced by some word +processors for output purposes only. + +The \textbf{"Title Page"} means, for a printed book, the title page itself, +plus such following pages as are needed to hold, legibly, the material +this License requires to appear in the title page. For works in +formats which do not have any title page as such, "Title Page" means +the text near the most prominent appearance of the work's title, +preceding the beginning of the body of the text. + +A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose +title either is precisely XYZ or contains XYZ in parentheses following +text that translates XYZ in another language. (Here XYZ stands for a +specific section name mentioned below, such as \textbf{"Acknowledgements"}, +\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.) +To \textbf{"Preserve the Title"} +of such a section when you modify the Document means that it remains a +section "Entitled XYZ" according to this definition. + +The Document may include Warranty Disclaimers next to the notice which +states that this License applies to the Document. These Warranty +Disclaimers are considered to be included by reference in this +License, but only as regards disclaiming warranties: any other +implication that these Warranty Disclaimers may have is void and has +no effect on the meaning of this License. + + +\begin{center} +{\Large\bf 2. VERBATIM COPYING} +\addcontentsline{toc}{section}{2. VERBATIM COPYING} +\end{center} + +You may copy and distribute the Document in any medium, either +commercially or noncommercially, provided that this License, the +copyright notices, and the license notice saying this License applies +to the Document are reproduced in all copies, and that you add no other +conditions whatsoever to those of this License. You may not use +technical measures to obstruct or control the reading or further +copying of the copies you make or distribute. However, you may accept +compensation in exchange for copies. If you distribute a large enough +number of copies you must also follow the conditions in section 3. + +You may also lend copies, under the same conditions stated above, and +you may publicly display copies. + + +\begin{center} +{\Large\bf 3. COPYING IN QUANTITY} +\addcontentsline{toc}{section}{3. COPYING IN QUANTITY} +\end{center} + + +If you publish printed copies (or copies in media that commonly have +printed covers) of the Document, numbering more than 100, and the +Document's license notice requires Cover Texts, you must enclose the +copies in covers that carry, clearly and legibly, all these Cover +Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on +the back cover. Both covers must also clearly and legibly identify +you as the publisher of these copies. The front cover must present +the full title with all words of the title equally prominent and +visible. You may add other material on the covers in addition. +Copying with changes limited to the covers, as long as they preserve +the title of the Document and satisfy these conditions, can be treated +as verbatim copying in other respects. + +If the required texts for either cover are too voluminous to fit +legibly, you should put the first ones listed (as many as fit +reasonably) on the actual cover, and continue the rest onto adjacent +pages. + +If you publish or distribute Opaque copies of the Document numbering +more than 100, you must either include a machine-readable Transparent +copy along with each Opaque copy, or state in or with each Opaque copy +a computer-network location from which the general network-using +public has access to download using public-standard network protocols +a complete Transparent copy of the Document, free of added material. +If you use the latter option, you must take reasonably prudent steps, +when you begin distribution of Opaque copies in quantity, to ensure +that this Transparent copy will remain thus accessible at the stated +location until at least one year after the last time you distribute an +Opaque copy (directly or through your agents or retailers) of that +edition to the public. + +It is requested, but not required, that you contact the authors of the +Document well before redistributing any large number of copies, to give +them a chance to provide you with an updated version of the Document. + + +\begin{center} +{\Large\bf 4. MODIFICATIONS} +\addcontentsline{toc}{section}{4. MODIFICATIONS} +\end{center} + +You may copy and distribute a Modified Version of the Document under +the conditions of sections 2 and 3 above, provided that you release +the Modified Version under precisely this License, with the Modified +Version filling the role of the Document, thus licensing distribution +and modification of the Modified Version to whoever possesses a copy +of it. In addition, you must do these things in the Modified Version: + +\begin{itemize} +\item[A.] + Use in the Title Page (and on the covers, if any) a title distinct + from that of the Document, and from those of previous versions + (which should, if there were any, be listed in the History section + of the Document). You may use the same title as a previous version + if the original publisher of that version gives permission. + +\item[B.] + List on the Title Page, as authors, one or more persons or entities + responsible for authorship of the modifications in the Modified + Version, together with at least five of the principal authors of the + Document (all of its principal authors, if it has fewer than five), + unless they release you from this requirement. + +\item[C.] + State on the Title page the name of the publisher of the + Modified Version, as the publisher. + +\item[D.] + Preserve all the copyright notices of the Document. + +\item[E.] + Add an appropriate copyright notice for your modifications + adjacent to the other copyright notices. + +\item[F.] + Include, immediately after the copyright notices, a license notice + giving the public permission to use the Modified Version under the + terms of this License, in the form shown in the Addendum below. + +\item[G.] + Preserve in that license notice the full lists of Invariant Sections + and required Cover Texts given in the Document's license notice. + +\item[H.] + Include an unaltered copy of this License. + +\item[I.] + Preserve the section Entitled "History", Preserve its Title, and add + to it an item stating at least the title, year, new authors, and + publisher of the Modified Version as given on the Title Page. If + there is no section Entitled "History" in the Document, create one + stating the title, year, authors, and publisher of the Document as + given on its Title Page, then add an item describing the Modified + Version as stated in the previous sentence. + +\item[J.] + Preserve the network location, if any, given in the Document for + public access to a Transparent copy of the Document, and likewise + the network locations given in the Document for previous versions + it was based on. These may be placed in the "History" section. + You may omit a network location for a work that was published at + least four years before the Document itself, or if the original + publisher of the version it refers to gives permission. + +\item[K.] + For any section Entitled "Acknowledgements" or "Dedications", + Preserve the Title of the section, and preserve in the section all + the substance and tone of each of the contributor acknowledgements + and/or dedications given therein. + +\item[L.] + Preserve all the Invariant Sections of the Document, + unaltered in their text and in their titles. Section numbers + or the equivalent are not considered part of the section titles. + +\item[M.] + Delete any section Entitled "Endorsements". Such a section + may not be included in the Modified Version. + +\item[N.] + Do not retitle any existing section to be Entitled "Endorsements" + or to conflict in title with any Invariant Section. + +\item[O.] + Preserve any Warranty Disclaimers. +\end{itemize} + +If the Modified Version includes new front-matter sections or +appendices that qualify as Secondary Sections and contain no material +copied from the Document, you may at your option designate some or all +of these sections as invariant. To do this, add their titles to the +list of Invariant Sections in the Modified Version's license notice. +These titles must be distinct from any other section titles. + +You may add a section Entitled "Endorsements", provided it contains +nothing but endorsements of your Modified Version by various +parties--for example, statements of peer review or that the text has +been approved by an organization as the authoritative definition of a +standard. + +You may add a passage of up to five words as a Front-Cover Text, and a +passage of up to 25 words as a Back-Cover Text, to the end of the list +of Cover Texts in the Modified Version. Only one passage of +Front-Cover Text and one of Back-Cover Text may be added by (or +through arrangements made by) any one entity. If the Document already +includes a cover text for the same cover, previously added by you or +by arrangement made by the same entity you are acting on behalf of, +you may not add another; but you may replace the old one, on explicit +permission from the previous publisher that added the old one. + +The author(s) and publisher(s) of the Document do not by this License +give permission to use their names for publicity for or to assert or +imply endorsement of any Modified Version. + + +\begin{center} +{\Large\bf 5. COMBINING DOCUMENTS} +\addcontentsline{toc}{section}{5. COMBINING DOCUMENTS} +\end{center} + + +You may combine the Document with other documents released under this +License, under the terms defined in section 4 above for modified +versions, provided that you include in the combination all of the +Invariant Sections of all of the original documents, unmodified, and +list them all as Invariant Sections of your combined work in its +license notice, and that you preserve all their Warranty Disclaimers. + +The combined work need only contain one copy of this License, and +multiple identical Invariant Sections may be replaced with a single +copy. If there are multiple Invariant Sections with the same name but +different contents, make the title of each such section unique by +adding at the end of it, in parentheses, the name of the original +author or publisher of that section if known, or else a unique number. +Make the same adjustment to the section titles in the list of +Invariant Sections in the license notice of the combined work. + +In the combination, you must combine any sections Entitled "History" +in the various original documents, forming one section Entitled +"History"; likewise combine any sections Entitled "Acknowledgements", +and any sections Entitled "Dedications". You must delete all sections +Entitled "Endorsements". + +\begin{center} +{\Large\bf 6. COLLECTIONS OF DOCUMENTS} +\addcontentsline{toc}{section}{6. COLLECTIONS OF DOCUMENTS} +\end{center} + +You may make a collection consisting of the Document and other documents +released under this License, and replace the individual copies of this +License in the various documents with a single copy that is included in +the collection, provided that you follow the rules of this License for +verbatim copying of each of the documents in all other respects. + +You may extract a single document from such a collection, and distribute +it individually under this License, provided you insert a copy of this +License into the extracted document, and follow this License in all +other respects regarding verbatim copying of that document. + + +\begin{center} +{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS} +\addcontentsline{toc}{section}{7. AGGREGATION WITH INDEPENDENT WORKS} +\end{center} + + +A compilation of the Document or its derivatives with other separate +and independent documents or works, in or on a volume of a storage or +distribution medium, is called an "aggregate" if the copyright +resulting from the compilation is not used to limit the legal rights +of the compilation's users beyond what the individual works permit. +When the Document is included in an aggregate, this License does not +apply to the other works in the aggregate which are not themselves +derivative works of the Document. + +If the Cover Text requirement of section 3 is applicable to these +copies of the Document, then if the Document is less than one half of +the entire aggregate, the Document's Cover Texts may be placed on +covers that bracket the Document within the aggregate, or the +electronic equivalent of covers if the Document is in electronic form. +Otherwise they must appear on printed covers that bracket the whole +aggregate. + + +\begin{center} +{\Large\bf 8. TRANSLATION} +\addcontentsline{toc}{section}{8. TRANSLATION} +\end{center} + + +Translation is considered a kind of modification, so you may +distribute translations of the Document under the terms of section 4. +Replacing Invariant Sections with translations requires special +permission from their copyright holders, but you may include +translations of some or all Invariant Sections in addition to the +original versions of these Invariant Sections. You may include a +translation of this License, and all the license notices in the +Document, and any Warranty Disclaimers, provided that you also include +the original English version of this License and the original versions +of those notices and disclaimers. In case of a disagreement between +the translation and the original version of this License or a notice +or disclaimer, the original version will prevail. + +If a section in the Document is Entitled "Acknowledgements", +"Dedications", or "History", the requirement (section 4) to Preserve +its Title (section 1) will typically require changing the actual +title. + + +\begin{center} +{\Large\bf 9. TERMINATION} +\addcontentsline{toc}{section}{9. TERMINATION} +\end{center} + + +You may not copy, modify, sublicense, or distribute the Document except +as expressly provided for under this License. Any other attempt to +copy, modify, sublicense or distribute the Document is void, and will +automatically terminate your rights under this License. However, +parties who have received copies, or rights, from you under this +License will not have their licenses terminated so long as such +parties remain in full compliance. + + +\begin{center} +{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE} +\addcontentsline{toc}{section}{10. FUTURE REVISIONS OF THIS LICENSE} +\end{center} + + +The Free Software Foundation may publish new, revised versions +of the GNU Free Documentation License from time to time. Such new +versions will be similar in spirit to the present version, but may +differ in detail to address new problems or concerns. See +http://www.gnu.org/copyleft/. + +Each version of the License is given a distinguishing version number. +If the Document specifies that a particular numbered version of this +License "or any later version" applies to it, you have the option of +following the terms and conditions either of that specified version or +of any later version that has been published (not as a draft) by the +Free Software Foundation. If the Document does not specify a version +number of this License, you may choose any version ever published (not +as a draft) by the Free Software Foundation. + + +\begin{center} +{\Large\bf ADDENDUM: How to use this License for your documents} +\addcontentsline{toc}{section}{ADDENDUM: How to use this License for your documents} +\end{center} + +To use this License in a document you have written, include a copy of +the License in the document and put the following copyright and +license notices just after the title page: + +\bigskip +\begin{quote} + Copyright \copyright YEAR YOUR NAME. + Permission is granted to copy, distribute and/or modify this document + under the terms of the GNU Free Documentation License, Version 1.2 + or any later version published by the Free Software Foundation; + with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. + A copy of the license is included in the section entitled "GNU + Free Documentation License". +\end{quote} +\bigskip + +If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the "with...Texts." line with this: + +\bigskip +\begin{quote} + with the Invariant Sections being LIST THEIR TITLES, with the + Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. +\end{quote} +\bigskip + +If you have Invariant Sections without Cover Texts, or some other +combination of the three, merge those two alternatives to suit the +situation. + +If your document contains nontrivial examples of program code, we +recommend releasing these examples in parallel under your choice of +free software license, such as the GNU General Public License, +to permit their use in free software. + +%--------------------------------------------------------------------- +\end{document} diff --git a/muse/doc/man/gpl.tex b/muse/doc/man/gpl.tex new file mode 100644 index 00000000..f939f169 --- /dev/null +++ b/muse/doc/man/gpl.tex @@ -0,0 +1,318 @@ +\chapter{The GNU General Public License} + +\midaligned{Version 2, June 1991} +\blank[big] +\midaligned{Copyright \copyright\ 1989, 1991 Free Software Foundation, Inc.} +\blank[big] +\midaligned{51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA} +\blank[big] +\midaligned{Everyone is permitted to copy and distribute verbatim copies} +\midaligned{of this license document, but changing it is not allowed.} + +\blank[big] +\midaligned{\bf Preamble} +\blank[big] + +The licenses for most software are designed to take away your freedom to +share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software---to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and to +any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General Public +License instead.) You can apply it to your programs, too. + +When we speak of free software, we are referring to freedom, not price. +Our General Public Licenses are designed to make sure that you have the +freedom to distribute copies of free software (and charge for this service +if you wish), that you receive source code or can get it if you want it, +that you can change the software or use pieces of it in new free programs; +and that you know you can do these things. + +To protect your rights, we need to make restrictions that forbid anyone to +deny you these rights or to ask you to surrender the rights. These +restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + +For example, if you distribute copies of such a program, whether gratis or +for a fee, you must give the recipients all the rights that you have. You +must make sure that they, too, receive or can get the source code. And +you must show them these terms so they know their rights. + +We protect your rights with two steps: (1) copyright the software, and (2) +offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + +Also, for each author's protection and ours, we want to make certain that +everyone understands that there is no warranty for this free software. If +the software is modified by someone else and passed on, we want its +recipients to know that what they have is not the original, so that any +problems introduced by others will not reflect on the original authors' +reputations. + +Finally, any free program is threatened constantly by software patents. +We wish to avoid the danger that redistributors of a free program will +individually obtain patent licenses, in effect making the program +proprietary. To prevent this, we have made it clear that any patent must +be licensed for everyone's free use or not licensed at all. + +The precise terms and conditions for copying, distribution and +modification follow. + +\blank[big] +\midaligned{GNU GENERAL PUBLIC LICENSE} +\midaligned{Terms and Conditions For Copying, Distribution and + Modification} +\blank[big] + +\setupitemize[2][width=5em] +\startitemize[n,broad] + +\item +This License applies to any program or other work which contains a notice +placed by the copyright holder saying it may be distributed under the +terms of this General Public License. The ``Program'', below, refers to +any such program or work, and a ``work based on the Program'' means either +the Program or any derivative work under copyright law: that is to say, a +work containing the Program or a portion of it, either verbatim or with +modifications and/or translated into another language. (Hereinafter, +translation is included without limitation in the term ``modification''.) +Each licensee is addressed as ``you''. + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + +\item You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you conspicuously + and appropriately publish on each copy an appropriate copyright notice + and disclaimer of warranty; keep intact all the notices that refer to + this License and to the absence of any warranty; and give any other + recipients of the Program a copy of this License along with the Program. + +You may charge a fee for the physical act of transferring a copy, and you +may at your option offer warranty protection in exchange for a fee. + +\item +You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + +\startitemize[a] + +\item +You must cause the modified files to carry prominent notices stating that +you changed the files and the date of any change. + +\item +You must cause any work that you distribute or publish, that in +whole or in part contains or is derived from the Program or any +part thereof, to be licensed as a whole at no charge to all third +parties under the terms of this License. + +\item +If the modified program normally reads commands interactively +when run, you must cause it, when started running for such +interactive use in the most ordinary way, to print or display an +announcement including an appropriate copyright notice and a +notice that there is no warranty (or else, saying that you provide +a warranty) and that users may redistribute the program under +these conditions, and telling the user how to view a copy of this +License. (Exception: if the Program itself is interactive but +does not normally print such an announcement, your work based on +the Program is not required to print an announcement.) + +\stopitemize + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + +\item +You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + +\startitemize[a,packed] + +\item +Accompany it with the complete corresponding machine-readable +source code, which must be distributed under the terms of Sections +1 and 2 above on a medium customarily used for software interchange; or, + +\item +Accompany it with a written offer, valid for at least three +years, to give any third party, for a charge no more than your +cost of physically performing source distribution, a complete +machine-readable copy of the corresponding source code, to be +distributed under the terms of Sections 1 and 2 above on a medium +customarily used for software interchange; or, + +\item +Accompany it with the information you received as to the offer +to distribute corresponding source code. (This alternative is +allowed only for noncommercial distribution and only if you +received the program in object code or executable form with such +an offer, in accord with Subsection b above.) + +\stopitemize + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + +\item +You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + +\item +You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + +\item +Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + +\item +If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + +\item +If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + +\item +The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and ``any +later version'', you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + +\item +If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + +\blank[big] +\midaligned{\sc No Warranty} +\blank[big] + +\item +{\sc Because the program is licensed free of charge, there is no warranty +for the program, to the extent permitted by applicable law. Except when +otherwise stated in writing the copyright holders and/or other parties +provide the program ``as is'' without warranty of any kind, either expressed +or implied, including, but not limited to, the implied warranties of +merchantability and fitness for a particular purpose. The entire risk as +to the quality and performance of the program is with you. Should the +program prove defective, you assume the cost of all necessary servicing, +repair or correction.} + +\item +{\sc In no event unless required by applicable law or agreed to in writing +will any copyright holder, or any other party who may modify and/or +redistribute the program as permitted above, be liable to you for damages, +including any general, special, incidental or consequential damages arising +out of the use or inability to use the program (including but not limited +to loss of data or data being rendered inaccurate or losses sustained by +you or third parties or a failure of the program to operate with any other +programs), even if such holder or other party has been advised of the +possibility of such damages.} + + +\blank[big] +\midaligned{\sc End of Terms and Conditions} diff --git a/muse/doc/man/titlelogo.jpg b/muse/doc/man/titlelogo.jpg Binary files differnew file mode 100644 index 00000000..0c26f3e8 --- /dev/null +++ b/muse/doc/man/titlelogo.jpg |