Laborejo Handbuch
================
:encoding: utf-8
:author: Nils Gey info@laborejo.org
:doctype: book
:toc:
:icons:
:data-uri:
:lang: de


// Keine Umlaute in Überschriften?!

== Begriffe
Tastatur meint immer da Computerkeyboard für Buchstaben
MIDI Keyboard meint immer ein Instrument für die Musikeingabe in den Computer.
Das Wort "Keyboard" ohne MIDI wird hier nicht verwendet.
Alles sind Chords, auch mit nur einem Ton.
Note meinte immer die einzelne Note, zwingend immer in einem Chord, aber sie ist nicht das gleiche.
Bogen kommt nie alleine. Immer Legatobogen(tie) oder Bindebogen(slur)

== Einleitung

=== Was ist Laborejo
Laborejo - _Music Notation Workshop_. Das heißt Arbeitsplatz oder Atelier für, oder mit, Musiknoten.

Laborejo versucht den kompletten musikalischen Verlauf von der Komposition (oder Transkription) über das Playback bis hin zum Druck zu unterstützen.

==== Für den normalen Benutzer
Laborejo ist ein grafischer (Qt4) Noteneditor der hochwertige Notations PDF produziert und in dem Playback Manipulation bis ins kleinste Detail sehr einfach sein. Es ist damit eine Synthese zwischen Notationsprogramm ("Engraver") und MIDI-Editor ("Sequencer"). Ein Arbeitsplatz ("Workshop") um Musik zu erzeugen, alles mit Musiknotation.

==== Für den Fortgeschrittenen Benutzer
Ein Programm das ein eigenes Datenformat verarbeitet, läd und speichert. Alle Daten sind letztendlich natives Python format und auf alle Daten wird direkt mit Python zugegriffen und modifziert. Für die meisten Tätigkeiten existieren kurze und einfache Befehle wie insert4() für eine Viertelnote.
Dabei ist Laborejo linear. Man bewegt einen Cursor hin und her und an dieser Stelle wird verarbeitet.
Prinzipiell ist dafür keine GUI von Nöten. Alles lässt sich als kurzbefehl oder sogar durch direkte Datenverarbeitung generieren.

Das Laborejo Datenformat speichert sehr viele Nuancen. Aus diesem Format lässt sich daher sehr leicht und direkt Lilypond Text (.ly) sowie Playbackdaten (smf, .mid, JackMidi) erzeugen. Beide Formate verfügen zwar über eine Vielzahl von eigenen Möglichkeiten, aber haben extreme Schwächen im jeweils anderen Metier (Notensatz<->Playback). Die von Laborejo erzeugten Formate lassen sich aber nicht mehr editieren sondern sind stets Exportformate. Für die normale Laborejo Nutzung fällt dies aber nicht ins Gewicht. Man arbeitet ausschließlich auf Laborejo Basis. Will man also ein PDF erzeugen und drückt "PDF Erzeugen" in Laborejo passiert in Wirklichkeit: Laborejo -> Lilypond -> PDF

Dies macht es möglich direkt aus Python heraus Programme zu schreiben, die mit Laborejo Daten umgehen, sie editieren oder erzeugen. Entweder vollautomatisch oder als interaktive GUI. Laborejos Qt GUI selbst ist solch ein Programm, prinzipiell ein optionaler Aufsatz.

==== Was ist Laborejo nicht
Ein Tool um Lilypond Text (.ly Dateien) oder MIDI (.mid) zu laden, grafisch zu editieren und wieder im gleichen Format speichern. Lilypond und Midi sind keine guten Datenverarbeitungsformate. Beide lassen sich sehr leicht generieren, aber sehr schwer per computer lesen und importieren. Was den Lilypond import angeht macht das nur Lilypond selbst gut und richtig, und selbst das nur in eine Richtung (Text->PDF)

=== Attituede und Sammelbecken fuer andere Kapitel
Laborejo ist kein neutrales Programm. Es antizipiert viele Entscheidungen, etwa das überlange noten automatisch im PDF mit ties versehen werden oder das Crescendos über die barlines rübergehen zur nächsten eins oder das Tuplets immer komplette nummern angezeigt kriegen. Hauptsächlich sind das Eigenschaften der lilypond Templates, also jederzeit änderbar.

