summaryrefslogtreecommitdiff
path: root/muse/doc
diff options
context:
space:
mode:
Diffstat (limited to 'muse/doc')
-rw-r--r--muse/doc/CMakeLists.txt24
-rw-r--r--muse/doc/dimpl.odtbin0 -> 37053 bytes
-rw-r--r--muse/doc/dimpl/CMakeLists.txt41
-rw-r--r--muse/doc/dimpl/dimpl.tex865
-rw-r--r--muse/doc/man/de/CMakeLists.txt52
-rw-r--r--muse/doc/man/de/automation.tex33
-rw-r--r--muse/doc/man/de/figurepath.tex.in2
-rw-r--r--muse/doc/man/de/installation.tex63
-rw-r--r--muse/doc/man/de/man-de.tex413
-rw-r--r--muse/doc/man/de/midirecording.tex119
-rw-r--r--muse/doc/man/de/miditracks.tex132
-rw-r--r--muse/doc/man/de/projekte.tex102
-rw-r--r--muse/doc/man/de/struktur.tex43
-rw-r--r--muse/doc/manual-de.odtbin0 -> 50551 bytes
14 files changed, 0 insertions, 1889 deletions
diff --git a/muse/doc/CMakeLists.txt b/muse/doc/CMakeLists.txt
deleted file mode 100644
index 387df934..00000000
--- a/muse/doc/CMakeLists.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-#=============================================================================
-# MusE
-# Linux Music Editor
-# $Id:$
-#
-# Copyright (C) 2002-2006 by Werner Schweer and others
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#=============================================================================
-
-if (TEXEXEC_PATH)
- subdirs( dimpl man )
-endif (TEXEXEC_PATH)
-
diff --git a/muse/doc/dimpl.odt b/muse/doc/dimpl.odt
new file mode 100644
index 00000000..e62ccd90
--- /dev/null
+++ b/muse/doc/dimpl.odt
Binary files differ
diff --git a/muse/doc/dimpl/CMakeLists.txt b/muse/doc/dimpl/CMakeLists.txt
deleted file mode 100644
index 9611881e..00000000
--- a/muse/doc/dimpl/CMakeLists.txt
+++ /dev/null
@@ -1,41 +0,0 @@
-#=============================================================================
-# MusE
-# Linux Music Editor
-# $Id:$
-#
-# Copyright (C) 2002-2006 by Werner Schweer and others
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#=============================================================================
-
-set (SRC dimpl.tex)
-
-add_custom_target (
- dimpl
- DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/dimpl.tex
- COMMAND ${TEXEXEC_PATH}/texexec
- ARGS --language=en --verbose --batch --pdf
- --result=dimpl.pdf
- ${CMAKE_CURRENT_SOURCE_DIR}/dimpl.tex
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
-
-install_files ( /share/${MusE_INSTALL_NAME}/doc/ .pdf
- ${CMAKE_CURRENT_BINARY_DIR}/dimpl.pdf )
-
-set (extraClean dimpl.log dimpl.tmp dimpl.tuo dimpl.tui
- dimpl-mpgraph.mp mpgraph.mp )
-
-set_directory_properties( PROPERTIES
- ADDITIONAL_MAKE_CLEAN_FILES "${extraClean}"
- )
diff --git a/muse/doc/dimpl/dimpl.tex b/muse/doc/dimpl/dimpl.tex
deleted file mode 100644
index da5ea6c6..00000000
--- a/muse/doc/dimpl/dimpl.tex
+++ /dev/null
@@ -1,865 +0,0 @@
-%====================================================================
-% 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]}
- }
-
-\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{Process Structure}
-
-\chapter{Song}
- \section{Multithreading}
-
- \section{Editing}
- \subsection{Realtime Editing}
- \M\ allows for realtime editing. That means that you can edit
- a song while the sequencer is running.
- Two threads want to access data in the main {\tt Song()} class:
- the GUI thread and the realtime sequencer thread.
-
- This are the rules how \M\ handles {\tt Song()} data accesses:
-
- \startitemize[packed,broad]
- \item the GUI thread can only read {\tt Song()} data
- \item the GUI thread can request the sequencer thread to
- modify Song data
- \item the sequencer thread can modify {\tt Song()} data, but only
- on request of the GUI thread
- \stopitemize
-
- Interprocess communication is done via message passing.
- Communication from the gui thread to the sequencer thread is
- done in the following steps:
-
- \startitemize[packed,broad]
- \item the GUI sends a Message to the sequencer thread
- and waits for an answer
- \item once the sequencer thread is running (the JACK
- client {\tt process()} call) it processes the message and
- sends back an answer to the GUI process.
- \item the GUI process reads the answer and continues
- \stopitemize
-
- This scheme stops the GUI process in a defined state while the
- realtime process can safely manipulate the {\tt Song()} data.
-
- \subsection{User Transaction}
-
- A user transaction is a sequence of actions manipulating the
- main {\tt Song()} structure. Each action involves sending a
- message to the realtime thread. This means that every action
- stops the GUI thread for at most one JACK cycle.
-
- If a transaction consists of lot of actions then this scheme
- would be too slow. For such cases the sequencer thread is switched
- to "idle" mode, which ensures it is not touching the {\tt Song()}
- data anymore. Then safe manipulation of the data is possible.
-
- \subsection{Naming Conventions}
-
- There are several methods involved in an edit transaction;
- example for adding a part:
-
- \startitemize[packed,broad]
- \item {\tt cmdAddPart()}
- This implements a complete undoable user transaction
- and is called from the gui thread
- \item {\tt addPart()}
- This method is also called from the gui thread. It
- implements part of a user transaction. It is not
- surrounded by {\tt startUndo() endUndo()}.
- \item the realtime part (actually removing the {\tt Part} from the
- PartList) is done inline during processing of
- messages in the sequencer thread.
- \stopitemize
-
-
-\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 definition file should only define one
- instrument.
-
- An instrument\index{Instrument definition} is a property of the
- midi channel \index{Midi channel}.
- 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="Drum Kits">
- <drummap name="PoweredStd" hbank="63" lbank="32" prog="0">
- <entry>
- <name>Clave</name>
- <enote>24</enote>
- <anote>24</anote>
- </entry>
- <entry>
- <name>SdBrMtSt</name>
- <enote>25</enote>
- <anote>25</anote>
- </entry>
- ...
- </drummap>
- </PatchGroup>
-
- <PatchGroup name="Bass">
- <Patch name="Acoustic Bass" prog="32"/>
- <Patch name="Fingered Bass" prog="33"/>
- </PatchGroup>
- ...
- <Controller name="Brightness" type="Control" l="74" init="64">
- ...
- </MidiInstrument>
- </muse>
-\stoptyping
-
- \blank
-
- \subsection{Init Sequence}
- The {\tt Init} section declares a list of midi events to initialize
- the instrument. The section can be empty or absent.
-
- \subsection{Patch Groups}
- Patch Groups are used to structure the list of patches.
- 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
-
- \subsection{Patches}
-
- 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
-
- \subsection{Drum Maps}
- A drum map allows to define properties for every note in a patch.
- The {\tt drummap} entry looks like the {\tt Patch} entry and defines
- the banks and the program number for the drummap.
-
- \subsection{Controller}
- 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\ "{\tt 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 ctrlNo, 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, 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/CMakeLists.txt b/muse/doc/man/de/CMakeLists.txt
deleted file mode 100644
index ac009499..00000000
--- a/muse/doc/man/de/CMakeLists.txt
+++ /dev/null
@@ -1,52 +0,0 @@
-#=============================================================================
-# MusE
-# Linux Music Editor
-# $Id:$
-#
-# Copyright (C) 2002-2006 by Werner Schweer and others
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License version 2.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-#=============================================================================
-
-add_custom_target (
- manual
- DEPENDS
- ${CMAKE_CURRENT_SOURCE_DIR}/man-de.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/projekte.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/miditracks.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/struktur.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/midirecording.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/installation.tex
- ${CMAKE_CURRENT_SOURCE_DIR}/automation.tex
- COMMAND ${TEXEXEC_PATH}/texexec
- ARGS --language=en --verbose --batch --pdf
- --result=man-de.pdf
- ${CMAKE_CURRENT_SOURCE_DIR}/man-de.tex
- WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
- )
-
-install_files ( /share/${MusE_INSTALL_NAME}/doc/ .pdf
- ${CMAKE_CURRENT_BINARY_DIR}/man-de.pdf )
-
-set (extraClean man-de.log man-de.tmp man-de.tuo man-de.tui
- man-de-mpgraph.mp mpgraph.mp )
-
-set_directory_properties( PROPERTIES
- ADDITIONAL_MAKE_CLEAN_FILES "${extraClean}"
- )
-
-configure_file(
- ${CMAKE_CURRENT_SOURCE_DIR}/figurepath.tex.in
- ${CMAKE_CURRENT_BINARY_DIR}/figurepath.tex
- )
-
diff --git a/muse/doc/man/de/automation.tex b/muse/doc/man/de/automation.tex
deleted file mode 100644
index 36e2872b..00000000
--- a/muse/doc/man/de/automation.tex
+++ /dev/null
@@ -1,33 +0,0 @@
-
-%% \chapter{Automation}
-\section{Betriebsarten}
-
- In \M\ gibt es vier verschiedene Automations-Betriebsarten:
-
- \blank[big]
- \Input{Manuell:}
- Im manuellen Modus kommen Controllerveränderungen nur
- vom Mixer oder ChannelInfo. Die Schieber, Regler und
- Eigabefelder zeigen den aktuellen Zustand der Midigeräte.
- Wird z.B. der Volume Schieber bewegt, wo werden sofort
- entsprechende Midi Events zu den angeschlossenen Midigeräten
- geschickt.
-
- \Input{Read:}
- Die aktuellen Controllerwerte kommen ausschließlich von den
- aufgezeichneten Controller Spuren.
- Schieber und Regler des Mixers und des ChannelInfo Windows
- können manuell nicht verändert werden.
-
- \Input{Write:}
- Bei Play oder Record werden alte Controllerwerte
- durch die Werte der Schieber und Regler berschrieben.
-
- \Input{Read/Write:}
- Wird ein Schieber oder Regler angeclickt, so wird die
- Automation Betriebsart bis zum ''release'' von ''read'' auf ''write''
- umgeschaltet. Alle Controllerbewegungen werden aufgezeichnet
- und überschreiben alte Werte.
-
- \blank[big]
-
diff --git a/muse/doc/man/de/figurepath.tex.in b/muse/doc/man/de/figurepath.tex.in
deleted file mode 100644
index 0e2f7023..00000000
--- a/muse/doc/man/de/figurepath.tex.in
+++ /dev/null
@@ -1,2 +0,0 @@
-\setupexternalfigures[directory={@CMAKE_SOURCE_DIR@/doc/man}]
-
diff --git a/muse/doc/man/de/installation.tex b/muse/doc/man/de/installation.tex
deleted file mode 100644
index 4b45531c..00000000
--- a/muse/doc/man/de/installation.tex
+++ /dev/null
@@ -1,63 +0,0 @@
-%% \chapter{Installation}
- \section{Tips für Ubuntu/Kubuntu}
-
- \subsection{Alsa-Sequencer}
-
- \M\ benötigt das ALSA Sequencer Modul. Dies wird von Ubuntu leider
- beim Systemstart nicht installiert.
-
- Wir können das aber leicht durch einen Eintrag in {\tt /etc/modules}
- beheben:
-
- \starttyping
- sudo bash
- modprobe snd-seq
- echo snd-seq >> /etc/modules
- \stoptyping
-
- (Nachtrag: im aktuellen Ubuntu 04.07 ("festy") wird das Sequencer
- Modul standardmäßig geladen)
-
- \subsection{Realtime Clock}
-
- Normalen Programmen ist der Zugriff auf die Echtzeituhr
- (RTC = "realtime clock") von Linux
- verwehrt. \M\ benötigt jedoch eine genaue Uhr, um ein exaktes
- Miditiming erzeugen zu können.
- Zunächst wollen wir daher die RTC für alle Audioprogrammen
- verfügbar machen:
-
- \starttyping
- sudo chown -vv root:audio /dev/rtc
- sudo chmod g+rw /dev/rtc
- \stoptyping
-
- Jetzt haben alle Programme der audio Gruppe Zugriff auf die
- RTC, dürfen jedoch noch nicht die hohen von \M\ benötigten
- Auflösungen einstellen.
- Um dies zu Erlauben geben wir ein:
-
- \starttyping
- sudo bash
- echo 1024 > /proc/sys/dev/rtc/max-user-freq
- echo dev.rtc.max-user-freq=1024 >> /etc/sysctl.conf
- \stoptyping
-
- Durch den Eintrag in der Datei {\tt /etc/sysctl.conf} erfolgt diese
- Einstellung nun auch nach jedem Systemstart.
-
- \subsection{Realtime Rechte}
-
- Um Prozesse mit Echtzeit Privilegien starten zu können ergänzen
- wir die Datei {\tt /etc/security/limits.conf} um folgende Zeilen:
-
- \starttyping
- @audio - rtprio 99
- @audio - memlock 200000
- @audio - nice -10
- \stoptyping
-
- \subsection{Low Latency Kernel}
- \subsubsection{Interrupt Thread Prioritäten}
-
-
diff --git a/muse/doc/man/de/man-de.tex b/muse/doc/man/de/man-de.tex
deleted file mode 100644
index 2269e25a..00000000
--- a/muse/doc/man/de/man-de.tex
+++ /dev/null
@@ -1,413 +0,0 @@
-%====================================================================
-% 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]
-
-% typeset in unicode (utf8)
-% \enableregime[il1]
-\enableregime[utf]
-
-\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{\blank\hbox{\externalfigure[#1]}\blank}
-
-\define[2]\Screen{
- \placefigure[here][fig:#1]{#2}{\externalfigure[#1][scale=1600]}
- }
-\definedescription[Option][
- 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]
-
-\setuptyping[before=\blank\startbackground, after=\stopbackground\blank] % source code with background
-\setupwhitespace[medium]
-
-\component figurepath.tex
-
-%----------------------------------------------------------
-% 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
- \rightaligned{\externalfigure[titlelogo]}
- \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://sourceforge.net/projects/lmuse}
- \blank[line]
- Dieses Dokument wurde mit \pdfTeX\ und dem Macro Paket
- \ConTeXt\ erstellt.
- \blank
- \copyright 2006 Werner Schweer und Andere\par
- Titelgrafik \copyright Joachim Schiele
- \stopstandardmakeup
-
- \completecontent
-
-\chapter{\M\ Quickstart}
- \component midirecording.tex
- \section{Audio Playback}
- \section{Audio Recording}
-
-\component projekte.tex
-\component struktur.tex
-\component miditracks.tex
-
-\chapter{Automation}
- \component automation.tex
-
-\chapter{Funktionsreferenz}
- \section{Hauptfenster}
- \subsection{Menüs}
- Projekt
- Open Project
- Open Recent
- Save Project
- Import Midifile
- Export Midifile
- Import Wavefile
- Quit
- Edit
- Undo
- Redo
- Cut
- Copy
- Paste
- Delete Parts
- Delete Selected Tracks
- Add Track
- Add Midi Track
- Add Midi Output
- Add Midi Input
- Add Midi Generator
- Add Wave Track
- Add Audio Output
- Add Audio Group
- Add Audio Input
- Add Soft Synth
- Select
- Select All
- Deselect All
- Invert Selection
- Inside Loop
- Outside Loop
- All Parts on Track
- Pianoroll
- Midi Tracker
- Drums
- List
- Master Track
- Project Properties
-
- View
- Transport Panel
- Bigtime Window
- Mixer 1
- Mixer 2
- Marker
-
- Structure
- Global Cut
- Global Insert
- Global Split
- Copy Range
- Cut Events
- Midi
- Edit Instrument
- Reset Instr.
- Init Instr.
- local off
- Audio
- Bounce To Track
- Bounce To File
- Restart Audio
- Settings
- Configure Shortcuts
- Follow Song
- dont follow Song
- follow page
- follow continuous
- Midi Sync
- Midi File Export
- Preferences
-
- Help
- Manual
- MusE Homepage
- Report Bug
- About MusE
- About Qt
- What's This
-
- \subsection{Werkzeugleisten}
- Project Buttons
- Open
- Save
- Whats This
- Undo
- Redo
- Edit Tools
- Zeiger
- Stift
- Radiergummi
- Schere
- Kleber
- Linientool
- Mute
- Transport
- Loop
- Punch In
- Punch Out
- Gehe nach Anfang
- Zurückspulen
- Vorspulen
- Stop
- Play
- Record
- Panic
- Arranger
- Cursor
- Snap
- Len
- Pitch
- Tempo
- 50%
- N
- 200%
- Trackliste
- Einstellungen
- m global Mute
- s global Solo
- aR global AutomationRead
- aW global AutomationWrite
-
- Info Button
- Mixer Button
-
- \subsection{Trackliste}
- Midi Input
- Midi Output
- Midi Track
- Midi Synthesizer
- Audio Track
- Audio Input
- Audio Output
- Audio Group
- Audio Synthesizer
-
- \subsection{Arranger}
- Lineal
- Marker
- Locator
-
-
- \section{Globale Editor Funktionen}
- \subsection{Globaler Schnitt}
- Die ''Globaler Schnitt''-Funktion enfernt auf allen Spuren den Bereich
- zwischen der linken und rechten Marke. Nachfolgende Events rücken
- dabei auf. Auch Markerposition und Tempoevents werden
- verschoben. Lediglich stumm geschaltete Spuren werden nicht
- berücksichtigt.
-
- \subsection{Global Einfügen}
- Mit der ''Global Einfügen''-Funktion kann ein leerer Bereich eingefügt
- werden. Der Bereich wird an der Position des linken Markers
- eingefügt. Die Dauer des eingefügten Bereichs entspricht dem Abstand
- zwischen linker und rechter Marke. Marker und Tempoevents hinter der
- Einfügeposition werden entsprechend verschoben.
- Stumm geschaltete Spuren werden nicht verändert.
-
- \subsection{Global Splitten}
- Die ''Global Splitten''-Funktion entspricht der Scheren-Funktion für
- einzelne Parts. Im Gegensatz zur Scheren-Funktion wird jedoch nicht
- ein Part, sondern alle Parts an der aktuellen Markerposition
- geschnitten. Dies gilt nicht für stummgeschaltete Spuren.
-
- \subsection{Bereich Kopieren}
- Mit der ''Global Kopieren''-Funktion können komplette Teile eines
- Songs an eine andere Stelle kopiert werden:
-
- \startitemize[packed]
- \item stellen Sie die linke Marke an den Anfang des zu kopierenden
- Bereichs
- \item stellen Sie die rechte Marke an das Ende des zu kopierenden
- Bereichs
- \item setzen Sie den Lokator an die Einfgestelle
- \item wählen Sie ''Copy Range'' aus dem ''Struktur'' Menü.
- \stopitemize
-
- Wie bei allen anderen Strukturkommandos werden stummgeschaltete
- Spuren nicht berücksichtigt.
-
- \section{Arranger}
- \subsection{Spurtypen}
- \startitemize[packed]
- \item Midispur
- \item Audiospur
- \item Midiinput
- \item Midioutput
- \item Midigenerator
- \item Audioinput
- \item Audiooutput
- \item Audiogruppe
- \item Software Synthesizer
- \stopitemize
-
- \subsection{Spur Operationen}
- \startitemize[packed]
- \item Spur erzeugen
- \item Spur löschen
- \item Spur verschieben
- \item Spur kopieren
- \stopitemize
-
- \subsection{Part Operationen}
- \startitemize[packed]
- \item Part erzeugen
- \item Part löschen
- \item Part verschieben
- \item Part kopieren
- \item Part clonen
- \item Part declonen
- \item Part nach Vorne verlängern
- \item Part nach Hinten verlängern
- \item Part stummschalten
- \item Part einfärben
- \stopitemize
-
- \section{Pianoroll Editor}
- \section{Drum Editor}
- \section{Master Editor}
-
-\chapter{Installation}
- \component installation.tex
-
-\startappendices
- \component ../gpl.tex
- \completeindex
- \stopappendices
-\stoptext
-
diff --git a/muse/doc/man/de/midirecording.tex b/muse/doc/man/de/midirecording.tex
deleted file mode 100644
index c0c0e4d6..00000000
--- a/muse/doc/man/de/midirecording.tex
+++ /dev/null
@@ -1,119 +0,0 @@
-\section{Midi Recording}
- Auf der ersten Tour werden wir mit \M\ eine Midi Spur
- mit einem externen Synthesizer, einem Yamaha S90 aufnehmen.
-
- \subsection{Geräte verbinden}
- Für den Anschluß von Midigeräten gibt es verschiedene Möglichkeiten.
-
- \subsubsection{Midi}
- Der serielle Midi-Anschluß eines Keyboards eignet sich nicht zum
- direkten Anschluß an den PC Serienport. Bei Midi handelt es sich
- um eine galvanisch per Optokoppler getrennte Stromschnittstelle,
- während der PC eine RS232 Schnittstelle mit 12 Volt Pegeln bedient.
- Ein einfaches Umrüsten der PC-Schnittstelle mit einem Optokoppler
- funktioniert nicht, da der PC die MIDI-Taktrate nicht erzeugen kann.
-
- Als Lösung muß ein spezielles Midi-Interface her. Meist befindet sich
- eine Midi-Schnittstelle auf der Soundkarte. Doch Vorsicht, nicht
- alle Midi-Schnittstellen sind gleich gut, z.B. sind einige alte
- Soundblaster Modelle duch unglückliches Hardware-Design nicht in der
- Lage, die volle Midi Transferrate beim Senden von Midi Daten zu
- erreichen.
-
- \subsubsection{USB}
- Viele aktuelle Midigeräte besitzen einen USB Anschluß. USB ist schnell
- und flexibel und damit die Schnittstelle der Wahl.
-
- \subsubsection{ToHost}
- Einige ältere Midigeräte bieten einen einfachen PC Anschluß über
- einen normalen Serienport (''ToHost'' Schnittstelle genannt). Es
- handelt sich um einen normalen RS232 Anschluß, der die PC-üblichen
- Übertragungsraten versteht.
-
- \subsection{Neues Projekt erzeugen}
- Dann kanns losgehen. Wir starten \M\ und es erscheint das
- zuletzt bearbeitete Projekt so wie wir es verlassen haben.
-
- Um ein neues Projekt anzulegen clicken wir auf das Projekt
- Icon und der Projektdialog erscheint:
-
- \Fig{select_project}
-
- Wenn \M\ zum allererstenmal gestartet wird, erscheint der
- Projektdialog natürlich sofort, da es ja kein letztes Projekt
- gibt. Zum Projektdialog gelangen wir auch über den Projekmenü
- Eintrag ''Öffnen'' oder wer es ganz eilig hat tippt einfach
- {\tt Ctrl+O}.
-
- In der ''Projekt'' Eingabezeile geben wir nun einen Projektnamen
- für unser erstes Projekt ein und bestätigen dann durch clicken
- des ''Ok'' Buttons.
-
- \M\ fragt nun nach einem Template, mit dem das Projekt
- initialisiert werden soll:
-
- \Fig{select_template}
-
- Wir selektieren kein Template und clicken einfach ''Ok''.
- \M\ zeigt dann ein leeres Projekt:
-
- \Fig{main0}
-
- \subsection{Setup}
-
- \subsubsection{Spuren anlegen}
-
- Zunächst erzeugen wir einen ''MidiInput'' Track und checken,
- ob das Keyboard richtig angeschlossen ist.
-
- \subsubsection{Routing}
-
- \subsubsection{Midi Instrument}
- Im ''MidiOutPort'' Strip kann ein Midi Instrument ausgewählt werden.
- Dies ermöglicht es \M\ u.A. die Instrument-Patches anstatt per Nummer
- per Name anzuzeigen. Instrumente werden in einer ''{\tt *.idf}''
- (Instrument Definition File) beschrieben. Dies sind normale XML Text
- Dateien, die für jedes angeschlossene Gerät individuell erstellt werden
- können. In einer {\tt *.idf} Datei kann in einem ''Init'' Eintrag eine
- Serien von Midi Events definiert werden, die immer dann gesendet werden,
- wenn in \M\ der {\tt Midi->InitInstr} Button aktiviert wird. Wir nutzen diese
- Möglichkeit, um den S90 zu initialisieren.
-
- \subsubsection{Local Off}
- Wird ein Synthesizer ''standalone'' betrieben, dann ist die Tastatur
- intern direkt mit dem Tongenerator verbunden. Am Computer angeschlossen
- möchten wir jedoch Tastatur und Tongenerator als unabhängige Teile
- benutzen. Note On/Off Events sollen von der Tastatur nur zum Computer
- geschickt werden und nicht auch gleich zum internen Tongenerator.
- Der Tongenerator soll wiederum nur auf den Midi Input Anschluß hören
- und nicht auf die Tastatur. Für den S90 kann dieser ''Local Off''
- Mode durch Senden des SysEx Strings
-
- \starttyping
- 0xf0 0x10 0x6b 0x00 0x00 0x09 0x00
- \stoptyping
-
- eingeschaltet werden.
-
- \subsubsection{Sequencer Mode}
- Der S90 kenn Yamaha-Typisch verschiedene Modi. Wir benutzen den
- Sequencer Mode, in dem jedem Midi Kanal ein eigenes Instrument
- zugeordnet werden kann. Dieser Modus wird mit dem SysEx String
-
- \starttyping
- 0xf0 0x43 0x10 0x6b 0x0a 0x00 0x00 0x00
- \stoptyping
-
- eingeschaltet. Beide SysEx Kommandos sind unter dem ''init'' Label in
- der {\tt Yamaha-S90.idf} Datei eingetragen.
-
- \subsubsection{Midi Input Filter}
- Die Tastatur des Yamaha S90 kann ''After Touch'' Events erzeugen, d.h.
- nach dem Drücken einer Taste werden fortlaufend Events über den
- Anpreßdruck der Taste erzeugt. Diese Informationen benötigen wir
- nicht und filtern deshalb alle After Touch Events gleich bei der
- Aufnahme mittels des Midi Input Filters aus.
-
- \Fig{midifilter}
-
- \subsection{Aufnehmen}
diff --git a/muse/doc/man/de/miditracks.tex b/muse/doc/man/de/miditracks.tex
deleted file mode 100644
index 6e3a06c2..00000000
--- a/muse/doc/man/de/miditracks.tex
+++ /dev/null
@@ -1,132 +0,0 @@
- \section{Midi Routing}
-
- \section{Midi Setup}
- \subsection{Einfaches Setup}
-
- In einem einfachen Setup ist jeder Midi Anschluss des Rechners
- jeweils mit nur einem Midi Gerät verbunden. Außerdem hat jede
- Midi Spur einen eigenen Midi Kanal.
- Dieses Setup ist am flexibelsten und sollte nach Möglichkeit
- immer verwendet werden.
-
- \subsection{Erweitertes Setup}
-
- \index{mehrere Midi Spuren für einen Midi Kanal}
- Im erweiterten Setup werden mehrere Midi Spuren auf den gleichen
- Midi Kanal geroutet. Es ist zu beachten, das Midi Controller
- natürlich immer für alle Spuren des Kanals gelten. Controller
- können nicht individuell für jede Spur eingestellt werden.
-
- \subsection{Komplexes Setup}
- \index{mehrere Geräte an einem Midi Anschluß}
- Als komplex bezeichnen wir ein Setup, in dem an einem Midi Anschluß
- mehrere Midi Geräte angeschlossen sind.
- Jedes Gerät belegt einen oder mehrere der verfügbaren 16 Midi
- Kanäle. Es ist darauf zu achten, das die vergebenen Kanäle nicht
- überlappen. Dazu müssen die angeschlossenen Midi Geräte so
- konfiguriert werden, das sie nur auf die ihnen zugewiesenen Kanäle
- reagieren.
-
- Midi Meldungen, die nicht kanalgebunden sind (wie z.B. Sysex
- Meldungen) können an bestimmte Geräte gesendet werden, indem
- man jedem Gerät eine individuelle Geräte-Id gibt. Diese Geräte-Id
- muß dann in die entsprechenden Meldungen als Zieladresse angegeben
- werden.
-
- Da Midi Verbindungen nur eine sehr bescheidene \index{Midi Bandbreite}
- Bandbreite besitzen, sollte nach Möglichkeit das komplexe Setup
- vermieden werden.
-
- \section{Midi Eingänge}
- Ein Midi Eingang wird im Mixer als Strip und im Arranger als
- eigene Spur gezeigt.
-
- Ein Midi Eingang hat folgende Eigenschaften:
-
- \blank[big]
- \Input{Alsa Port:} dies ist die Route zu einem ALSA Midi Eingangs
- Port. Ein ALSA Port kann mit mehreren Midi Eingängen verbunden
- werden.
- \Input{Plugins:} die von ALSA gelesenen Midi Events können durch
- mehrere Plugins geroutet werden. Verfügbare Plugins filtern oder
- verändern die Midi Events.
- \Input{Outputs:} ein Midi Eingang hat 16 Ausgänge, jeweils ein
- Ausgang für jeden Midi Kanal. Jeder Midi Kanal kann individuell
- zu einem oder mehreren Midi Spuren geroutet werden.
- Midi Events, die von den Midi Spuren empfangen werden, haben
- keine Kanal-Information mehr.
- In einem einfachen Setup werden alle Kanäle aller Midi Eingänge
- zu allen Midi Spuren geroutet. Dies ist die Standard Vorgabe.
- \par
-
- \blank[big]
-
- \section{Midi Spur}
- Die Midi Spur enthält alle Midi Note On/off Events. Sie wird im
- Mixer als Strip und im Arranger als Spur dargestellt. Die
- Strip Darstellung im Mixer ist nicht sehr interessant, da eine
- Midi Spur kaum eigene Mixer relevante Parameter besitzt. In einem
- normalen Setup sollten Midi Spuren im Mixer ausgeblendet werden.
-
- Midi Spur Eigenschaften:
-
- \blank[big]
- \Input{Record:} schaltet die Spur in den Record Modus
-
- \Input{Monitor:} ist der Monitor Schalter eingeschaltet, werden
- bei Record alle Input Events zum Ausgang weitergereicht.
- Achtung: dies kann möglicherweise zu Midi Rückkopplungen
- führen!
-
- \Input{Mute:} schaltet die Spur stumm
-
- \Input{Solo:} ---nocht nicht definiert---
-
- \Input{Eingang:} die Spur Eingänge können zu Midi Eingängen
- geroutet werden
-
- \Input{Ausgang:} der Spur Ausgang kann zu einem oder mehreren
- Midi Kanälen geroutet werden. Midi Kanäle sind immer mit
- einem Midi Port verbunden.
-
- \blank[big]
-
- \section{Midi Kanäle}
- Midi Kanäle enthalten normalerweise alle Midi Controller Events.
-
- Midi Kanal Eigenschaften:
-
- \blank[big]
-
- \blank[big]
-
- \section{Midi Port}
-
- \index{Midi Port} Ein Midi Port representiert ein externes Midi
- Gerät und hat folgende Eigenschaften:
-
- \blank[big]
- \Input{Instrument:} \index{Midi Instrument} beschreibt die
- Eigenschaften des externen
- Midi Instruments. Das Instrument kann aus einer Liste verfügbarer
- Instrumentbeschreibungen ausgewählt werden.
-
- \Input{Master Volume:} \index{Midi Master Volume} ist ein Midi
- Controller, der die Lautstärke für alle Channel des Midi Ports
- einstellt.
-
- \Input{Geräte Id:} \index{Midi Geräte Id} werden mehrere Midigeräte
- an einen Midi Port
- angeschlossen, so müssen alle Geräte eine eindeutige Geräte Id
- besitzen. Mit dieser Id kann dann ein bestimmtes Gerät
- ausgewählt werden.
-
- \Input{Alsa Port:} dies ist die Route zu einem ALSA Midi Port.
- Ein Port Ausgang kann mit mehreren ALSA Ports verbunden werden.
-
- \blank[big]
-
- Jeder Midi Port besitzt 16 Kanäle.
-
- \section{Midi Synthesizer}
-
diff --git a/muse/doc/man/de/projekte.tex b/muse/doc/man/de/projekte.tex
deleted file mode 100644
index dcaa6c9a..00000000
--- a/muse/doc/man/de/projekte.tex
+++ /dev/null
@@ -1,102 +0,0 @@
-\chapter{Projekte}
-
- \section{Projekte}
-
- Ein \M\ Projekt \index{Projekt} ist ein Ordner, der alle
- Dateien des Projekts enthält. Dies sind im wesentlichen die
- aufgenommenen Wavedateien und die Projektdatei \index{Projektdatei}.
- Die Projektdatei enthält alle
- Informationen über das Projekt sowie alle Midi Daten soweit
- vorhanden.
-
- Beispiel einer Projekt Ordnerstruktur:
-
- \starttyping
- ~/MusE
- projects
- song1
- song1.med
- rec1.wav
- rec1.wca
- rec2.wav
- rec2.wca
- song2
- .
- .
- \stoptyping
-
- Im oberen Beispiel ist {\tt song1} der Projektordner
- \index{Projektordner} und
- {\tt song1.med} die Projektdatei. Die {\tt *.wav} Dateien sind
- Audio Aufzeichnungen und die zugehörigen {\tt *.wca} Dateien
- enthalten vorberechnete Daten zum schnellen Zeichnen der
- Wellenformdarstellung auf den Bildschirm.
-
- Der Standard-Projektordner \index{Standard-Projektordners}
- {\tt ~/MusE/projects} kann im ''Präferenzen'' Menü eingestellt
- werden.
-
- \section{Projekt auswählen}
-
- Nach dem Start von \M\ muß immer zunächst ein Projekt geladen oder
- ein neues Projekt erzeugt werden.
-
- \Screen{select_project}{Projekt auswählen}
-
- Normalerweise wird nach dem Start von \M\ das zuletzt bearbeitete
- Projekt geladen. Wer das nicht mag kann unter ''Präferenzen''
- einstellen, ob beim Start ein Standardprojekt \index{Standardprojekt}
- geladen oder immer zunächst nach einen Projekt gefragt werden soll.
-
- \section{Templates}
-
- Wird bei der Projektauswahl ein neues Projekt ausgewählt, dann
- wird im nächsten Schritt ein Dialog gezeigt, in dem ein Template
- aus einer Liste von verfügbaren Templates ausgewählt werden kann.
- Ein Template bestimmt die Grundeinstellungen für ein neues
- Projekt. Ein Template kann ein komplettes Projekt sein, welches
- jedoch keine Audiodaten enthalten kann und welches in der Regel
- auch keine Midi Daten enthält.
-
- \Screen{select_template}{Template auswählen}
-
- \M\ sucht Templates an zwei Orten:
- im globalen \M\ Installationspfad (Factory Presets) sowie im
- \M\ Verzeichnis relativ zum {\tt HOME} Verzeichnis des
- Anwenders (User Presets)
-
- \section{Projekt sichern (Backup)}
-
- Es gibt keine in \M\ eingebaute Funktion zum Sichern von Projekten.
- Da sich aber alle Projektdaten in einem Ordner befinden,
- können Standard-Tools zum Sichern verwendet werden.
-
- Projekte sind immer in sich komplett und enthalten keine Verweise
- auf Dateien außerhalb des Projektordners. Dies gilt nicht
- für Soundfonts \index{Soundfonts}, die z.B. vom Fluid-Synthesizer
- Plugin verwendet werden.
- Es wird empfohlen, diese Soundfonts\index{Soundfonts}
- auch als Kopie im Projektordner abzulegen.
-
- Projekte können auf der Platte ohne Probleme verschoben werden,
- da sie keine absoluten Pfade enthalten.
-
- \section{Wavedateien und Samplerate}
-
- \index{Wavedateien}\index{Audioprojekte}\index{Midiprojekte}
- \index{Samplerate}
- MusE unterscheidet zwischen Midiprojekten und Audioprojekten.
- Audioprojekte enthalten zusätzlich zu eventuell vorhandenen
- Mididaten Wavedateien.
-
- Audioprojekte sind immer mit einer bestimmten Samplerate
- verbunden und können nur geladen und bearbeitet werden, wenn
- die Projekt Samplerate mit der aktuellen Samplerate übereinstimmt.
-
- Die aktuelle Samplerate wird immer vom JACK Server bestimmt und
- kann von \M\ nicht verändert werden.
-
- Werden Wavedateien mit einer anderen Samplerate als der aktuellen
- importiert, so müssen sie konvertiert (resampled\index{resample})
- werden.
-
diff --git a/muse/doc/man/de/struktur.tex b/muse/doc/man/de/struktur.tex
deleted file mode 100644
index bd762d79..00000000
--- a/muse/doc/man/de/struktur.tex
+++ /dev/null
@@ -1,43 +0,0 @@
-\chapter{Struktur}
- \section{Spuren}
-
- Ein Projekt besteht aus Spuren analog einer analogen Bandmaschine.
- Die Spuren enthalten Midi- Audio- oder Controllerdaten.
- Spuren werden in \M\ in zwei Formen dargestellt:
-
- \blank[big]
- \Input{Arranger:} im Arranger werden alle Spuren vertikal in einer
- Liste dargestellt
-
- \Input{Mixer:} der Mixer zeigt alle Spuren in einer horizontalen
- Darstellung\par
-
- \blank[big]
-
- Tempo und Taktart sind interne Spuren, die nicht im Arranger oder
- Mixer gezeigt werden.
-
- \section{Parts}
-
- Midi- und Audiospuren können auf der Zeitachse in Parts unterteilt
- werden. Parts enthalten Midi- Audio- oder Conrollerdaten.
-
- Folgenden Operationen sind mit Parts möglich:
-
- \blank[big]
- \Input{verschieben} Parts können auf der Zeitachse und in andere
- Spuren des gleichen Typs verschoben werden.
- \Input{kopieren} klar!
- \Input{klonen} erzeugt einen Part, der sich die Midi- Audio- oder
- Controllerdaten mit dem Quellpart teilt. Wird ein Event in
- einem Clone-Parts verändert, so verändern sich auch alle
- Clones.
-
- \Input{Stumm} Parts können stumm geschaltet werden. Stumme Parts
- werden im Arranger grau dargestellt.
-
- \par
- \blank[big]
-
-
-
diff --git a/muse/doc/manual-de.odt b/muse/doc/manual-de.odt
new file mode 100644
index 00000000..1a8fb669
--- /dev/null
+++ b/muse/doc/manual-de.odt
Binary files differ