diff options
Diffstat (limited to 'muse/doc')
-rw-r--r-- | muse/doc/CMakeLists.txt | 24 | ||||
-rw-r--r-- | muse/doc/dimpl.odt | bin | 0 -> 37053 bytes | |||
-rw-r--r-- | muse/doc/dimpl/CMakeLists.txt | 41 | ||||
-rw-r--r-- | muse/doc/dimpl/dimpl.tex | 865 | ||||
-rw-r--r-- | muse/doc/man/de/CMakeLists.txt | 52 | ||||
-rw-r--r-- | muse/doc/man/de/automation.tex | 33 | ||||
-rw-r--r-- | muse/doc/man/de/figurepath.tex.in | 2 | ||||
-rw-r--r-- | muse/doc/man/de/installation.tex | 63 | ||||
-rw-r--r-- | muse/doc/man/de/man-de.tex | 413 | ||||
-rw-r--r-- | muse/doc/man/de/midirecording.tex | 119 | ||||
-rw-r--r-- | muse/doc/man/de/miditracks.tex | 132 | ||||
-rw-r--r-- | muse/doc/man/de/projekte.tex | 102 | ||||
-rw-r--r-- | muse/doc/man/de/struktur.tex | 43 | ||||
-rw-r--r-- | muse/doc/manual-de.odt | bin | 0 -> 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 Binary files differnew file mode 100644 index 00000000..e62ccd90 --- /dev/null +++ b/muse/doc/dimpl.odt 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 Binary files differnew file mode 100644 index 00000000..1a8fb669 --- /dev/null +++ b/muse/doc/manual-de.odt |