"Das Programm verlangt so viele Entscheidungen! Warum muss ich einen Grundton für die Vorzeichen angeben, warum spielt es eine Rolle ob ich von C nach Cis oder von C nach Des transponiere, ich möchte nur einen Halbton hoch! Es interessiert mich nicht!" Dann lerne dich zu interessieren. Dies sind wirklich alles verschiedene Sachverhalte die zu unterschiedlichen musikalischen Ergebnissen führen. Wenn du nicht weißt warum das so ist und was du möchtest, dann ist das nicht schlimm, aber es zeigt, dass noch Nachholbedarf besteht. Und wenn es wirklich keine Rolle spielt, dann wähl halt einfach irgendetwas aus, aber beschwer dich nachher nicht, wenn du unerwartetes Verhalten des Programms oder deiner Musiker beobachtest.

Benutze ein Midkeyboard oder ein anderes Midi instrument. Alles andere ist unprofessionell und langsam. Laborejo unterstützt die Tastatureingabe zwar, und das auch mit vielen Helfern und Tricks, aber Musik verlangt Musikinstrumente.

Jede note steht für sich selbst. Warum sollte ein ein Akzidenz im gleichen Takt automatisch so sein wie das vorher? Nur weils bei Mozart so war? Mit midi keyboard ist das eh alles egal.

Musik ist eher in Schritten als in sprüngen. Daher ist es sehr einfach in Schritten zu gehen und sprünge erfordert mehr aufwand. Das ist ein Argument wenn jemand sagt "Ich möchte die buchstabentasten als note-insert oder cursor-to pitch". Die buchstabentasten sind einfach zu schade für diese verschwendung. Noteneingabe ist, wie gesagt, Aufgabe des Midi Keyboards.

Es ist kein Programm für n00bs. Du kannst auf jedem Level einsteigen, aber dann wirst du zwangsweise nachher mehr über Musik verstehen als vorher. Es gibt keine Wischiwaschi funktionen. Tranpose Notes 7 halbtöne hoch ist scheiße und das gibt es nicht.

Es schützt nicht gegen Dummheit. Nur weil etwas grammatisch richtig ist (siehe Klammer/Repeats) heißt es nicht, dass es auch sinn macht.  Man kann Konstruktionen in Laborejo bauen die nicht ganz genau definiert sind oder gar den output unterbinden. Ich werde einen teufel tun und jede noch so bescheuerte Situation durchspielen. Man ist irgendwann selbst schuld, als Benutzer. Wer wünscht das Bashscripte genrell und prinzipiell gegen "rm -rf /" geschützt sind soll halt Windows benutzen.

Es gibt keine leeren Takte. Nicht in Musik, nicht in Laborejo. Es ist sehr einfach Mehrtaktpausen zu verwenden, zu verstecken und zu verkürzen/verlängern. Leere Takte für Aufgabenblätter oder Kompositionslücken sind also kein Problem.

=== Drei Wege - Laborejo, Lilypond/PDF, Midi


==== Ideenphase
In der Ideenphase oder Kompositionsphase in der Lage sein mit Abkürzungen, Wiederholungen und Abkürzungen zu arbeiten um schnell und sauber alle Ideen festzuhalten.
Wer schon einmal auf Papier komponiert hat wird sicherlich schon einmal Verweise wie "Hier Takt 2-5 noch einmal" oder "Wie vorher, einen Ton höher" benutzt haben um vor lauter Schreibarbeit nicht die Ideen zu verlieren.
Manchmal möchte man zwei Stimmen tauschen oder sogar ganze Formteile neu anordnen. Hier stößt auch das sonst so flexible Papier an seine Grenzen.

Laborejo unterstützt diese Arbeitsweise. Es gibt mehrere Möglichkeiten diese Wiederholungen und Variationen, hier _Redundanzen_ genannt, so einzufügen, dass tatsächlich kein doppeltes Material entsteht. Möchte man einen Refrain verändern muss man dies nur einmal tun und nicht drei mal im ganzen Stück.

TIP: Das Thema ist so wichtig, dass es ein eigenes Kapitel hat: <<redundancy,Redundanz Vermeiden>>

Darüber hinaus sind die, von Texteditoren bekannten, Möglichkeiten vorhanden Auszüge und Teile zu duplizieren, umzustellen oder wieder zu entfernen.

=== Ein weiterer Noteneditor?
Es gibt doch schon so viele Noteneditoren. Warum brauchen wir noch einen?
Notation ist ledgilich eine Schrift um musikalische Ideen niederzuschreiben. Das Programm einen Noteneditor zu nennen wäre keine komplette Beschreibung.


