# Das &kapp; Handbuch

## Einleitung

Dies ist "&kapp;", ein einfacher Sound-Editor für KDE3. Er enthält folgende Funktionalität:

- einfaches Ausschneiden, Kopieren und Einfügen

- mehrstufiges Rückgängig/Wiederherstellen

- Setzen von Markierungen

- Aufnahme-Funktionalität, inklusive Vorab-Aufnahme

- Wiedergabe via aRts, ALSA und OSS

- Aufnahme via ALSA und OSS

- MP3-Import

- Ogg/Vorbis Import und Export

- FLAC Import und Export

- einige Analyse-Funktionen wie Sonagramm

- verwendet intern 24 Bit Festkommaformat für Sample-Daten

- frei einstellbare Sample-Raten

- Unterstützung für das Bearbeiten von mehrspurigen Dateien

- Wiedergabe von Mehr-Kanal Audiodateien (Audioausgabe wird zu Mono oder Stereo heruntergemischt)

- erweiterbar durch ein einfach zu benutzendes Plugin-Interface

- Import/Export anderer Audio-Dateiformate durch libaudiofile

Wenn Sie interessiert was getan wurde oder was noch getan werden muss, dann schauen Sie in die Dateien `CHANGES` und `TODO`, die den Quelldateien beiligen. Hilfe und konstruktive Kritik sind immer willkommen.

### &kapp; Ressourcen

Falls Sie also mit den Entwicklern in Kontakt treten wollen, weiterführende Hilfe zur Benutzung von &kapp; brauchen, Patches, Fehlermeldungen oder anderes mitteilen wollen, dann werden die folgenden Adressen von Interesse sein:

- Projekt-Homepage

  Für Informationen über aktuelle Releases oder andere Informationen über dieses Projekt, besuchen Sie bitte die &kapp; Homepage.

- Mailing-Liste

  Wenn Sie Hilfe zur Verwendung von &kapp; benötigen oder an der Entwicklung teilnehmen wollen, treten Sie bitte der Mailing-Liste bei indem Sie folgende Seite besuchen: "https://lists.sourceforge.net/lists/listinfo/kwave-devel".

- SVN-Archiv

  Es gibt auch einen SVN-Server, unterstützt durch SourceForge, von dem Sie die Quellcodes der jeweils aktuellen Entwicklerversionen beziehen können. Für Anweisungen wie Sie auf den SVN-Server zugreifen können, lesen Sie bitte das entsprechende Kapitel zum Thema Erstellen aus SVN, lesen unter "http://sourceforge.net/svn/?group_id=6478", oder sehen Sie sich einfach im SVN-Baum über das Web-Interface um.

### &kapp; - Historischer Rückblick

Dieses Projekt wurde von Martin Wilz im Sommer 1998 begonnen und wurde entwickelt und verbessert durch ihn und einige andere. Im November 1999 begann Thomas Eschenbacher einige kleine Fehler hier und da zu beheben und vertiefte sich so mehr und mehr in den Quellcode des Programms. Bis heute hat er beinahe alle Komponenten des Programms erweitert, neu geschrieben oder berarbeitet und eine Menge Zeit investiert um es zu verbessern.

- 0.7.11 [2007-12-09]

  - neue interne Streaming-Architektur, basierend auf Qt anstelle von aRts

  - Unterstützung für aRts ist nun per Default deaktiviert

  - einige kleinere Bugfixes für x86_64

  - Bandpass-Plugin