== Grafische Benutzerumgebung
=== Hover Shortcuts
=== Mittlere Maustaste Toolbar

== Basic Editing

=== Objekte Einfügen und Löschen und Editieren
asd

=== Tracks
asd

=== Selections
asd

=== Copy, Cut, Paste
asd

=== Zoom und Objektabstand
asd

=== Keyboard Modes
asd

== Redundanz Vermeiden
[[redundancy]]
asd

=== Wiederholungen
asd

=== Klammern
asd

=== Substitutionen
asd

=== Master Track
asd

== Lilypond and PDF

=== Metadata
asd

=== Templates
asd

=== Directives
asd

== Midi

=== Midi in und Out - Jack Audio Connection Kit
asd

=== Performance Signatures
Performance Signatures sind destruktiv im Midi Export. Ein Ton hat wirklich weniger Velocity in der midi Datei. Aber in Laborejo ist es nur ein Overlay. Macht man copy und paste in ein anderes Stück werden damit keine Performance Werte kopiert. Eine Note ist nur eine Note.

=== Trigger
asd

== Configuration

=== Shortcuts
asd

=== User Scripts
asd


== Developer
Wenn man ein Item dupliziert (Paste, Duplicate, Split etc.) dann muss man darauf achten den InstanceCount zu resetten und den newName() aufzurufen.


== Anhang

=== Was wird wo gespeichert?

Technisch speichert Laborejo, das Backend, selbst keine Einstellungen. Erst die GUI fängt an sich an diese zu erinnern. Manche Sachen erscheinen wie "Gespeichert" sind aber in Wirklichkeit Teil des Programmcodes.

.Was wird wo gespeichert
[options="header"]
[frame="topbot",grid="none"]
|=======================
|Persistent                     |Session                        |.lbj Dateiformat
|Tastenbelegungen               |Hover Shortcuts & Hover Toolbar|
|Extra Toolbar Commands         |Extra Hover Toolbar Commands   |
|Programmweite Substitutionen   |                               |User-Substitutionen
|General Midi Mode Soundfont    |                               |JACK Midi Verbindungen
|                               |Kopieren & Einfügen Clipboard  |Undo & Redo
|                               |Auswahl / Selection            |Musikdaten
|                               |                               |Metadaten
|                               |                               |Lilypond-Template
|=======================

Persistent bedeutet diese Informationen werden auch behalten wenn man Laborejo beendet und neustartet. Alles in dieser Kategorie ist in config Dateien gespeichert, die sich in ~/.laborejo befinden.

Session ist alles zwischen Programmstart und Programmende. Man kann beliebig viele Dateien schließen und öffnen. Zum Beispiel kann man Musik kopieren, eine neue Datei öffnen und hier wieder einfügen, solange man das Programm zwischendurch nicht schließt. Das bedeutet aber auch, dass sich die Zwischenablage löscht, sobald man Laborejo schließt. Gleiches gilt für markierte Objekte ("Selection"), denn diese werden nicht als markiert gespeichert.

lbj ist das Laborejo Speicherformat. Jede Datei kann andere Einstellungen haben. Öffnet man in einer Session eine andere Datei so ändern sich also nicht nur die Musikdaten sondern z.B. auch die JACK Midi Verbindungen.


=== Unterschiedliche Redundanzen und wo sich diese befinden
*Playback meint ob man die ausgefaltete Redundanz hört. Dies ist immer der Fall.
*Lilypond. Man sieht die ausgefaltete Redundanz im exportieren PDF durch Lilypond.
*Selbstständiges Objekt. Man sieht die Redundanz als ein manipulierbares Objekt in der GUI bzw. im Backend. Das Gegenteil ist, dass die Redundanz in einem anderen Objekt steckt, etwa einem Chord.
Eine detailliert Erklärung zu allen Formen befindet sich im Kapitel <<redundancy,Redundanz Vermeiden>>.

.Redundanzverzeichnis
[format="csv"]
[options="header",cols="<,^,^,^,<"]
|=======================
Name,Playback,Lilypond,Selbständiges Objekt,Speicherort
Tremolo,O,X,X (Chord Effekt),Dyamisch generiert
Alberti Bass,O,O,X,Programmweite Substitutionen
Gitarren 'Lick',O,O,X,User-Substitutionen
8-Takt Loop,O,O,O,Geschlossener Container
Refrain,O,O,O,Container
Track,O,O,O,O,Global
|=======================