- 0.7.10 [2007-08-08]

  - Generiersystem: verwendet METASOURCES=AUTO (vereinfacht einiges)

  - Generiersystem auf "cmake" portiert

  - Anpassung auf die neue Schnittstelle der FLAC-Bibliothek v1.1.3 und v1.1.4 (schliesst SF Bugs #1713655 und #1757716 + debian Bugs #427747, #426668 und #431199)

  - problematischen Code in libaudiofile ersetzt durch Code unter der GPL, Betrag von Bertrand Songis (behebt teilweise debian Bug #419124)

  - Aktualisierung der Online-Hilfe wegen Änderungen im Generiersystem

- 0.7.9 [2007-05-01]

  - Playback über ALSA: neue Auswahlmöglichkeit "Standard-Gerät"; Auswahl der "null"-Gerätes wenn keine Geräte gefunden wurden

  - Implementierung des Im- und Exports von Markierungen; derzeit nur für unkomprimierte wav-Dateien

  - neues Plugin zum Speichern von Blöcken zwischen Markierungen als einzelne Dateien

  - neue Funktion: Auswahl auf Markierungen erweitern

  - neue Funktion: Auswahl des Bereichs zwischen den nächsten/vorhergehenden Markierungen

  - Bugfix: Dateiname wird nicht mehr geändert wenn nur die Auswahl gespeichert wird

  - neue Option für 'configure': --enable-doc=yes/no zum aktivieren/deaktivieren der Generierung der Online-Dokumentation (default=yes)

- 0.7.8 [2006-12-31]

  - Bugfix: Workaround für einen Bug in ALSA, stürzte bei der Initialisierung des dsnoop-Plugins ab

  - Bugfix: Fehler bei der Behandlung von Auslagerungsdateien, ein Sample wurde beim Ändern der Dateigrösse zerstört. Betrifft ebenfalls ausschneiden, zuschneiden, löschen und viele andere Funktionen.

  - (nur englische Version) Verwendung des Wortes "loose" korrigiert (Dank an J.T. Hundley)

  - Bugfix: alte Version der Implementierung der Klasse ThreadsafeX11Guard wieder aktiviert um einen Deadlock zu beheben (schliesst Sourceforge-Bug # 1623357)

  - Aktualisierung der Dokumentation: verweist nun auf Subversion anstelle von CVS

  - zero-Plugin: neuer Modus, erlaubt das Einfügen eines Bereichs mit Stille

  - Verbesserung der Makro-Funktionen "Intro-Einblenden" und "Ende-Ausblenden", unter Verwendung des neuen Modus der "zero"-Plugins

  - Export von ASCII-Dateien

- 0.7.7 [2006-09-17]

  - neues Feature: ein kleines Widget das die aktuelle Position bei der Auswahl anzeigt, sowie die Ränder der Auswahl

  - neues Feature: Kontext-Menue für die Signal-Anzeige (rechte Maustaste)

  - Datei-Öffnen-Dialog verbessert: Auswahl von "Alle Dateien" und "Alle unterstützten Dateien"

  - Bugfix: Fehler bei der Behandlung der Maus-Auswahl

  - Bugfix: Aufnahme verwendete nur die Daten des ersten Kanals (schliesst Sourceforge Bug +1551050)

  - Installation der Plugins nach kde_moduledir/plugins/kwave anstelle von kde_datadir/kwave/plugins

- 0.7.6 [2006-06-05]

  - Bugfix: Absturz im Aufnahme-Dialog beim erstmaligen öffnen

  - Bugfix: kein Absturz mehr wenn das Aufnahmegerät nicht vorhanden ist oder das Öffnen fehlgeschlagen ist

  - Bugfix: Generierung der RPM-Paketabhhängigkeiten für libmad behoben

  - Bugfix: Anpassung der Grösse der Aussteuerungsanzeige wenn die Grösse des Aufnahmedialogs geändert wurde

  - Aufnahme-Plugin: Statusleiste hinzugefügt

  - Aufnahme-Plugin: automatische Erkennung von OSS-Geräten hinzugefügt

  - Aufnahme-Plugin: DSNOOP-Plugin als ALSA-Aufnahmequelle hinzugefügt

  - Aufnahme-Plugin: weniger störende Benachrichtigungsfenster, stattdessen wird in der Statusleiste eine kurze Nachricht für einige Sekunden eingeblendet

  - Aufnahme-Plugin: Logarithmische Skala zur Aussteuerungsanzeige hinzugefügt, verwendet jetzt drei verschiedene Farben

  - Wiedergabe-Plugin: automatische Erkennung von OSS-Geräten hinzugefügt

  - Wiedergabe-Plugin / ALSA: Unterstützung für 18 und 20 Bits/Sample

  - Wiedergabe-Plugin / ALSA: Unterstützung für Big-Endian

- 0.7.5 [2005-12-31]

  - Signal wird in einem anderen Satz von Farben gezeichnet wenn es nicht selektiert ist

  - Bugfix: Lösung für Deadlock-Situation beim Starten eines Plugins während ein anderes Plugin gerade läuft.

  - Workaround für Deadlock-Situation beim Schliessen des Programms während ein Plugin noch läuft

  - Bugfix: "Bereich löschen" wirkt sich nur auf ausgewählte Spuren aus

  - die Idee über Bord geworfen, gstreamer einzusetzen, aufgrund von ernsthaften Lizenzproblemen, wir warten stattdessen bis KDEMM herauskommt (KDE-4).

- 0.7.4 [2005-10-16]

  - Aufnahme via ALSA

  - Unterstützung für die stillschweigend geänderte API der Bibliothek FLAC++ v1.1.2 (schließt Sourceforge-Bug #1243707 + Debian-Bug #289953)

  - Bugfix in der MMX / SSE-Erkennung auf X64_64 Architektur (schließt Sourceforge-Bug #1244320 und Debian-Bugs #288781 + #327501)

  - Entscheidung: in zukünftigen Versionen soll gstreamer als Streaming Engine eingesetzt werden (wird v0.8 sobald Kwave frei von aRts ist)

  - Bugfix einiger deutscher Übersetzungen (schließt Debian-Bug #313790 und Bug #314000)

- 0.7.3 [2005-05-26]

  - Wiedergabe via ALSA

  - Dialog für Wiedergabe-Einstellungen komplett neu geschrieben, mit Unterstützung für aRts, ALSA und OSS

  - Wiedergabe-Plugin: Test-Ton abspielen

  - Aufnahme-Plugin: Erkennung wenn Gerät bereits offen ist, blockiert nun nicht mehr und zeigt eine Fehlermeldung an.

  - Glattere Anzeige des Signals im "Overview"-Modus (keine Lücken mehr), verbesserter "Polyline"-Modus.

  - einige von Kwave's Multithreading-Klassen durch Klassen von Qt ersetzt

  - Kompiliert unter SuSE-9.3

  - Ebuild-Datei für Gentoo Linux

- 0.7.2 [2004-12-31]

  - Weitreichende Überarbeitung der internen Streaming- und Speicher-Mechanismen, Support für mehrere Stripes. Bewirkt eine große Beschleunigung beim Umgang mit großen Dateien! z.B. Erzeugen einer 512MB-Datei vorher: über 350 Sekunden, jetzt: ca. 25 Sekunden (auf meinem System).

  - Optimierte Versionen vom memcpy() für i386 (verwendet MMX, MMXEXT, 3DNOW, SSE, SSE2) und PowerPC, kopiert vom xine-Projekt.

  - etwas Unterstützung für X86_64

  - Bugfix: "Optionen/Speicher"-Plugin, Limit für Auslagerungsdateien wird nur gesetzt wenn die Limitierung aktiviert wurde (Checkbox angeklickt)

  - Bugfix: Clipping im Ogg Import-Filter war fehlerhaft

  - Beschleunigung: Import von Ogg und MP3-Dateien verbessert

  - Aus der GSL-Bibliothek kopierten Code entfernt, stattdessen wird gegen libgsl dynamisch gelinkt

  - Im Toplevel-Makefile das Target "package-messages" hinzugefügt, für Übersetzer

- 0.7.1 [2004-07-10]

  - FLAC (Free Lossness Audio Codec) Import- und Export-Plugin

  - Beschleunigung des Öffnens und Speicherns von Dateien

  - die eigene Kopie von libmad wurde aus dem Sourcebaum entfernt, sie sollte inzwischen bei allen üblichen Distruibutionen vorhanden sein

  - Implementierung der Vorab-Aufnahme

  - Implementierung der Begrenzung der Aufnahmezeit

  - Bugfix: kleiner Fehler in der Zustandsmaschine des Aufnahme-Plugins

  - Bugfix: einige Layout-Probleme im "Hilfe über" und "Sonagram"-Plugin behoben

  - Bugfix: Abbrechen beim Speichern im Ogg-Format funktioniert jetzt

  - Aktualisierung der Online-Hilfe, viele Screenshots

  - Makefile-Abhängigkeiten der Plugin-Makefiles verbessert, paralleles Generieren zum Reduzieren der Kompilierzeit wird unterstützt

- 0.7.0 [2003-12-01]

  - Erste Version mit Aufnahme (noch Alpha-Stadium)

  - Workaround für uic-Aufruf entfernt

  - Bugfix: Behandlung von persistenten und einmaligen Plugins war falsch, was zur Folge hatte dass die Wiedergabe nur in der ersten Instanz des Hauptfensters funktionierte.

  - Projektdateien für Kdevelop-3 hinzugefügt

- 0.6.7 [2003-06-28]

  - neues Plugin "Tonverschiebung"

  - neues Plugin "Tiefpass"

  - Neues Plugin: "Kerbfilter", beigetragen von Dave Flogeras

  - enthält fehlerbereinigte Version der synth_pitch_shift Plugins von aRts

  - neues Feature "Vorhören", erste Implementierung im pitch_shift-Plugin

  - Portiert um mit Qt-3.2 ohne Qt-2 Kompatibilität zu übersetzen, funktioniert jetzt auch mit -DQT_NO_COMPAT und -DQT_CLEAN_NAMESPACE.

- 0.6.6 [2003-03-29]

  - arbeitet mit KDE-3.1

  - einige Verbesserungen am Generierungs-System. Lässt sich jetzt auch unter Debian, Mandrake, RedHat, Gentoo und SuSE kompilieren.

  - startet mit der zuletzt verwendeten Fenstergröße

  - Xt Toolkit-Optionen für Fenstergeometrie funktionieren wieder, einschließlich Workaround für einen Bug im Fenstermanagement von KDE3. Beispiel: "kwave -geometry 800x600"

  - Bugfix: Auswahl nach Links selektierte ein Sample zu wenig

  - Lautstärke-Plugin: einfaches Clipping

  - Lautstärke-Plugin: neuer Modus für "Multiplizieren mit / Dividieren durch einen Faktor"

  - newsignal und selectrange Plugin: KDoubleNumInput mitsamt seinem unsinnigen Verhalten bei der Eingabe und bei der Darstellung losgeworden

  - selectrange Plugin: Startposition der Auswahl kann eingestellt werden

  - kann libmad und libaudiofile des Hostsystems verwenden falls möglich.

  - zeigt den "Datei-Eigenschaften"-Dialog wenn unter einem anderen Mime-Typen gespeichert wird

- 0.6.5 [2002-11-09]

  - MP3 import mit ID3 tag-Support via id3lib und libmad

  - Ogg/Vorbis Import und Export (nur im ABR-Modus)

  - neues Plugin "volume"

  - Anzeige des ausgewählten Bereichs als Zeit (Feature-Wunsch von Christian Hollaender)

  - Unterstützung für das Speichern komprimierter Dateien

  - keine Unterstützung von Qt2/KDE2 mehr, jetzt nur noch Support für Qt3/KDE3

  - playback plugin: "Auswahl..."-Button aktiviert um die Auswahl anderer Wiedergabegeräte zu ermöglichen (Feature-Wunsch von Len Ovens)

  - Problem mit Name-Mangling der Plugins bei verschiedenen gcc-Versionen gelöst

  - Funktioniert mit gcc-3.2 / Problem mit __dso_handle behoben

  - Strengere Checks für einige Programme im configure-Skript

- 0.6.4 [2002-06-30]

  - Unterstützung für andere Dateiformate / libaudiofile integriert

  - Bugfix: Drag and Drop hat beim Verschieben nach links von der aktuellen Auswahl falsche Bereiche gelöscht

  - automatische Reparatur von beschädigten Wav-Dateien

  - Bugfix: Speichern der Auswahl funktioniert wieder

  - libkwavemt in libkwave integriert

  - Zoom-Faktor durch Zeitangabe ersetzt, z.B. Zoom auf "1 Minute" (Feature-Wunsch von Gilles Caulier)

  - Menue-Einträge für Wiedergabe-Steuerung

  - einige Icons in den Menues hinzugefügt

  - KFileDialog durch Subklasse KwaveFileDialog ersetzt (umgeht einige Bugs im original KDE-Dialog)

  - kleines Kapitel über die Grundlagen digitaler Audiobearbeitung in der Online-Hilfe hinzugefügt

  - Plugin "select range" hinzugefügt

- 0.6.3 [2002-03-01]

  - einfaches Drag and Drop

  - französische Übersetzung

  - Behandlung von "Datei geändert"

  - zeigt eine Meldungsbox und bricht ab wenn das Laden einer Datei fehlschlug

- 0.6.2 [2001-12-24]

  - neues Plugin "amplifyfree"

  - neues Plugin "noise"

  - neues Adapter-Framework für aRts Plugins. Nun ist Kwave in der Lage existierende aRts Plugins in seine eigenen Plugins zur Klangbearbeitung einzubinden

  - Dokumentation nach XML / Docbook-4.1 konvertiert

  - Wiederherstellung von beschädigten Dateien wenn die Länge nicht Null ist, der Längen-Eintrag im wav-Header jedoch schon (kommt z.B. vor, wenn krecord während der Aufnahme abgestürzt ist)

  - Bugfix: Freigabe von virtuellem Speicher im MemoryManager behoben

  - Bugfix: Problem mit TSS in TSS_Object-Cleanup

- 0.6.1-1 [2001-09-01]

  - Bugfix: Track-Klasse machte doppelte Einträge in die Stripe-Liste beim Einfügen in leere Tracks

  - merkwürdiges Problem mit dem Verhalten von Dialogen behoben, scheint so als hätte Qt Probleme mit verschachtelten Layouts :(

- 0.6.1 [2001-08-24]

  - Verwendung von virtuellem Speicher

  - Änderungen in den Makefiles: HTML-Doku bleibt in der Distribution nachdem es mit den Dokumentations-Tools von KDE zu viel Ärger gab

  - Beim Einfügen eines Signals in ein Signal mit einer anderen Anzahl von Tracks wird das Ergebnis gemischt (noch nicht optimiert/langsam)

  - Kompilier-Problem mit gcc-2.96/gcc-3.0 behoben

  - fehlendes Header-File in NewSigDlg.ui ergänzt

  - das RPM sollte wieder relozierbar sein

  - Bug im Shutdown-Ablauf behoben, Zwischenablage wird nun vor dem Beenden der Applikation geleert

- 0.6.0 [2001-07-29]

  - Portiert nach Qt-2 und KDE2

  - komplett neuer interner Aufbau

  - Plugins können auch vom Anwender-Verzeichnis geladen werden

  - libkwave ist integriert und wird (zumindest von mir) nicht mehr als separates Paket weitergepflegt

  - Wiedergabe via aRts

  - weitere Bugfixes, zu viele um sie hier aufzuzählen...

- 0.5.5-1 [2001-02-23]

  - Bugfix: Auswahl über Ende der Datei hinaus ist nicht mehr möglich

  - Bugfix: Kein Überlauf im wav-Header beim Speichern großer WAV-Dateien (über 268MB) (Bug berichtet von Sven-Steffen Arndt, ssa29@gmx.de )

- 0.5.5 [2000-12-01]

  - neues Playback-Handling, erlaubt Pause/Fortsetzen

  - Größe des Wiedergabe-Buffers auf 256 bis 65536 Bytes beschränkt wegen Problemen (System-Hänger) mit kleinen Wiedergabe-Buffern mit 16 bis 64 Bytes (könnte Hardware-Problem sein)

  - Werkzeugleiste für einige Standard-Operationen eingefügt

  - Einige Bugs mit der Maus-Auswahl behoben

  - OverViewWidget überarbeitet (wird im Hauptfenster und Sonagram verwendet)

  - Menue-Kommando "Auf Auswahl vergrößern" korrigiert

  - Sonagram: Speichern in Datei, automatische Helligkeits-Anpassung

  - QFileDialog durch KFileDialog ersetzt

  - getestet mit AMD Athlon-optimierendem Compiler (gepatchter pegcs)

  - einige Bugfixes für sichereres Multithreading

  - Checks für einige Header-Dateien im configure-Script (wegen einem Problem berichtet von issiac@evcom.net )

- 0.5.4-4 [2000-10-03]

  - Klassen Mutex und MutexGuard hinzugefügt

  - Sonagram: transparenter Hintergrund für das Bild

  - sizeHint() und minimimSize() für ScaleWidget und OverViewWidget hinzugefügt

  - Sonagram: (Notwendigkeit für) SonagramContainer entfernt, verwendet jetzt stattdessen QGridLayout

  - SignalProxy ins mt Unterverzeichnis verschoben

  - X11 Synchronisationsproblem mit SignalProxy behoben

  - Unterstützung für TSS (thread-specific storage) zu den mt-Klassen hinzugefügt

  - einige Multithreading-Klassen hinzugefügt: Thread, AsyncObject, ...

  - Präfix "get" von allen Member-Funktionen entfernt. Dies ist der neue KDE/QT Coding-Style.

  - Online-Dokumentation aktualisiert, zeigt auf neue Kwave-Homepage auf http://kwave.sourceforge.net/

  - Klasse ImageView: immer Neuzeichnen (möglicherweise haben sich die Bild-Daten geändert)

  - Bugfix: Auswahl und Wiedergabeposition werden nicht gezeichnet wenn keine Datei geladen ist

- 0.5.4-3 [2000-09-09]

  - Titel des Sonagram-Fensters wir aktualisiert wenn der Dateiname sich geändert hat

  - Lösung für das Problem der Synchronisation von X11 und Qt in einer Multithreading-Umgebung gefunden

  - Bug in der "Halt"-Funktion (Wiedergabe) behoben

- 0.5.4-2 [2000-08-20]

  - Geometrie/Layout Mangement für MainWidget

  - Höhe des angezeigten Signals beschränkt. Wenn nicht alles auf die Anzeige passt, erscheint ein Scrollbalken auf der rechten Seite.

  - Größe des TopWidget auf sinnvolle Werte begrenzt

  - Automatische Abhängigkeiten der Plugins funktionieren wieder

- 0.5.4-1 [2000-07-29]

  - Wiedergabe-Dialog korrigiert

  - Start der Arbeiten an einem neuen Plugin-Interface

  - Geometrie/Layout Management für den Einstellungsdialog des Sonagrams

  - Formatierung von Auswahl und Zeit (KwavePlugin::ms2string)

  - Plugins können jetzt aus mehreren Quelldateien bestehen

- 0.5.4 [2000-07-12]

  - einige kleinere Änderungen in den Makefiles

  - Ausgabe der Dokumentation in "de" und "en" aufgeteilt

  - symbolische Links zum englischen Hilfe-Verzeichnis von "de" und "default" Verzeichnis während make install und in den post und postun-Skripten des Specfiles. Der User sollte zumindest die englische Hilfe bekommen...

  - Alpha-Version der englischen Dokumentation fertig

  - Automatische Aktualisierung der Versions-Historie im docbook-File wenn die Datei geändert wurde (nur englische Version)

  - CVS ist aktiviert auf sourceforge.net

  - einige Überschriften in dieser Datei geändert

  - angefangen eine neue Dokumentation / Online-Hilfe mit docbook

- 0.5.3 [2000-06-12]

  - wenn eine Datei mit ungültiger Größe geladen wird (z.B. eines das mit "arecord" aufgenommen wurde), wird eine Meldung angezeigt und die Datei abgeschnitten

  - herausgefunden dass wir ALSA benötigen um 24 und 32 Bits/Sample wiederzugeben

  - Wiedergabe in Stereo

  - (x) ausgewählte Kanäle werden auf die (y) Kanäle des Ausgabegerätes bei der Wiedergabe über eine x:y Übersetzungs-Matrix mit linearer Skalierung abgebildet. Alle Werte für x und y außer Null sind erlaubt.

  - Wiedergabe nur für ausgewählte Kanäle

  - Überarbeitung des Dialogs der Wiedergabeeinstellungen (Plugin)

  - große Überarbeitung des Wiedergabe-Codes

  - schweren Bug in SignalManager::readWavChunk() behoben, stürzte ab wenn nach dem wav-Chunk noch Daten waren

- 0.5.2-12 [2000-06-02]

  - AsyncSync-Klasse nach libgui kopiert, sollte verwendet werden um die Qt-Bibliothek threadsicher zu verwenden

  - Handling des "selected"-Flags von SignalManager in die Signal-Klasse verschoben

  - Track-Auswahl behoben wenn hinzugefügt oder gelöscht wurde

- 0.5.2-11 [2000-05-28]

  - config.h in jede Quelldatei aufgenommen (außer in den Plugins)

  - Export nach ASCII für multi-Track Signale (Import ist noch zu erledigen, ist momentan nur Mono)

  - Speicherlecks und inkonsistente delete-Operationen behoben (z.B. "delete" anstelle von "delete[]")

  - Unterstützung des Fehlerdetektions- und Speicher-Debugging-Tools "Insure++ Lite 4.1" (und Tests). (./configure --enable-insure=yes ...) -> Dank an ParaSoft Corporation dass sie diese eingeschränkte Version verfügbar gemacht haben (http://www.parasoft.com)

  - SignalWidget verwendet drei Layer zum Zeichnen, beschleunigt das Neuzeichnen nach Maus-Selektion um etwa Faktor 14(!!!) auf meinem System :-))

- 0.5.2-10 [2000-05-21]

  - einige kleinere Bugfixes in den Makefiles

  - kwave.spec wird gespeichert und in das Source-Archiv eingebunden, damit "rpmbuild -ta kwave-x.x.x-x.tar.gz" funktioniert

  - neue README-Datei geschrieben, Martin's Version nach README.OLD umbenannt

  - RPM_OPT_FLAGS werden an die Compiler-Optionen angehängt, damit funktionieren Pentium-Optimierungen :-)

  - zeigt eine Meldungsbox wenn das Laden einer Datei fehlschlug

- 0.5.2-9 [2000-05-19]

  - Liste der letzten Dateien wird synchronisiert über alle Toplevel-Fenster

  - dutzende Speicherlecks behoben, fehlende ASSERT-Konstrukte, fehlende Variablen-Initialisierungen und mögliche Divisionen durch Null

  - Hilfe-Menue auf die rechte Seite ausgerichtet (MenuRoot kann nun den Befehl "#separator" verarbeiten)

- 0.5.2-1...0.5.2-8 [...2000-05-18]

  - alle Vorkommnisse von sprintf mit snprintf ersetzt, sowie strcpy mit strncpy (an insgesamt 92 Stellen) !

  - Zoom-Faktor wird nicht angezeigt wenn nichts geladen ist

  - Behandlung von hinzufügen/löschen: Auswahl/Speaker werden verschoben

  - einige Variablen/Parameter in "unsigned" geändert (vereinfacht Bereichsüberprüfungen)

  - diese Datei verschönert

  - den gesamten Quellcode verschönert nach meinem Lieblings-Codierungsstil. -> vielen Dank an die Entwickler des Paketes "Artistic Style", astyle-1.11.4-1 hat gute Arbeit geleistet :-)

  - das nervige Geflacker im Hilfe/Über-Dialog abgestellt

  - Checks für die Größe von char, short und int im configure-Skript

  - globals.app wird nicht mehr verwendet (obsolet, sollte von libkwave entfernt werden)

  - MessagePort wird nicht mehr benutzt (obsolet, sollte aus libkwave entfernt werden)

  - mehrere Toplevel-Fenster sind möglich

  - X toolkit-Parameter zum Laufen gebracht (insbesondere "-geometry")

  - Bugfix beim Laden/Speichern von 8-Bit .wav-Dateien (sind immer unsigned !)

  - KOMPLETTE ÜBERARBEITUNG DER INTERNEN KOMMANDO-STRUKTUR

    - verwendet Kombination aus Signals/Slots und String-Messages

    - hierarchische Bearbeitung: Kommandos werden "nach oben" weitergeleitet bis sie das TopWidget erreichen

    - das TopWidget (höchste Ebene) verteilt die Kommandos und leitet sie an die niedrigeren Ebenen weiter

- 0.5.2 [2000-04-24]

  - rpm-Paket sollte sich ohne vorherige Installation von Kwave kompilieren und installieren lassen

  - Verzeichnis "${KDEDIR}/share/doc/HTML/default" vom rpm entfernt um Konflikte mit dem existierenden zu vermeiden

  - Shift+Home/Shift+End erweitert die Auswahl bis zum Start/Ende des Signals

  - Bugfix in der Signal-Anzeige: Signal wird nicht länger invertiert

  - selectrange() funktioniert jetzt

  - der Zoom-Faktor gibt jetzt den "realen" Zoom-Faktor an

  - einige Bugfixes im Menue-System / Aufräumarbeiten

  - komplette Überarbeitung von Zoom und Offset-Behandlung

    - einfache Polygon-Linien anstelle von Tiefpass-Interpolation wenn der Zoom-Faktor unter 10 Pixels pro Sample liegt

    - Tiefpass-Interpolation be mehr als 10 Pixels per Sample

  - Bugfix in KwaveApp: setzt jetzt globals.app auf this wenn es vorher Null war, stürzt jetzt nicht mehr beim Laden einer Datei über die Kommandozeile ab

- 0.5.1-4

  - lässt sich nun unter RedHat 6.1 / Halloween IV genauso kompilieren und starten wie unter SuSE 6.2

  - Versionsinfo von libkwavegui wird auf die Version des Programmpakets gesetzt

  - Bugfix in plugins/template/Makefile.am: .moc-Dateien werden bei make distclean und anderen Targets nicht mehr generiert

  - Compiler-Flags werden beim Kompilieren der Plugins weitergegeben

  - kompiliert mit --no-rtti. Das war notwendig um mit den KDE-Bibliotheken von RedHat zu kompilieren, die anscheinend keine RTTI enthalten. Als Nebeneffekt verschwanden alle Warnungen beim Linken der Programme/Bibliotheken :-)

  - configure-Parameter --enable-debug funktioniert wieder

  - ASCII Import und Export funktioniert jetzt (nur Mono)

  - Bugfixes in einigen Plugins, jetzt kompilieren alle ohne Warnungen/Fehler

  - Plugins werden in alphabetischer Reihenfolge bearbeitet

  - alle Plugins werden automatisch gefunden und kompiliert

  - neues Target "make src.rpm" erzeugt nur ein Source-RPM

- 0.5.1-3

  - Anzeige wird nach links gescrollt oder gezoomt wenn etwas vom Ende der Datei gelöscht wird

  - Curve-Parameter von Einblenden/Ausblenden funktionieren wieder

- 0.5.1-2 [2000-03-16]

  - viele "klocale->translate(...)" in "i18n(...)" konvertiert

  - Target "make messages" funktioniert wieder

  - Konverter für menus.config, erzeugt dummy .cpp-File das dann via i18n behandelt wird

- 0.5.1-1 [2000-03-13]

  - neues Target "make rpm" erzeugt Binary und Source RPM packages

  - Shared-Library Problem im Build-System behoben

- 0.5.1 [2000-02-28]

  - Menue-Punkte können Gruppen zugeordnet werden

  - SignalWidget::info nach "refresh" umbenannt

  - viele Aufräumarbeiten in Header-Files in src und libgui

  - Menue-Management wurde komplett neu geschrieben:

    - Menu, NumberedMenu und MenuCommand-Klassen wurden gelöscht

    - neue Klassen: MenuNode, MenuItem, MenuSub, MenuToplevel und MenuRoot

  - Menue-Einträge können Icons besitzen

  - Menue-Einträge können eindeutige String-IDs besitzen

  - Menue-Spezialkommandos beginnen mit "#" an

  - erste Versuche zur Internationalisierung

  - Liste der letzten geöffneten Dateien wird nach Zeit des letzten Zugriffs sortiert

- 0.5.0-1 [1999-12-27]

  - meine Änderungen aus den Makefiles in die Makefile.am verschoben

  - Targets "make release", "make patchlevel" und einige Skripte hinzugefügt

- 1999-12-19 (by Thomas.Eschenbacher@gmx.de)

  - Veränderungen an einigen Makefiles und am configure-Skript wieder eingespielt nachdem sie durch Martin's Änderungen verloren gingen

  - Tastenkürzel für Mixpaste von CTRL-SHIFT-X auf CTRL-SHIFT-C geändert

  - "Zuschneiden"-Befehl im Edit-Menue hinzugefügt

  - "Mixpaste"-Kommando zum Laufen gebracht

  - Aufruf von "Löschen" korrigiert, löscht jetzt wirklich anstatt auszuschneiden und die Auswahl in die Zwischenablage zu kopieren (bewahrt den Inhalt der Zwischenablage)

- 1999-12-18 (by mwilz@ernie.mi.uni-koeln.de)

  - Dateinamen geändert um die Klassen-Namen wiederzugeben

  - Eine Datei pro Klasse ist nun Standard

  - führendes "Kwave" in Klassen-Namen der meisten Klassen entfernt

- 1999-12-10 (by Thomas.Eschenbacher@gmx.de)

  - Compiler-Option -Werror entfernt (verursachte Ärger mit dem confiure-Skript)

  - schlimmen Bug in SignalManager::save behoben der Abstürze an verschiedensten Stellen im Programm und in libstdc++ verursachte

- 1999-12-09 (by Thomas.Eschenbacher@gmx.de)

  - dem Destructor von SignalManager mit etwas Code gefüllt, dies behebt ein riesiges Speicherleck !

  - TODO-Datei hinzugefügt

  - -Werror zu den Compiler-Optionen hinzugefügt wenn Debugging aktiviert ist

  - einige include-Dateien in libgui aufgeräumt

- 1999-12-07 (by Thomas.Eschenbacher@gmx.de)

  - SignalManager::writeWavChunk verwendet Buffer zum Schreiben (um einiges schneller!)

  - Bugfix: Überschrift des Hauptfensters ändert sich beim "Speichern Unter"

  - Bugfix: ausgewählte Auflösung wird berücksichtigt

  - Bugfix: Überschrift des Hauptfensters ändert sich beim "Speichern Unter"

  - Bugfix: SignalManager::writeWavChunk zerstört jetzt nicht mehr Daten beim Speichern

  - make distclean im Projekt-Hauptverzeichnis löscht auch Dateien mit 0 Bytes, *.orig, *.rej und *~ (macht einfach sauberer als vorher)

  - symbolische Links nach Makefile, Makefile.in und Makefile.am im Plugins-Verzeichnis werden mit "make distclean" gelöscht und mit "make" neu aufgebaut (Änderungen in den referenzierten Makefiles im Template-Verzeichnis werden nicht tausend mal wiederholt wenn mit diff ein Patch gemacht wird)

  - Aufräumarbeiten, einige alte Backup-Dateien entfernt

  - verbesserter Support für Debugging

  - "configure --enable-debug=yes" (-g und -DDEBUG Compiler-Flags)

  - große Teile der Makefile.in neu geschrieben für die Plugins

  - Compiler-Option -O2 hinzugefügt

- 1999-12-03 (by Thomas.Eschenbacher@gmx.de)

  - zusammengeführt mit Martin Wilz's Version

- 1999-11

  - Versionsmanagement-Skripte beigetragen von Thomas Eschenbacher

  - verwendet nun KTMainWindow für Toplevel-Widgets

  - verwende Timer für den message-Port -> Alternative (Threadsichere) Nachrichtenverteilung anstelle von Signals/Slots

  - Labelling-Code neu geschrieben, nun inkompatibel mit alten Versionen

  - Batch-Ladefunktionen

- 1999-10

  - Löschen von Tracks funktioniert wieder

  - Savelabel-Dialog korrigiert

  - Hüllkurven-Dialog (String-Handling) behoben

  - einige Funktionen über die neue String-basierte Aufrufmethode angebunden

  - einige Abhängigkeiten zwischen altem Code und neuen Klassen behoben (es sind immer noch einige zu erledigen !)

  - Speichern sollte jetzt wieder funktionieren

  - Clipboard-Klasse zurechtgestutzt

  - Color-Klasse als Wrapper für QColor (wird vielleicht später mal unabhängig)

  - Curve-Klasse überarbeitet für Erzeugung aus String, Interpolation verwendet jetzt Curve-Objekte

  - GUI-Funktionen in neue Bibliothek (libkwavegui) verschoben

  - neue Klassen: Parser DynamicLoader Filter (waren vorher structs)

  - GUI-unabhängige Funktionen in Bibliothek ausgelagert (libkwave)

  - Überarbeitung der Dialoge in einzelne Dateien und einzelne Plugins

  - neues Aufrufschema über String-Kommandos. Dies wir Scripting und Makro-Definitionen ermöglichen. Multithreading wird um einiges einfacher weil nur ein String übergeben werden muss und die Parameter in erst im jeweiligen Thread extrahiert werden.

  - I/O-Funktionen und Wiedergabe an SignalManager angepasst

  - Einführung des SignalManager für Verwaltung von mehreren Tracks

- 0.29.5 [1998-04]

  - Nur ein Bugfix für den nervigen Bug beim herauszoomen

- 0.29.4 [1998-03]

  - Speicherleck in Wiedergabe behoben

  - Mehrmals die fehlenden Tastenkürzel im MenuManager überprüft. Scheint ein Problem in QPopupMenu zu sein. Warte bis es in Qt behoben ist oder ein Workaround verfügbar ist.

  - Liste der letzten Dateien wird wieder aktualisiert beim laufenden Programm

  - Kwave merkt sich das letzte Speicher-Verzeichnis; für die Bequemlichkeit der Anwender

  - Auswahl-Mechanismen wiederhergestellt um an Versionen vor 0.29.3 anzupassen und einige andere verrückte Verhaltensweisen korrigiert

  - _jetzt_ sollten alle Parameter für Destruktoren verschwunden sein

- 0.29.3 [1998-02]

  - Entwicklung geht etwas langsamer, diese Release ist nicht so vollständig wie ich das gewünscht hatte, aber nachdem bei 0.29.2 bei einem Destructor Parameter aus versehen übrig geblieben sind und sich somit nicht auf allen Systemen kompilieren lässt -> hier nochmal...

  - Auswahl-Funktionen in eine neue Klasse verschoben, Code sieht im Moment eher verwirrend aus, scheint aber zu funktionieren

  - Checkmark-Funktionalität wieder hinzugefügt

  - Datei-Menues in neues Menu-Schema umgesetzt

  - GUI zum Zusammenmischen von Kanälen hinzugefügt, die benötigten Funktionen zum Mischen fehlen aber noch

  - Halt-Button von Gerhard Zintel

- 0.29.2

  - Zwischenablage-Funktionalität in eigene Klasse verschoben

  - dynamische Verwendung von Menue-Einträgen für alle Klassen außer TopWidget verwendet

  - Import von ASCII-Dateien

- 0.29.1

  - Bugfix für Speichern von Mehrkanal-Dateien. Nun sollten die Dateien auch mit anderen Programmen zusammenarbeiten

  - lokales Einrasten auf Spitze von Gerhard Zintel

- 0.29.0

  - Versionsnummern und Dateinamen geändert wie in Version 1.1 von "How To Name Things" von der sunsite vorgeschlagen. Die letzte Ziffer soll immer 0 sein für Versionen die auf ftp.kde.org hochgeladen werden.

  - Fensterfunktionen hinzugefügt (Hamming, Hanning, Blackmann)

  - Beitrag von Gerhard Zintel zeigt Noten in der FFT-Ansicht an

  - Tonverschiebungs-Fenster hinzugefügt

  - Cursor und dB-Skalierung für FFT-Ansicht implementiert

  - Wiederauswahl und Cursorwechsel implementiert

  - Möglichkeit für verschiedene Anzeigemodi in der Frequenz-Darstellung

  - schweren Quantisierungsfehler in der 16Bit-Routine behoben, berichtet von ?

  - mmap Support beigetragen von Juhane Kouhia

  - Neue Möglichkeit zur Signalerzeugung: Pulsfolgen

  - Wrapper für Systeme ohne POSIX-Threads hinzugefügt -> muss aber immer noch vom configure-Skript berücksichtigt werden (Makefile ändern um libpthread nicht zu linken und einen define)

  - Erste Verwendung von mehreren Threads (Pthreads) in einigen Funktionen

  - Erzeugung der Tonverschiebung ist nun unabhängig von der Additiven Synthese

  - Import-Funktion für ASCII-Dateien

  - Speichern von ASCII-Markern nun auch nach Frequenz

  - Marker-Erzeugung durch Detektion von Wiederholungen (Autokorrelation)

  - Sonagram, FFT-Ansicht und Stören-Dialog verwenden nun ScaleWidgets

  - neues ScaleWidget gibt dem Anwender mehr Informationen

  - Verbesserter ProgressDialog und Interpolation-Klasse um Multithreading zu erlauben

  - einige kleinere Bugs behoben

- 0.28 [1998-07-15]

  - Änderungen in CurveWidget (aktueller Punkt verwendet anderes Pixmap)

  - Sortieren von Markern funktioniert ohne Überschreiben von QGList::compareItems.

  - Bugfix zum Speichern der Auswahl

  - Funktion zum Block speichern hinzugefügt.

  - Signal-Suchfunktion in markers.cpp: GUI verbessert.

  - einige kleinere Bugfixes.

- 0.27

  - erste Release, aber niemals publiziert, da ftp.kde.org nicht erreichbar war.

## Installation

### Wie erhält man &kapp;

&kapp; hat eine eigene Homepage unter http://kwave.sourceforge.net/. Hier können Sie weitere Informationen über das Projekt, wie auch Informationen über die aktuelle stabile sowie neueste Entwicklerversionen finden.

Wenn Sie eine Release von &kapp; wollen können Sie die Seite http://kwave.sourceforge.net/download.html besuchen und

- ein Binärpaket der letzten stabilen Version herunterladen, sofern eines für Ihre Distribution existiert,

- ein Source-RPM der letzten stabilen Version herunterladen,

- selbst aus einem tar.gz-Archiv der letzten stabilen Version kompilieren,

- aus den per SVN abgerufenen Sourcen selbst kompilieren.

Schrecken Sie nicht davor zurück, Kwave selbst zu kompilieren, auch wenn Sie kein Programmierer sind. Es müssen nur einige Entwickler-Pakete installiert sein.

### Anforderungen

Für den erfolgreichen Einsatz von &kapp; brauchen Sie:

- einen Computer mit installiertem Linux (&kapp; läuft möglicherweise auch unter anderen Betriebssystemen, aber dieses haben wir nicht getestet. Bitte lassen Sie es uns wissen, wenn Sie es auf anderen Plattformen/ Betriebssystemen zum laufen gebracht haben)

- eine funktionierende Soundwiedergabe (nicht wirklich erforderlich für die Benutzung, aber was sollte man mit einem Soundeditor, wenn man sich nicht die Ergebnisse anhören kann?)

- KDE-3.1 oder höher (zumindest die Bibliotheken: &kapp; läuft auch unter gnome, wenn die richtigen Bibliotheken installiert sind).

- qt-3.1 oder neuer (normalerweise in KDE3 enthalten)

- id3lib-3.8.1 oder neuer (für ID3-Tags)

- mad-0.15 oder neuer (für MP3-Import)

- flac-1.1.0 oder neuer

- etwas mehr als 32 MB Speicher zum Starten von &kapp; (kann jedoch sehr stark von Ihrer Plattform und Konfiguration abhängen)

Für eine aktuellere und vollständigere List lesen Sie bitte die README-Datei, die in der Quellcode-Distribution enthalten ist oder hier gefunden werden kann: "http://svn.sourceforge.net/viewvc/kwave/trunk/README?view=markup". Diese Datei enthält auch einige Tips um &kapp; unter anderen Distributionen zum Laufen zu bekommen oder zu kompilieren.

Wenn Sie vorhaben, &kapp; aus den Quellen zu kompilieren, brauchen Sie zusätzlich mindestens:

- cmake-2.4.6 oder neuer

- Einen C/C++ Compiler. GCC-2.95.3 wird empfohlen, einige ältere und jede neuere Version (beispielsweise gcc-4.1 und neuer) funktionieren ebenfalls.

- Die glibc2 (libc-6) Entwicklungsumgebung. Auf SuSE-Systemen heißt das Paket "libc", auf anderen Systemen könnte es "libc-devel" heißen.

- Die KDE3-Entwicklungsumgebung: "kdelibs3-devel", "kdemultimedia3-devel", "kdesdk3".

- Die Qt-Entwicklungsumgebung, das Paket heißt normalerweise "qt3-devel" oder ähnlich.

- id3lib-devel-3.8.1 oder neuer

- mad-devel-0.15 oder neuer

- flac-devel-1.1.0 oder neuer

- Falls Sie beabsichtigen &kapp; über SVN zu beziehen, brauchen Sie auch ein aktuelles Subversion-Paket.

- ...einige andere Pakete, bitte lesen Sie hierzu die Datei "README", die im Quellpaket enthalten ist.

### Kompilierung und Installation

Seit Version 0.7.10 verwendet &kapp; cmake, das Generiersystem das auch von KDE selbst verwendet wird. Somit sollten Sie wenn Sie andere KDE-Applikationen generieren können auch in der Lage sein &kapp; zu generieren. Wenn Sie auf Probleme stossen, melden Sie diese bitte an die &kapp; Mailing-Liste.

Um &kapp; auf Ihrem System zu generieren und zu installieren, ist es am besten wenn Sie "out-of-tree" generieren. Das bedeudet, dass die Quellen von &kapp; in einem Verzeichnis liegen und die Generierung in einem anderen (temporären) Verzeichnis stattfindet.

Angenommen Sie haben die Quellen beispielsweise in ``$HOME/src/kwave-0.7.11`` entpackt, dann können Sie wie folgt verfahren:

    % mkdir /tmp/kwave-build
    % cd /tmp/kwave-build
    % cmake $HOME/src/kwave-0.7.11 [Generier-Optionen]
    % make
    % su root -c "make install"

(Die Angabe von Generier-Optionen dient dazu bestimmte Features zu aktivieren oder zu deaktiveren. Für eine Beschreibung lesen Sie bitte den folgenden Abschnitt)

### Generier-Optionen

Mit Hilfe von Generier-Optionen können Sie einige Funktionalitäten von &kapp; aktivieren oder deaktivieren, beispielsweise können Sie Plugins von der Generierung ausschliessen. Hier eine Auflistung der verfügbaren Optionen:

- `WITH_ALSA` aktiviere Wiedergabe / Aufnahme via ALSA [`on`/`off`, Vorgabe=`on`]

- `WITH_ARTS` aktiviere Wiedergabe via aRts [`on`/`off`, Vorgabe=`off`]

- `WITH_BUILTIN_LIBAUDIOFILE` erzwinge die Verwendung der mitgelieferten Version der audiofile-Bibliothek, auch wenn eine bereits im System vorhandene Version als benutzbar erkannt wurde [`on`/`off`, Vorgabe=`off`]

- `WITH_DOC` generiere Online-Dokumentation [`on`/`off`, Vorgabe=`on`]

- `WITH_FLAC` aktiviere Unterstützung für FLAC-Dateien [`on`/`off`, Vorgabe=`on`]

- `WITH_MP3` aktiviere Unterstützung für MP3-Dateien [`on`/`off`, Vorgabe=`on`]

- `WITH_OGG` aktiviere Unterstützung für ogg-Dateien [`on`/`off`, Vorgabe=`on`]

- `WITH_OSS` aktiviere Wiedergabe / Aufnahme via OSS [`on`/`off`, Vorgabe=`on`]

Diese Optionen können an ``cmake`` mit ``-D``option``=``value`` übergeben werden. Wenn Sie beispielsweise das Generieren der Online-Hilfe auslassen wollen, können Sie die entsprechende Option wie folgt übergeben:

    % cmake [source directory] -DWITH_DOC=off [other options...]

### Erstellung von RPM-Paketen aus tar.gz-Archiven

#### Mit funktionierendem rpmbuild -ta

Wenn Sie ein System mit RPM-Unterstützung haben, ist die bevorzugte Methode der Installation die Erstellung eines RPM Paketes. Als erstes sollten Sie sich die aktuellen Quellen von &kapp; besorgen, entweder als tar.gz Archiv von der &kapp; Download-Seite oder als aktuelle Kopie via SVN (wie es in dem Kapitel über SVN beschrieben ist) und lesen Sie das nächste Kapitel.

Wenn Sie ein tar.gz Archiv von &kapp; heruntergeladen haben, erstellen und installieren Sie die RPMs einfach, indem Sie den folgenden Schritten folgen (wobei `[arch]` für die Plattform steht, für die Sie das Paket erstellt haben, und sollte `i386`, `i586`, `sparc` oder ähnliches sein. `XXX` steht für die Versionsnummer des heruntergeladenen Paketes).

Erstellen Sie das &kapp; Paket und installieren Sie es wie folgt:

    % rpmbuild -ta kwave-XXX.tar.gz
    % rpm -i /usr/src/redhat/RPMS/[arch]/kwave-XXX.[arch].rpm

Hinweis für SuSE Benutzer: Sie müssen das Verzeichnis `/usr/src/packages` anstelle von `/usr/src/redhat` angeben!

Wenn keine Fehler aufgetreten sind, dann haben Sie es geschafft und können den Rest des Kapitels überspringen. Wenn rpm nicht in der Lage war, ein Paket zu erstellen und etwas sagt wie "spec file not found", dann sollten Sie den Rest dieses Abschnittes lesen.

#### Mit defektem rpmbuild -ta

Falls Sie `rpmbuild -ta` nicht zum laufen bekommen, sind hier die Schritte um dieses "per Hand" (auf die harte Tour) zu bewerkstelligen:

1. Gehen Sie zu ihrem RPM "Hauptverzeichnis", welches normalerweise `/usr/src/redhat` für die Redhat Distribution oder `/usr/src/packages` für die SuSE Distribution ist.

       % cd /usr/src/redhat

2. Kopieren Sie das tar.gz Archiv in das SOURCES Unterverzeichnis (ersetzen Sie "somewhere" durch das reale Verzeichnis, in dem die Dateien enthalten sind).

       % cp /somewhere/kwave-XXX.tar.gz SOURCES

3. Extrahieren Sie die spec-Dateie aus dem Archiven und fügen Sie diese dem SPEC-Unterverzeichnis hinzu.

       % tar -xOzf SOURCES/kwave-XXX.tar.gz \*.spec
       > SPECS/kwave.spec

4. Lassen Sie rpm den Kompiliervorgang und die Generierung des &kapp; RPMs ausführen. Wenn Sie nur ein binary Paket erstellen wollen, dann können Sie `-bb` anstelle von `-ba` angeben, oder einfach `-bs` um nur ein Source-Paket zu erstellen.

       % rpmbuild -ba SPECS/kwave.spec

5. Wenn alles fehlerfrei verlief, können Sie das binary rpm von &kapp; installieren, welches sich dann im BUILD Verzeichnis befindet. Wenn Sie bereits eine Version von &kapp; installiert haben, dann entfernen Sie diese zuerst oder verwenden den Parameter `-U` anstelle von `-i` für ein Uprade anstelle einer Installation.

       % rpm -ivh BUILD/[arch]/kwave-XXX.[arch].rpm

### Erstellung eines RPM Paketes aus SVN

#### Abrufen der Quellen

Beim erstmaligen Abrufen der Quellen brauchen Sie etwas Festplattenspeicher (etwa 25 Megabytes) in einem Verzeichnis Ihrer Wahl, das svn-Paket ihrer bevorzugten Distribution und vollen Zugang zum Internet. Wenn Sie Fehlermeldungen über abgelehnte Verbindungen erhalten, haben Sie entweder etwas falsches eingegeben oder Ihr Provider gestattet ihnen nicht den vollen Zugriff. Ein guter Platz für die Quelldateien ist `"$HOME/src"`.

1. Als erstes erstellen Sie ein Verzeichnis, welches das Unterverzeichnis der &kapp;-Quellen erhalten wird und wechseln Sie in dieses:

       % mkdir -p $HOME/src
       % cd $HOME/src

2. Danach rufen Sie die aktuellen Quellen von einem SVN-Server ab:

       % svn checkout https://kwave.svn.sourceforge.net/svnroot/kwave/trunk kwave

   oder Sie rufen eine bestimmte Version mit dem folgenden Kommando ab:

       % svn checkout https://kwave.svn.sourceforge.net/svnroot/kwave/tags/[release-tag] kwave

   Sie können über das SVN-Webinterface nachsehen welche Release-Tags es gibt: "http://svn.sourceforge.net/viewvc/kwave/tags/". Die Release-Tags werden immer aus dem Wort `Release-` und der Versionsnummer gebildet, wobei die Punkte durch Unterstriche ersetzt werden. Zum Beispiel:"`Release-0_7_9`" für v0.7.9.

Es darf kein Verzeichnis mit dem Namen `kwave` unter des Verzeichnisses existieren in dem Sie abrufen wollen. Ansonsten würde sich das svn-Programm über bereits existierende Dateien beschweren und das Abrufen wird nicht funktionieren.

#### Aktualisierung der Quellen mittels SVN

Die Prozedur, die im vorhergehenden Abschnitt beschrieben wurde, ist nur einmalig notwendig. Für weitere Aktualisierungen ist es wesentlich einfacher. Wechseln Sie einfach in das Verzeichnis, welches Sie aktualisieren wollen und machen Sie folgendes:

    % svn update

Gehen Sie dann zum nächsten Abschnitt über und kompilieren Sie wie gewohnt.

Wenn der Inhalt Ihres lokalen &kapp;-Quellenverzeichnisses durcheinander geraten ist, oder wenn es beim Aktualisieren Konflikte gegeben hat, so können Sie alle Dateien und Unterverzeichnisse außer dem `.svn`-Verzeichnis löschen und nochmals versuchen.

#### Kompilieren

Das Erstellen eines rpm-Pakets aus einem SVN-Abbild ist recht einfach. Die Prozedur ist beinahe die gleiche wie im letzten Abschnitt beschrieben. Deshalb existiert unglücklicherweise auch das gleiche Problem mit dem `rpmbuild -ta` Befehl, den unsere Methode intern benutzt. Wie im vorhergehenden Kapitel steht `[arch]` für die Plattform des zu erstellenden Paketes und sollte `i386`, `i586`, `sparc` oder ähnliches sein. `XXX` steht für die Versionsnummer, die Sie sich besorgt haben.

Hinweis für SuSE Benutzer: hier müssen Sie auch das Verzeichnis `/usr/src/packages` anstelle von `/usr/src/redhat` angeben!

Vorausgesetzt Sie befinden sich im Wurzelverzeichnis der SVN-Quellen, tun Sie folgendes um ein Makefile und das &kapp;-Paket zu erstellen und zu installieren. Wenn Sie bereits eine Version von &kapp; installiert haben, entfernen Sie diese bitte zuerst oder benutzen Sie `rpm -U` anstelle von `rpm -i` für die Aktualisierung anstelle einer Installation.

    % mkdir /tmp/kwave-build
    % cd /tmp/kwave-build
    % cmake $HOME/src/kwave
    % make rpm
    % rpm -ivh /usr/src/redhat/BUILD/[arch]/kwave-XXX.[arch].rpm

Wenn Sie noch Probleme mit `make rpm` haben, nehmen Sie das tar.gz-Archiv, das in `/tmp` erzeugt wurde. Bitte folgen Sie den Anweisungen im vorherigen Kapitel.

### Installation des Binary-RPM-Paketes auf anderen Distributionen

Das Binary-rpm-Paket von &kapp; ist "verschiebbar". Das bedeudet, dass Sie das Paket auf einem System mit beliebigem Standard KDE3-Verzeichnis erzeugen und es auf einem anderen System und/oder in einem anderen Verzeichnis installieren können. Diese Eigenschaft ist sehr nützlich um ein für SuSE kompiliertes Paket auf einem RedHat System zu installieren und umgekehrt.

Zum Beispiel: Sie haben ein Binary-rpm von einem Freund mit einem RedHat System bekommen (wo das KDE3-Verzeichnis `/usr` ist) und wollen es auf einem SuSE System installieren (wo das KDE3-Verzeichnis `/opt/kde3` ist). Dann geben Sie einfach einen unterschiedlichen Präfix bei der Installation des rpms an. Beispiel:

    % rpm -ivh --prefix=/opt/kde3 kwave-0.7.11.i586.rpm

Dies modifiziert den Pfad in dem das Programm installiert wird und es wird dringend empfohlen dass dies ein Verzeichnis ist, das in der KDEDIRS Umgebungsvariable enthalten ist, oder das Verzeichnis das von dem Shell-Kommando `kde-config --prefix` zurückgeliefert wird. Ansonsten ist &kapp; nicht in der Lage seine Menü-Konfiguration, Plugins, Vorlagen und so weiter zu finden...

### Erstellen von CPU-optimierten Paketen

Wenn Sie eine Pentium, eine AMD K6, Athlon oder Athlon-XP CPU besitzen, wollen Sie vielleicht einen optimierten Compiler für die Übersetzung Ihrer eigenen Version von &kapp; verwenden, die einige Prozente schneller läuft. Der Geschwindigkeitsgewinn beträgt bei einigen Systemen bis zu 30%, wobei die Signalbearbeitungs-Funktionen sowie alle Funktionen die komplexe Zeit-Frequenz-Operationen (wie FFT und Sonagramm) behandeln, am meisten davon profitieren.

Sie brauchen nicht viel über Programmierung zu wissen um einen optimierten Compiler für die Übersetzung von &kapp; zu benutzen. Aber vielleicht werden Sie einige Zeit brauchen um den Compiler selbst zu installieren und zum laufen zu bringen.

#### RPM-Optimierungen

Sie können relativ einfach ein für Athlon, Athlon-XP, Pentium und Pentium Pro (oder einige andere CPUs) optimiertes Paket kompilieren, indem Sie einige Definitionen in Ihrer `rpmrc` Datei setzen. Sie können auch Ihre systemweite `rpmrc` Datei oder die `.rpmrc` Datei in ihrem Home-Verzeichnis verändern. Dort können Sie zum Beispiel folgende Options-Zeilen angeben:

    % optflags: i586 -O2 -march=pentium -DNDEBUG -fomit-frame-pointer
    % optflags: i686 -O2 -march=pentiumpro -DNDEBUG -fomit-frame-pointer
    % optflags: athlon -O2 -march=athlon
    % optflags: k6 -O3 -march=k6 -mcpu=k6 -DNDEBUG -fomit-frame-pointer
    % optflags: k7 -O3 -march=athlon-xp -mcpu=athlon-xp -DNDEBUG -fomit-frame-pointer

(Ich fand diese schnen Tricks auf http://www.keywarrior.net/duesti/rpmopt.de.html. Dank an Matthias Düsterhöft!).

Das bedeutet, dass auf einer `K7-Architektur` das rpm Paket unter Benutzung von `-O3 -march=athlon-xp -mcpu=athlon-xp -DNDEBUG -fomit-frame-pointer` als Compiler Option kompiliert wird. Sie sollten dies für Ihre eigenen Bedürfnisse erweitern oder anpassen. Die Einstellungen sind für alle vorhergehenden Sektionen anwendbar, wo ein `rpmbuild -ta` benutzt wurde oder ein binary RPM mittels eines Source RPM unter Benutzung von `rpmbuild --rebuild` erstellt wurde.

Falls es `rpm` ablehnt Ihr Paket aufgrund von scheinbarer Unstimmigkeit mit ihrer Computer- Architektur zu installieren, können Sie ein optimiertes Paket trotzdem problemlos mit der zusätzlichen Angabe des Parameters `--ignorearch` installieren.

#### Wie werden Optimierungs-Parameter manuell an den Compiler übergeben

Der Aufruf eines optimierten Compilers ist recht einfach. Es reicht normalerweise aus, die Umgebungsvariablen CFLAGS undCXXFLAGS in der korrekten Weise zu setzen und dann wie immer zu bersetzen. Für die besten Einstellungen lesen Sie bitte in der Dokumentation oder Homepage des entsprechenden Compilers nach.

Wenn Sie &kapp; von einem Quellverzeichnis aus (entpacktes tar.gz oder via SVN) erstellen, sollten die Flags vor dem Aufruf angegeben werden. Zum Beispiel:

    % CFLAGS="-O4 -march=athlon-xp -mcpu=athlon-xp -pipe -fomit-frame-pointer" \
    CXXFLAGS="-O4 -march=athlon-xp -mcpu=athlon-xp -pipe -fomit-frame-pointer" \
    cmake [source directory]

Wenn Sie &kapp; aus einem Quell-RPM-Paket erstellen, folgen Sie bitte den Anweisungen im vorherigen Abschnitt.

## Grundlagen digitaler Audiobearbeitung

Dieses Kapitel soll eine kurze Einführung in die Grundlagen der digitalen Audiobearbeitungen geben, ohne jedoch allzu sehr ins Detail zu gehen. Natürlich wird dies teilweise unvollständig sein, doch wenn noch Fragen offen bleiben, können Sie diese auf der &kapp; Mailingliste stellen oder weiterführende Literatur konsultieren.

### Die analoge Welt

Zuerst muss man sich im klaren sein, dass die Welt analog ist - Computer jedoch digital arbeiten. Es gibt also mehrere Wege um Audio von analog nach digital und umgekehrt umzuwandeln. Nachdem die Umsetzung von digital nach analog die Umkehrung der Umsetzung von analog nach digital ist, beschreiben wir nur letzteres.

Umwandlung von Sound in Bits

Umwandlung von Sound in Bits

Bevor es weiter geht, muss analoges Audio zuerst in digitale Signale umgewandelt werden um in einem Computer verarbeitet werden zu können. Ein üblicher Weg dafür ist die Verwendung von einem Mikrophon und einem Verstärker. Diese Kombination hat Töne (also Luftdruckschwankungen) am Eingang und eine elektrische Spannung an ihrem Ausgang. Höhere Druckamplituden erzeugen dabei höhere Spannungen am Ausgang des Verstärkers. Der Verstärker produziert an seinem Ausgang ein sogenanntes 'Signal'. Anstelle eines Mikrophons kann man sich natürlich auch andere Audio-Quellen vorstellen. Und der "Verstärker" kann derjenige sein, der in Ihrer Soundkarte eingebaut sein, wo man ihn normalerweise nicht sieht.

Umwandlung in ein elektronisches Signal

Umwandlung in ein elektronisches Signal

An dieser Stelle sollte man im Hinterkopf behalten, dass das elektrische Signal drei Beschränkungen unterliegt:

1. Die Amplitude ist auf einen Maximalwert beschränkt. Dies liegt daran, dass elektronische Verstärker nur Spannungen bis zu einer gewissen Grenze verarbeiten können. Das stellt kein Problem dar solange die Lautstärke nicht zu hoch wird. In diesem Fall würde das Signal sonst begrenzt, was bedeudet dass das Signal gegen seine Grenzen läuft und dadurch gestört wird.

2. Der Frequenzbereich ist ebenfalls begrenzt. Aufgrund der mechanischen Einschränkungen von Mikrophonen und dem begrenzten Frequenzbereich von Verstärkern ist auch der Frequenzbereich eines Signals begrenzt. Es gibt dabei keine harten Grenzen außerhalb derer das Signal abrupt verschwindet, aber unterhalb und oberhalb bestimmter Grenzen nimmt die Amplitude des Signals immer mehr ab. Die Existenz einer maximalen Frequenz lässt sich mit der begrenzen Geschwindigkeit erklären mit der ein elektrisches Signal steigen oder fallen kann. Indem man hochwertige Mikrophone und Verstärker verwendet, können diese Grenzen jedoch in Bereiche verschoben werden in denen sie vom menschlichen Ohr nicht mehr wahrgenommen werden können und daher nicht mehr interessieren. Das menschliche Ohr kann normalerweise keine Frequenzen oberhalb von 20 kHz mehr wahrnehmen.

3. Das Signal enthält Rauschen. Rauschen ist der unangenehmste Feind eines jeden der Audiosignale in irgendeiner Art und Weise bearbeiten muss. Rauschen ist ein typischer analoger Effekt, der das Audiosignal "unscharf" macht und stört, es ist immer vorhanden und kann nicht vermieden werden. Man kann lediglich versuchen, durch den Einsatz von qualitativ hochwertigen Komponenten so wenig Rauschen wie möglich zu erzeugen, so dass man es nicht hörbar wahrnehmen kann. Normalerweise besitzt das Rauschen eine gewisse Lautstärke, so dass das interessierende Signal im Vergleich zum Rauschen lauter sein sollte. Diese Relation wird auch als das Signal-Rausch-Verhältnis (SNR) bezeichnet. Je höher es ist, desto besser ist die Qualität des Signals. Töne die leiser sind als das Rauschen können nicht mehr gehört werden.

### Digitalisierung

Wenn wir Audiosignale im Computer speichern oder abspielen wollen, müssen die analogen Klänge zuerst in digitale Daten umgewandelt werden. Dieser Vorgang wird als digitalisierung bezeichnet. Es wandelt ein elektronisches Signal in eine Abfolge von digitalen Werten um.

Digitalisierung des elektronischen Signals

Digitalisierung des elektronischen Signals

Die Umwandlung kann als eine wiederholte Messung des augenblicklichen Wertes eines elektrischen Signals verstanden werden, es werden also einzelne Abtastwerte (Samples) bestimmt. Das Ergebnis wird dann als digitaler Wert kodiert.

Die Abtastung kann in wechselnden oder gleichmäßigen Intervallen vorgenommen werden. Letztere Methode ist viel einfacher zu handhaben und wird deshalb normalerweise angewandt, mit einer konstanten Rate - der sogenannten Abtastrate. Übliche Abtastraten sind 8000, 11025, 22050 und 44100 Samples pro Sekunde. In der Praxis werden Abtastraten auch als Frequenzen in Hz oder kHz angegeben.

Die Abtastrate begrenzt die höchste Frequenz die digitalisiert werden kann. Aufgrund des Shannon'schen Abtasttheorems entspricht die höchste darstellbare Frequenz der halben Abtastfrequenz, somit können mit einer Abtastrate von 44,1 kHz keine Frequenzen oberhalb von ca. 22kHz fehlerfrei digitalisiert werden. Um eine Verletzung dieser Halbe-Abtastrate-Regel zu vermeiden, besitzt Ihre Soundkarte bereits eingebaute Filter, die alle Frequenzen oberhalb der halben Abtastrate wegfiltern.

Gesampletes Signal

Gesampletes Signal

### Sample-Codierung

Das Ergebnis der Abtastung ist eine Folge von Samples (Abtastwerten). Ein Sample repräsentiert den Wert eines Signal zu einem bestimmten Zeitpunkt als digitalen Wert.

Der Wert eines Samples kann auf verschiedene Arten interpretiert und kodiert werden. Die einfachste Art ist die lineare Kodierung. Dies bedeudet, dass der Wert eines Samples direkt dem Wert des Signals entspricht, multipliziert mit einem Faktor. Das ist zwar einfach zu handhaben, hat jedoch den Nachteil dass Rauschen besonders bei leisen Passagen zu hören ist, wo es am meisten stört, und weniger bei hohen Lautstärken, wo es weniger hörbar ist.

Eine Maßnahme zur Reduzierung des Einflusses des Rauschens ist nicht-lineare Kodierung. Dies bedeudet, dass kleinere Amplituden vor der Verarbeitung angehoben werden. Indem kleinere Amplituden verstärkt werden, nimmt ihr Abstand zum Rauschen zu und die Qualität verbessert sich. Die beiden weitverbreitesten Methoden sind A-Law und U-Law - zwei standardisierte logarithmische Verstärkungskurven, die in der digitalen Telephonie Verbreitung gefunden haben (ITU-Standard G.711).

Nichtlineare Codierung

Nichtlineare Codierung

### Sample-Formate

Samples können in verschiedenen Formaten und Genauigkeiten gespeichert werden. Die häufigsten sind Integer- (Festkomma-) Formate, die Werte in festen Quantisierungsstufen speichern. Abhängig davon wo die 'Null-Linie' festgelegt wird, muss man zwischen vorzeichenlosen (nur positive Werte, "Null-Linie" in der Mitte des Zahlenbereichs) und vorzeichenbehafteten (positive und negative Werte) Festkommaformaten unterscheiden.

Vorzeichenbehaftetes Format

Vorzeichenbehaftetes Format

Vorzeichenloses Format

Vorzeichenloses Format

Da die Quantisierung des Signals einem Verlust an Genauigkeit entspricht, verursacht sie sogenanntes Quantisierungsrauschen. Diese Art des Rauschens wirkt sich besonders auf leise Passagen aus, so dass diese Speicherformat nicht optimal ist, andererseits ist es aber äußerst einfach und schnell zu handhaben (Computer sind schnell bei Berechnungen mit Festkommazahlen).

Die zweite Möglichkeit besteht in der Verwendung von Fliesskommazahlen. Mit Fliesskommazahlen wird das Rauschen gleichmäßig über alle Lautstärken verteilt und hat besonders bei kleinen Lautstärken große Vorteile. Leider ist dieses Format um einiges langsamer in der Verarbeitung (Computer sind bei Fliesskomma-Berechnungen im Vergleich zu Festkomma-Berechnungen um einiges langsamer).

&kapp; verwendet intern ein Format mit vorzeichenbehafteten Festkommazahlen (Integer) mit 24 Bit Genauigkeit, gespeichert als 32-Bit Integer. Das hat zwar den Nachteil von hohem Speicherbedarf, besonders bei der Verarbeitung von Dateien mit geringerer Auflösung (z.B. 8 Bit), die Verarbeitung von 32-Bit Integerwerten ist allerdings äußerst schnell und bietet noch einige Reserven, da nur 24 Bit davon genutzt werden.

## &kapp; verwenden

Hier ist ein Screenshot vom &kapp; Hauptfenster, um einen Eindruck zu bekommen, wie &kapp; aussieht...

Das ist ein Screenshot von &kapp; Screenshot des Hauptfensters

### Speicher-Einstellungen

Wenn Sie &kapp; zum ersten mal benutzen, sollten Sie den Dialog zur Speicher-Einstellungen öffnen und die Einstellungen Ihren Bedürfnissen und dem auf Ihrem PC installierten Speicher anpassen. Sie erreichen die Einstellungen unter Optionen Speicher.

Hier ein Screenshot von &kapp;'s Speicher-Einstellungen-Dialog Screenshot des Speichereinstellungen-Dialogs

&kapp; kann zwei verschiedene Arten von Speicher verwenden: physicalischer und virtueller Speicher.

Physikalischer Speicher ist der Speicher (RAM), der in Ihrem Computer installiert ist. Sie sollten die Verwendung von physikalischem Speicher auf eine sinnvolle Größe beschränken, als Richtwert fährt man mit der Hälfte des installierten RAMs ganz gut. Wenn Sie das Limit zu hoch einstellen, wird Linux den Speicher von anderen Applikationen wegnehmen, was bedeudet dass Speicher auf die Festplatte ausgelagert (geswappt) wird, was ziemlich langsam ist. Wenn Sie das Limit zu niedrig einstellen, verlieren Sie unter Umständen Performance beim Bearbeiten großer Dateien, weil Sie weniger physikalischen Speicher verwenden als möglich wäre.

Wenn Sie virtuellen Speicher verwenden, kann &kapp; Dateien laden und bearbeiten, die größer sind als dies der installierte physikalische Speicher zulassen würde. &kapp; verwendet in diesem Fall temporäre Dateien in einem einstellbaren Verzeichnis, was um einiges schneller und kooperativer zu anderen Programmen ist als das Auslagern des Betriebssystems. Sie sollten für die Auslagerungsdateien ein Verzeichnis auf Ihrer lokalen Festplatte wählen.

### Kommandozeile

Wenn Sie &kapp; von der Kommandozeile aus starten, können Sie eine Liste von Dateien angeben, die geöffnet werden sollen. Die erste angegebene Datei wird dabei zuerst geöffnet und dann die anderen. Jede Datei wird dabei in einem neuen eigenen Fenster der selben &kapp; Instanz geöffnet. Wenn Sie Jokerzeichen verwenden, können Sie eine große Anzahl von Dateien auf einmal öffnen.

So startet zum Beispiel der folgende Befehl &kapp; und öffnet alle Klänge des KDE-Fenstermanagers in jeweils einem eigenen Fenster:

    % kwave /opt/kde3/share/sounds/KDE_Window*.wav

Zusätzlich zu einer Dateiliste können Sie noch eine Liste von Xt toolkit Optionen wie `-geometry` angeben, um die Größe und/oder die Position des ersten geöffneten &kapp; Fenster zu spezifizieren. Eine weitere Option ist `-display`, die &kapp; auf einem anderen Bildschirm startet.

Der folgende Befehl startet zum Beispiel ein &kapp;-Fenster mit einer Startbreite von 600 Pixeln und einer Höhe von 400 Pixeln, mit der rechten Seite 30 Pixel vom rechten Rand und 0 Pixel vom oberen Rand des Bildschirms entfernt:

    % kwave -geometry 600x400-30+0

### Öffnen und Speichern von Dateien

Das Öffnen von Dateien mit &kapp; funktioniert genauso wie in den meisten anderen Anwendungen auch, Sie können

- eine Liste von Dateien auf der Kommandozeile beim Start von &kapp; eingeben

- ein leeres &kapp;-Fenster öffnen (zum Beispiel mit Strg W Datei Neu... ) und fügen eine Datei mittels Drag and Drop ein, oder Sie können

- eine Datei öffnen per dem Menü mit Strg O Datei öffnen

- oder eine der zuletzt bearbeiteten Dateien auswählen unter Datei Zuletzt geöffnete Dateien

- eine aktuelle Datei speichern mittels Strg S Datei Speichern ,

- unter einem anderen Namen speichern mit Shift Strg S Datei Speichern Als

- oder nur die aktuelle Auswahl mit Datei Speichern Auswahl

#### Unterstützte Dateiformate

&kapp; unterstützt folgende Dateiformate:

- Das favorisierte Dateiformat von &kapp; ist (wie man vom Namen her bereits vermuten könnte) `*.wav`. Dieses Format ist weit verbreitet auf anderen "Betriebssystemen", sowie auch innerhalb der KDE-Umgebung.

- Das zweite Format das &kapp; unterstützt ist "ASCII". Sie können in ASCII exportieren, aber momentan noch nicht importieren (dies ist derzeit noch nicht implementiert). Bitte beachten Sie dass beim Speichern in diesem Format sehr grosse Dateien entstehen lönnen! Das Dateiformat wird im folgenden beschrieben.

- `.mp3` und `.mp2` Import mit Hilfe der libmad-Bibliothek zum Decodieren von MP3 in Kombination mit id3lib zur Decodierung von ID3-Tags.

- Ogg/Vorbis (`*.ogg`) Import und Export. Für Details besuchen Sie bitte http://www.xiph.org.

- Zusätzlich unterstützt &kapp; viele andere Formate durch das audiofile-Plugin. Sie können Dateien wie `*.au`, `*.snd` (NeXT,Sun Audio), `*.aiff` (Audio Interchange Format) und `*.sf` (Berkeley,IRCAM,Carl Sound Format) importieren.

#### Konvertierung zu und von .wav

Im Moment ist es am besten, zum Bearbeiten von Formaten die nicht von &kapp; unterstützt werden, ein externes Konverter-Programm zu benutzen. Eine gute Auswahl von Werkzeugen dafür finden Sie im SoX Paket, dort finden Sie auch gute Dokumentation! (Die Original-Homepage liegt auf http://www.spies.com/Sox/.)

Die Pläne für die Zukunft beinhalten Unterstützung für Importfilter für andere Formate und vielleicht einige Filter, die ein benutzerdefiniertes Skript mit einem Aufruf an externe Filter integriert, so dass sogar Formate gelesen und/oder geschrieben werden können, die nicht von `SoX` (wie MP3) unterstützt werden.

#### Format von ASCII-Dateien

Das ASCII-Format ist recht nützlich für wissenschaftliche Zwecke und zu Ausbildungs-Zwecken. Aufgrund seines einfachen Aufbaus können Sie entweder eigene Dateien mit einem Texteditor schreiben oder auch die Ausgabe einer anderen Applikation verwenden und in ASCII konvertieren. Nachdem das Format sehr simpel ist sollten Sie keine grösseren Probleme haben falls notwendig einen Konverter zu schreiben; die meisten wissenschaftlichen Anwendungen haben eine Art eigenes ASCII-Format für den Export von Daten.

ASCII-Dateien haben einen relativ unkomplizierten Aufbau, nach folgenden Regeln:

1. Am Anfang der Datei kommt ein Block mit Datei-Eigenschaften, mit einer Eigenschaft pro Zeile.

2. Jede Eigenschaften-Zeile beginnt mit `##`.

3. Nach den Datei-Eigenschaften kommt eine Liste von Samples, mit einem Sample pro Zeile. Bei Verwendung von mehreren Kanälen werden die Samples durch Komma getrennt.

4. Zeilen dürfen mit einem Zeilenvorschub und/oder einem Wagenrücklauf enden (so dass DOS-Dateien ebenfalls unterstützt werden). Beim Speichern von Dateien wird als Zeilenende immer das Zeilenvorschub-Zeichen verwendet.

5. Leere Zeilen und Zeichen nach einem `#` gelten als Kommentare und werden ignoriert.

6. Werte können in jedem Format angegeben werden das die C-Bibliothek Ihres Systems versteht, sowohl Fliesskomma als auch Festkomma-Zahlen. Beim Speichern verwendet &kapp; das vorzeichenbehaftete Integer-Format mit 24 Bit.

7. Alle Werte werden im vorzeichenbehafteten Format erwartet. Wenn Sie also eine Datei importieren die nur positive Werte enthält, werden Sie nur Samples oberhalb der Null-Linie sehen.

8. Beim Import können Werte in einem beliebigen Bereich verwendet werden, &kapp; stellt in einem ersten Durchlauf den Wertebereich automatisch fest und skaliert den höchsten gefundenen Wert automatisch auf "100%".

9. Intern werden alle Werte mit 24 Bit Auflösung gespeichert (vorzeichenbehaftet)

Hier ein Beispiel für eine einfache ASCII-Datei die einen Sinus mit elf Samples enthält:

##### Inhalt einer ASCII-Datei mit elf Samples

    ## 'rate'=44100
    ## 'tracks'=2
    ## 'bits'=16
    ## 'length'=11
    ## 'Date'='2007-04-22'
    ## 'Software'='Kwave-0.7.9 for KDE 3.5.5'
    5930496,   5930496 #            0
    0,   8388352 #            1
    -5930752,   5930496 #            2
    -8388608,         0 #            3
    -5930752,  -5930752 #            4
    0,  -8388608 #            5
    5930496,  -5930752 #            6
    8388352,         0 #            7
    5930496,   5930496 #            8
    0,   8388352 #            9
    -5930752,   5930496 #           10
    # EOF

### Erstellen einer neuen Datei

Sie können eine neue leere Datei erstellen unter Datei Neu... .

Hier ein Screenshot von &kapp;'s Dialog zum Anlegen neuer Dateien Screenshot des Dialogs zum Anlegen neuer Dateien

Sie können eine Abtastrate, Auflösung in Bits pro Sample und die Anzahl der Tracks einstellen. Standardmäßig wird als Dateiformat ".wav" angenommen, was aber später beim Speichern der Datei geändert werden kann.

Die Länge einer neuen Datei kann über die Zeit (Stunden, Minuten, Sekunden) oder über die Anzahl der Samples eingestellt werden. Zusätzlich kann man sie relativ zur größten möglichen Länge einstellen, die durch den vorhandenen Speicher und durch &kapp; selbst (auf 2GB) begrenzt wird.

### Aufnahme

&kapp; ist in der Lage, von verschieden Quellen aufnehmen, mit allen Abtastraten, Sample-Formaten und Einstellungen die Ihre Soundkarte unterstützt. Derzeit verwendet &kapp; für die Aufnahme das alte OSS-Interface, und seit v0.7.4 auch das neuere und leistungsfähigere ALSA-System, dem System der Wahl für den Linux-Kernel 2.6.

Die Aufnahme kann im Menue unter Datei Aufnehmen erreicht werden.

Hier ist ein Screenshot der ersten Seite des &kapp;'s Aufnahme-Dialogs mit den Aufnahmekontrollen, während einer laufenden Aufnahme. Wie in den meisten Dialogen von &kapp; erhalten Sie einige Hilfestellungen und Tooltips von den Kontrollelementen.

Das ist ein Screenshot von &kapp;'s Aufnahme-Dialog Screenshot des Aufnahme-Dialogs

Hier haben Sie folgende Einstellmöglichkeiten:

- Vorab-Aufnahme: Wenn Sie die Vorab-Aufnahme aktivieren, und die Aufnahme gestartet wird, nimmt &kapp; in einen internen Ringbuffer auf, der einige Sekunden lang ist. Wenn Sie den Aufnahme ( Aufnahme-Button )-Button nochmals drücken, startet die Aufnahme wirklich, wobei die bereits im Ringbuffer aufgenommenen Daten erhalten bleiben. Dies ist beispielsweise nützlich, wenn Sie Ihren Liblingssong vom Radio aufnehmen wollen, aber zu spät mitkriegen dass das Stück bereits gestartet ist. In diesem Fall können Sie immer noch den Aufnahme-Button drücken und den Start des Stücks aus dem beziehen was &kapp; bereits aufgenommen hat. Somit verpassen Sie nie mehr einen Anfang.

- Aufnahmezeit: Wenn die Länge der Aufnahme auf eine bestimmte Zeit begrenzt werden soll, können Sie diese Einstellung aktivieren und eine Zeit in Stunden, Minuten, Sekunden einstellen. Wenn Sie diese Einstellung nicht aktivieren, läuft die Aufnahme so lange bis Sie den Stop ( Stop-Button )-Button drücken.

- Trigger-Pegel: Wenn aktiviert, startet die Aufnahme erst wenn die Lautstärke des Eingangssignals einen bestimmten Pegel überschreitet, der zwischen 0 und 100% der höchsten möglichen Eingangs-Lautstärke. Dies ist nützlich wenn Sie nicht die Stille am Anfang aufgenommen haben wollen.

- Der Neu ( Neu-Button )-Button ist aktiv wenn keine Aufnahme läuft oder die Aufnahme beendet ist. Der Inhalt der aktuellen Datei wird verworfen.

- Der Stop ( stop button )-Button ist aktiv während die Aufnahme oder Vorab-Aufnahme läuft oder während &kapp; auf das Erreichen eines Triggerpegels wartet. Beim Klicken wird der aktuelle Vorgang angehalten.

- Der Pause ( Pause-Button )-Button ist aktiv während die Aufnahme oder Vorab-Aufnahme läuft. Beim ersten Klicken wird die Aufnahme angehalten und der Button fängt an zu blinken. Beim zweiten Klicken hört der Button auf zu blinken und die Aufnahme geht sofort weiter, ohne auf das Erreichen eines Triggerpegels zu warten.

- The Aufname ( Aufnahme-Button ) startet die Aufnahme und Vorab-Aufnahme, abhängig von den oben aktivierten Einstellungen.

  1. Wenn weder Vorab-Aufnahme noch Triggerpegel aktiviert wurden, startet die Aufnahme sofort beim Klicken des Aufnahmebuttons.

  2. Wenn die Vorab-Aufnahme aktiviert wurde und ein Triggerpegel gesetzt wurde, wartet &kapp; nach dem ersten Klicken auf das Erreichen des Triggerpegels. Während dem Warten können Sie den Start der Aufnahme erzwingen indem Sie den Aufnahmebutton nochmals klicken, ansonsten startet die Aufnahme sobald der Triggerpegel erreicht wurde.

  3. Wenn die Vorab-Aufnahme aktiviert wird, startet das erste Klicken nur die Vorab-Aufnahme, erst beim zweiten Klick wird die Aufnahme wirklich gestartet.

### Wiedergabe

Je nachdem welche Optionen zur Kompilierzeit gesetzt waren, kann &kapp; mit Hilfe folgender Wiedergabe-Methoden abspielen:

- OSS (Open Sound System): Die älteste Linux-Implementierung, Wiedergabe in Mono und Stereo. Veraltet seit Linux-Kernel 2.6, aber immer noch weit verbreitet. Kann mit aRts von KDE und anderen Sound-Applikationen kollidieren, es können nicht mehrere Applikationen gleichzeitig OSS-Wiedergabe nutzen !

- ALSA (Advanced Linux Sound Architecture): Löst OSS ab, unterstützt mehr Features und mehr Hardware als OSS. Kann ebenfalls mit aRts oder anderen Sound-Applikationen kollidieren, hat aber ein Plugin namens "DMIX" als Ausweg.

- aRts (Analog Realtime Synthesizer): Die bevorzugte Methode für Sound-Wiedergabe in KDE, der Soundserver der von KDE selbst verwendet wird. Mehrere Applikationen können gleichzeitig abspielen. Muss im KDE-Kontrollzentrum konfiguriert werden.

Bevor Sie erstmals Dateien abspielen, sollten Sie den Dialog der Wiedergabe-Einstellungen ansehen:

Das ist ein Screenshot von &kapp;'s Wiedergabe-Einstellungen Screenshot der Wiedergabe-Einstellungen

Momentan unterstützt &kapp; die Wiedergabe mit 8 und 16 Bits, mit Mono und Stereo via OSS und aRts, sowie alle andern Modi die von Ihrer Sound-Hardware unterstützt werden mit Hilfe des ALSA-Systems.

Wenn Ihre Datei mehr Kanäle besitzt als Ihre Wiedergabe-Hardware erlaubt, werden alle Kanäle zur Wiedergabe zusammengemischt. Wenn Sie beispielsweise eine Datei mit drei Kanälen abspielen wollen, so wird am linken Kanal der Kanal 0 (oben) und die Hälfte von Kanal 1 (mitte) abgespielt, am rechten Kanal die andere Hälfte von Kanal 1 und der Kanal 2 (unten).

Um eine saubere Wiedergabe ohne Unterbrechungen zu erreichen, sollten Sie die Buffer-Größe auf einen sinnvollen Wert einstellen. Wenn Sie Probleme mit Unterbrechungen während der Wiedergabe haben, sollten Sie hier den Buffer vergrößern. Je größer Sie jedoch den Buffer einstellen, desto größer wird die Verzögerung zwischen dem hörbaren Sound und der angezeigten Wiedergabe-Position im Hauptfenster.

Der Dialog der Wiedergabe-Einstellungen enthält auch einen Button um einen einfachen Test-Ton abzuspielen. Sie sollten einen 440Hz-Ton hören, der der Reihe nach über alle Lautsprecher wandert.

Sobald Sie die Wiedergabe konfiguriert haben, können Sie die Wiedergabe-Kontrollelemente des &kapp;-Hauptfensters aus dem Wiedergabe-Menue oder mit Tastaturkürzel verwenden:

- P Wiedergabe Start : Startet die Wiedergabe vom Anfang der aktuellen Auswahl an, oder von der aktuellen Cursorposition wenn nichts ausgewählt wurde. Es wird nur ein mal abgespielt.

- Wiedergabe Schleife : wie zuvor, jedoch mit Wiederholung in einer Schleife.

- Space Wiedergabe Pause : Hält die Wiedergabe an der aktuellen Position an. Nur verfügbar während die Wiedergabe läuft.

- Space Wiedergabe Fortsetzen : Setzt die Wiedergabe an der Stelle fort an der sie angehalten wurde. Nur verfügbar wenn die Wiedergabe angehalten wurde.

- Esc Wiedergabe Stop : Beendet die Wiedergabe, geht zurück an den Start der Auswahl.

### Datei-Eigenschaften

&kapp; kann verschiedene Zusatzinformationen verwalten, die mit in einer Audio-Datei gespeichert wurden. Es versucht, so viele dieser Informationen wie möglich zu importieren und zu exportieren. Wenn Sie zum Beispiel MP3-Dateien mit ID3-Tags importieren, bleiben diese beim Speichern als Wave-Datei nicht erhalten. Wenn &kapp; Zusatzinformationen beim Speichern verlieren würde, erscheint eine Warnung.

Datei-Informationen können Sie ansehen und bearbeiten unter Bearbeiten Datei-Informationen... . Hier können auch Sie Dinge wie das Sample-Format, Auflösung, und Kompression einstellen.

Das ist ein Screenshot von &kapp;'s Dialog der Datei-Informationen Screenshot des Dialogs mit Datei-Informationen

### Die Funktionsweise der Auswahl

&kapp; erlaubt es Ihnen, einen kontinuierlichen Bereich von Samples wie auch jede Kombination von Kanälen (wenn Sie eine Multi-Kanal-Datei bearbeiten) auszuwählen. Wenn Sie einen Sample-Bereich (Zeitrahmen) ausgewählt haben, werden alle folgenden Befehle darauf angewendet, wobei das Deselektieren eines Kanals den Inhalt nicht verändert.

#### Auswahl von Kanälen

Das Auswählen oder das Deselektieren eines Kanales ist recht einfach. Klicken Sie einfach auf das Lampensymbol auf der linken Seite des Signalsfensters um seinen Status zu verändern:

grüne Lampe ein grünes Licht bedeutet "aktiviert", wohingegen

rote Lampe eine rote Lampe "deaktiviert" bedeutet.

Hinweis: Wird ein Kanal deselektiert, wird er bei der Wiedergabe nicht hörbar sein!

#### Auswahl von Samples

Wenn Sei einen Sample-Bereich in &kapp; auswählen, wird dieser Bereich inclusive sein. Das heißt, dass das erste und das letzte ausgewählte Sample mit zur Auswahl gehören und benutzt werden für die folgenden Aktionen. Deshalb wird, selbst wenn Sie keinen Bereich sondern nur ein einzelnes Sample ausgewählt haben, die Auswahl niemals wirklich "leer" sein. So zum Beispiel wird, selbst wenn Sie keinen Bereich ausgewählt haben, die "Löschen" Funktion auf dieses einzelne Sample angewendet.

Der einfachste Weg einen Sample-Bereich auszuwählen ist einfach mit der Maus. Es funktioniert so, wie Sie es von anderen Anwendungen her bereits gewohnt sind: drücken Sie einfach die linke Maustaste auf den Punkt, beim dem die Auswahl beginnen soll und lassen die Maustaste am Endpunkt wieder los.

Wenn Sie die Auswahl verschieben oder ihren Start- oder Endpunkt anpassen wollen, können Sie den Mauscursor an den Rand der Auswahl bewegen bis sich der Standard-Pfeil Cursor in einen Links-Rechts Pfeil Cursor geändert hat, um dann die linke Maustaste zu drücken und die Anpassung vorzunehmen.

Sie können ebenso die Auswahl auf einen bestimmten Punkt erweitern oder verkürzen indem Sie die Shift-Taste gedrückt halten und mit der linken Maustaste klicken. Abhängig davon welcher Rand näher ist, wird der linke oder rechte Rand der Auswahl neu gesetzt.

Es sind auch einige Funktionen über das Menü und über einige Tastatur- Kurztasten (Shortcuts) verfügbar:

- Auswahl des gesamten Signals: Strg A Bearbeiten Auswahl Alles

- die aktuell sichtbare Fläche: V Bearbeiten Auswahl Sichtbarer Bereich

- den nächsten Sample-Block, beginnend ein Sample nach dem Ende der aktuellen Auswahl und mit der gleichen Länge: Shift+ Bearbeiten Auswahl Nächste

  (Hinweis: benutzen Sie die "+" Taste vom numerischen Ziffernblock!)

- den vorhergehenden Sample-Block, bis ein Sample vor dem Anfang der aktuellen Auswahl und mit der gleichen Länge: Shift- Bearbeiten Auswahl Vorherige

  (Hinweis: benutzen Sie die "+" Taste vom numerischen Ziffernblock!)

- erweitern der Auswahl bis zum Anfang des Signals (erstes Sample): Shift Pos1 Bearbeiten Auswahl bis zum Anfang

- erweitern der Auswahl bis zum Ende des Signals (letztes Sample): Shift Ende Bearbeiten Auswahl bis zum Ende

- entfernen der Auswahl und markieren von "nichts": N Bearbeiten Auswahl Nichts

### Zwischenablage

&kapp; muss unglücklicherweise selbst eine Zwischenablage implementieren und benutzen. Dies ist notwendig aufgrund der mangelnden Unterstützung für andere Formate (als Text und Bitmaps) in der KDE Umgebung, was jedoch in zukünftigen Ausgaben gelöst werden könnte.

Dennoch hat dies einige Nachteile. So können Sie beispielsweise keine Daten zwischen zwei &kapp;-Instanzen mittels der Zwischenablage austauschen. Jede Instanz von &kapp; benutzt ihre eigene Zwischenablage und deshalb kann dies nicht funktionieren.

Falls Sie also von der Zwischenablage Gebrauch machen wollen, sollten Sie nur eine Instanz von &kapp; starten und mehrere &kapp; Fenster benutzen.

### Drag and Drop

&kapp; unterstützt das KDE Drag and Drop-Protokoll. Dies ermöglicht Ihnen, Dateien einfach mittels der Maus in einem `konqueror`- Fenster oder vom Desktop aufzunehmen und sie über einem Fenster von &kapp; fallen zu lassen, um sie zu öffnen.

Bitte beachten Sie, dass wenn eine Datei über einen &kapp; Fenster fallen gelassen wird, welches bereits eine geöffnete Datei enthält, diese zuerst geschlossen wird und dann erst die losgelassene Datei geöffnet wird. Wenn Sie dies nicht wollen, sollten Sie zuerst ein neues leeres &kapp; Fenster öffnen.

Sie können auch einen Bereich von Samples auswählen und per Drag und Drop in ein anderes &kapp;-Fenster verschieben. Standardmäßig wird der Vorgang im Verschieben-Modus durchgeführt, wobei der ausgewählte Bereich von seiner ursprünglichen Stelle gelöscht und an der Position des Fallenlassens eingefügt wird. Durch Drücken der Strg-Taste können Sie dieses Verhalten ändern und stattdessen den Kopieren-Modus verwenden.

## Entwickler-Handbuch zu &kapp;

in Arbeit

Sorry, leider muss dieses Kapitel noch geschrieben werden ... im Moment ist der Source Code fast vollständig mit Tags passend zu den KDE- Dokumentationswerkzeugen dokumentiert. Aktuell bevorzugen wir die Benutzung von doxygen. Vielleicht werden wir eines Tages etwas Zeit erübrigen können, um ein Tool zu schreiben, dass die doxygen Ausgabe in etwas umwandelt, was man in irgendeiner Art und Weise in die Docbook Quellen (die Quellen, aus denen diese Seite erzeugt wurde) einbinden könnte.

Wenn Sie ein Plugin schreiben und etwas zu diesem Projekt beitragen (oder vielleicht den oben erwähnten Konverter schreiben) wollen, dann scheuen Sie sich nicht, einem der Autoren direkt zu schreiben und / oder der &kapp; Mailing-Liste beizutreten. Hilfe ist immer willkommen!

### Hinzufügen von Unterstützung für eine neue Sprache

1. Generiersystem:

   Bearbeiten Sie die Datei `CMakeLists.txt` im Hauptverzeichnis und fügen Sie einen neuen Eintrag zu der Liste der Sprachen hinzu. Suchen Sie dazu die Variable `KWAVE_LINGUAS` und fügen Sie eine Zeile für die neue Sprache hinzu. Jeder Eintrag besteht aus einem Paar von einem Sprach-Code und einem Sprach-Name, nach folgendem Schema: ``<code>``:``<name>``. Beispiel:

       fr:Francais

   Der Sprach-Code ist ein 2-Buchstaben-Code der für Verzeichnisse und Dateinamen verwendet wird, genau so wie in KDE selbst. Der Name der Sprache wir nur intern benutzt für die Online-Hilfe im docbook-Format. Für eine Liste verfügbarer Sprachen-Codes und Namen sei auf den internationalen Standard ISO 639-2 verwiesen.

2. Benutzerschnittstelle:

   Wechseln Sie in das Quellenverzeichnis von &kapp; (nicht das Generierverzeichnis), wechseln Sie dann in das Unterverzeichnis `po` und kopieren Sie die Datei `kwave.pot` in die entsprechende `.po`-Datei der Sprachee die Sie hinzufügen wollen: `"`<code>`.po"`. Danach können Sie diese Datei mit ihrem hierfür bevorzugten Programm übersetzen, vorzugsweise mit `kbabel`. Beispiel:

       % cd $HOME/src/kwave
       % cd po
       % cp kwave.pot fr.po
       % kbabel fr.po

3. Online-Hilfe:

   Dies ist ähnlich wie das Verfahren für die Benutzerschnittstelle, erfordert jedoch ein paar zusätzliche Schritte, weil der Originaltext im `docbook`-Format vorliegt und die `.pot`-Vorlage eine generierte Datei ist. Wechseln Sie also in das Quellenverzeichnis von &kapp; (nicht das Generier-Verzeichnis), wechseln Sie dort in das Unterverzeichnis `doc` und erzeugen Sie eine leere `.po`-Datei:

       % cd $HOME/src/kwave
       % cd doc
       % touch help_fr.po

   Dann wechseln Sie in das Generierverzeichnis (z.B. irgendwo unter `/tmp`),bereiten die Generierung vor und erzeugen dann die `.pot`-Vorlage (Sie können getrost die Fehlermeldungen ignorieren die in dieser Stufe angezeigt werden). Diese Vorlage muss dann in die `.po`-Datei im Quellenverzeichnis der Online-Hilfe kopiert werden. Beispiel:

       % mkdir /tmp/kwave-build
       % cd /tmp/kwave-build
       % cmake $HOME/src/kwave
       % make doc
       % cp doc/help_en.pot $HOME/src/kwave/doc/help_fr.po

   Nun können Sie die `.po`-Datei wie oben beschrieben übersetzen:

       % cd $HOME/src/kwave
       % cd doc
       % kbabel help_fr.po

4. Bildschirmfotos:

   Für die Online-Hilfe benötigen Sie auch noch Screenshots die die übersetzten Texte enthalten. Dies erfordert ein generiertes und installiertes &kapp;-Paket, Sie sollten also die in den Anweisungen im Abschnitt Kompilierung und Installation. Natürlich dürfen Sie nicht die Generier-Option`WITH_DOC=no` verwenden, ebensowenig eine andere Option die Funktionalität entfernt; von den deaktivierten Komponenten könnten Sie sonst keine Screenshots anfertigen.

   Für eine Liste bereits existierender Screenshots können Sie in eines der bereits existierenden Quellen-Verzeichnisse nachsehen, beispielsweise in`$HOME/doc/de`. Alle Screenshots sind im `.png`-Format und solten sich an die KDE Documentation Screenshots Requirements halten. Hier kurz zusammengefasst:

   - Fensterdekoration: Plastik

   - Stil: Plastik

   - Farben: KDE-Standard

   - Hintergrund: Einfache Farbe -muss "weiss" sein

   - verwenden Sie X11 im 72dpi-Modus

   - Speichern Sie die Dateien in 8 Bit/Pixel

   - Versuchen Sie die Dateien kleiner als 20kB zu halten

Hilfreiche Links:

- RFC 3066 Bezeichner für die Identifikation von Sprachen

- KDE Localization enthält eine Menge nützlicher Links für KDE-Übersetzer.

- KBabel ist das Standard-Programm das Ihnen bei der Übersetzung von `.po`-Dateien hilft.

- KDE Documentation Anforderungen für die Erstellung von Bildschirmfotos.

## Fragen und Antworten

Was brauche ich um &kapp; zu kompilieren?

Lesen Sie im vorhergehenden Kapitel nach. Das Kompilieren funktioniert sowohl mit gcc-2.95 als auch mit gcc-3.x.

Welche Soundkarten unterstützt &kapp;?

&kapp; braucht keine Unterstützung für irgendeine besondere Soundkarte. Die Soundkarte muss nur von Ihrem Betriebssystem unterstützt werden und &kapp; nutzt dann sein Interface zum Betriebssystem-Soundkarten-Treiber mit Hilfe von OSS oder ALSA. Deshalb kann &kapp; jede Soundkarte benutzen, die unter KDE einsetzbar ist.

Warum sind einige Menüeinträge / Features immer deaktiviert?

Dies ist auf unsere Entscheidung zurückzuführen, dass diese Aktionen noch nicht stabil genug arbeiten um sie dem normalen Benutzer zu präsentieren und deshalb wurden sie deaktiviert um Schwierigkeiten zu vermeiden. Sie werden Zugang zu ihnen bekommen, wenn sie getestet und stabil genug sind.

Warum verbraucht &kapp; mehr Speicher als es die Größe der geöffneten Datei erwarten lässt?

Der Grund dafür liegt im internen Speichersystem von &kapp;, in dem alle Samples in 32-bit Ganzzahlen (Integers) gespeichert werden. Dies war einfach zu programmieren, machte die Anwendung schneller und ein bisschen betriebsicherer. Deshalb werden 8-Bit Dateien mit rund einem Megabyte um die vier Megabyte im Speicher belegen. Vielleicht werden wir das irgendwann in der Zunkunft ändern...

Welche Soundformate unterstützt &kapp;?

&kapp; unterstützt zur Zeit .wav Dateien mit 8, 16 und 24 bits pro Sample, mit beliebiger Anzahl von Kanälen (einschließlich Mono und Stereo natürlich). Zusätzlich unterstützt es alle Dateiformate von libaudiofile sowie andere wie Ogg/Vorbis und MP3 (nur Import).

Was ist, wenn ich Dateien habe die &kapp; nicht unterstützt?

Wenn Sie mit einem anderen Format arbeiten müssen, dann können Sie dieses in das .wav Format konvertieren. Eine gute Auswahl an Werkzeugen bietet das SoX Paket, das auch umfangreiche Dokumentationen bereithält!

Ich bekomme Fehler wenn ich versuche die Wiedergabe zu starten?

Vielleicht haben Sie eine Kombination von Playbackrate und Samplegröße gewählt, die nicht von ihrem Soundtreiber und / oder ihrer Soundhardware unterstützt wird. Versuchen Sie zuerst Playback mit 8 bits pro Sample und Mono, dies sollte immer funktionieren. Dann versuchen Sie die Bits pro Sample und die Stereowiedergabe schrittweise zu erhöhen. Beachten Sie dabei aber, dass einige Playbackraten nicht vollständig von einigen Soundkarten unterstützt werden.

Die Wiedergabe scheint etwas zu tun, aber ich höre nichts?

Vielleicht haben Sie vergessen die Lautstärke des Wiedergabe- Kanals zu erhöhen. Für das Ändern der Wiedergabelautstärke ist &kapp; nicht verantwortlich.

Einige Dateien werden mit halber Geschwindigkeit wiedergegeben?

Versuchen Sie ein anderes Device zur Soundwiedergabe auszuwählen.

Die Wiedergabe wird manchmal gestört und unterbrochen?

Sie sollten die Größe des Wiedergabe Buffers erhöhen um eine "glattere" Wiedergabe zu bekommen (dies führt auch zu einer langsameren Reaktion der Wiedergabe- Kontrolle).

Die Wiedergabe hält nicht an, wenn ich sofort die Stop-Taste drücke?

Der Grund dafür ist, dass der Soundtreiber, in dem Moment in dem Sie die Stop-Taste drücken, bereits Wiedergabedaten von &kapp; erhalten hat. Verringern Sie die Größe des Wiedergabe Buffers und die Reaktion sollte schneller einsetzen (dabei werden aber Aussetzer wahrscheinlicher).

Wird ALSA unterstützt?

Ja, seit v0.7.4 für Aufnahme und Wiedergabe

Wie steht es mit der Wiedergabe von 18, 20, 24 oder 32 bits pro Sample oder mehr als zwei Kanälen?

Dies ist seit v0.7.4 möglich mit Hilfe von ALSA.

Wie steht es mit MP3 Unterstützung?

Solange es noch Patent-Probleme mit MP3 gibt, unterstützen wir nur den Import mit Hilfe der "mad"-Bibliothek. Kein Export, sorry...

## Credits und Lizenz

&kapp;

Programm Copyright von 1998-2000 Martin Wilz mwilz@ernie.mi.uni-koeln.de

Documentation copyright (C) seit 2000 Thomas Eschenbacher thomas.eschenbacher@gmx.de

Für eine vollständige Liste der Autoren und Lizenzen lesen Sie bitte die Datei `LICENSES`, die in der Quellcode-Distribution enthalten ist oder hier gefunden werden kann: "http://svn.sourceforge.net/viewvc/kwave/trunk/LICENSES?view=markup".

Beitragende / Autoren:

- Thomas Eschenbacher thomas.eschenbacher@gmx.de

- Sven-Steffen Arndt ssa29@gmx.de (Homepage und deutsche Übersetzung)

- Ralf Waspe rwaspe@web.de (Hilfe/Über - Plugin)

- Gilles Cauliercaulier.gilles@free.fr (Französische Übersetzungen, Splashscreen, Beta-Tester)

- Dave Flogeras dflogera@nbnet.nb.ca (Kerbfilter - Plugin)

- Rik Hemsley rik@kde.org (Widget der Aussteuerungs-Anzeige)

Dank an (in alphabetischer Reihenfolge):

- Jorge Luis Arzola arzolacub@gmx.de (Pakete für SuSE Linux)

- Matthias Düsterhöft duesti@gmx.de (für die Tips zu den RPM-Optimierungen)

- Michael Favreau michel.favreau@free.fr (Pakete für Arch Linux)

- Aurelien Jarno aurel32@debian.org (Debian-Pakete)

- Martin Kuball makube@user.sourceforge.net (Beta-Tester)

- meine Frau Ximena González (für ihre Geduld)

- T.H.F. Klok und Cedric Tefft (Maintainer der id3lib Bibliothek)

- Robert Leslie rob@mars.org (Author der mad mp3-Decoder-Bibliothek)

- Erik de Castro Lopo erikd@zip.com.au (Autor der sndfile-Bibliothek)

- Michael Pruett mpruett@sgi.com (Autor der audiofile Bibliothek)

- Robert M. Stockmann stock@stokkie.net (Pakete für Mandrake / X86_64)

- Diederick de Vries diederick76@gmail.com (Pakete für Crux Linux)

Dokumentation Copyright (C) 2006 Thomas Eschenbacher thomas.eschenbacher@gmx.de

Älterer Code enthielt einige FFT-Routinen und Codefragmente vom GNU Scientific Library project http://sources.redhat.com/gsl/.

&underFDL; &underGPL;