# Le manuel de &kapp;

## Introduction

« &kapp; » est un éditeur de pistes sonores pour l'environnement de bureau KDE3. Il inclut les fonctionnalités suivantes :

- Les fonctions de couper, copier et coller.

- Le défaire et refaire multiple.

- labeling of signals

- Recording functionality, including pre-recording

- Écoute des pistes audio via le module sonore aRts, ALSA et OSS.

- Enregistrement des pistes audio via le module sonore ALSA et OSS.

- Importation de fichier au format MP3.

- Importation et exportation des fichiers au format Ogg / Vorbis.

- Importation et exportation des fichiers au format FLAC.

- Quelques fonctions d'analyses tel que le Sonogramme.

- internally uses 24 bit fixed precision for sample data

- Une sélection libre du taux d'échantillonnage.

- Le support des multicanaux pour l'édition de fichiers sonores.

- La lecture de fichiers sonores multicanaux (l'écoute des pistes audio est mixée en mono ou en stéréo).

- L'extension facile des fonctionnalités du programme par l'ajout de modules externes.

- Importation/exportation d'autre formats audio à l'aide de libaudiofile.

Si vous êtes intéressé par ce qui a été fait dans ce programme, ou par ce qui reste à faire, alors lisez les fichiers `CHANGES` et `TODO` inclus dans le paquetage des sources. De l'aide et des remarques constructives sont toujours les bienvenues.

### Les ressources de &kapp;

Si vous voulez prendre contact avec les développeurs, pour fournir de l'aide sur l'élaboration de &kapp;, soumettre des correctifs, rapporter des bogues ou des dysfonctionnements, les informations suivantes peuvent vous intéresser :

- La page WEB du projet.

  Pour toutes informations sur les nouvelles mises à jour ou sur l'ensemble du projet, visitez l'URL de la page WEB officielle de &kapp;

- La liste de diffusion.

  Si vous désirez avoir de l'aide sur l'utilisation de &kapp; ou si vous voulez participer au développement, inscrivez-vous sur la liste de diffusion en visitant l'URL "https://lists.sourceforge.net/lists/listinfo/kwave-devel".

- SVN Repository

  There also is a SVN repository, hosted by SourceForge where you can get the sources of the latest development version. For instructions on how to get access to the repository, read in the chapter about building from SVN, look at "http://sourceforge.net/svn/?group_id=6478", or just browse through the SVN tree through a nice web interface.

### L'historique des différentes versions de &kapp;

Ce projet a débuté en été 1998 par Martin Wilz et a été développé et amélioré par lui-même et quelques autres contributeurs. En novembre 1999 Thomas Eschenbacher a commencé à corriger quelques petits bogues et à s'investir progressivement dans l'ensemble du code source du programme. Jusqu'à aujourd'hui, il a ajouté, réécri et corrigé progressivement chaque partie du logiciel et a consacré beaucoup de temps pour les améliorer.

- 0.7.11 [2007-12-09]

  - new internal streaming architecture, based on Qt instead of aRts

  - aRts support is now disabled per default

  - some minor bugfixes for x86_64 support

  - band pass plugin

- 0.7.10 [2007-08-08]

  - build system: using 'METASOURCES=AUTO' (which simplifies a lot)

  - ported the build system to cmake

  - support for newer APIs of FLAC v1.1.3 and v1.1.4 (closes SF bugs #1713655 and #1757716 + debian bugs #427747, #426668 and #431199)

  - replaced problematic code in libaudiofile with new code under the LGPL, contributed by Bertrand Songis (partially fixes debian bug #419124)

  - update of the online documentation to reflect the change of the make system

- 0.7.9 [2007-05-01]

  - playback via ALSA: offer the "default" device, if no devices found offer the "null" device

  - implemented import and export of labels, currently only for uncompressed wav files

  - new plugin for saving blocks between labels as separate files

  - new function: expand selection to labels

  - new function: select next/previous range between labels

  - bugfix: don't change the file name when saving only the selection

  - new configure option: --enable-doc=yes/no to enable/disable the generation of the online documentation (default=yes)

- 0.7.8 [2006-12-31]

  - bugfix: workaround for bug in ALSA, crashed when initializing the dsnoop plugin

  - bugfix: error in swap file handling, one sample was destroyed when resizing. Affects cut, delete, crop and many other functions.

  - fixed the incorrect usage of the word "loose" (thanks to J.T. Hundley)

  - bugfix: went back to old implementation of ThreadsafeX11Guard class in order to fix a deadlock (closes sourceforge bug #1623357)

  - documentation update: mention Subversion instead of CVS

  - zero plugin: new mode, support for inserting a range filled with silence

  - fixed the macro functions "Fade Leadin" and "Fade Leadout", using the new mode of the 'zero' plugin

  - export of ASCII format files

- 0.7.7 [2006-09-17]

  - new feature: implemented a small widget that shows the current selection position and the selection borders

  - new feature: context menu for the signal widget (right mouse button)

  - improved file open dialog: show "All Files" and "All Supported Files"

  - bugfix: error in handling of mouse selection

  - bugfix: recording only used the first channel (closes sourceforge bug #1551050)

  - install plugins kde_moduledir/plugins/kwave instead of kde_datadir/kwave/plugins

- 0.7.6 [2006-06-05]

  - bugfix: recording setup crashed when called for the first time

  - bugfix: do no longer crash when recording device is not present or opening failed

  - bugfix: fixed generation of rpm dependency for libmad

  - bugfix: update the size of the level meter if the dialog size has changed

  - record plugin: added a fancy status bar

  - record plugin: added autodetect/scanning for OSS devices

  - record plugin: added dsnoop plugin as ALSA source

  - record plugin: fewer annoying message boxes, instead show a short notice in the status bar for some seconds

  - record plugin: add logarithmic scale to the level meter and use 3 colors

  - playback plugin: added autodetect/scanning for OSS devices

  - playback plugin / ALSA: support for 18 and 20 bits/sample

  - playback plugin / ALSA: support for big endian

- 0.7.5 [2005-12-31]

  - draw signal in a different color set when not selected

  - bugfix: solved deadlock situation when starting a plugin while another plugin was still running

  - workaround for deadlock when trying to close the current file while a plugin is still running

  - bugfix: delete range only in selected tracks

  - thrown over board the idea of using gstreamer due to serious license issues, we will wait until KDEMM is out (KDE-4) instead.

- 0.7.4 [2005-10-16]

  - recording via ALSA

  - support for the silently changed API of libFLAC++ v1.1.2 (closes sourceforge bug #1243707 + debian bug #289953)

  - fixed support of MMX / SSE detection on X64_64 architecture (closes sourceforge bug #1244320 and debian bugs #288781 + #327501)

  - decided to support gstreamer as streaming engine in future versions (will make v0.8 if Kwave is aRts-free)

  - fixed some German translations (closes debian bug #313790 and bug #314000)

- 0.7.3 [2005-05-26]

  - Écoute des pistes audio via le module sonore ALSA.

  - completely new playback settings dialog, with support for aRts, ALSA and OSS

  - playback plugin: play a test sound

  - record plugin: detect when device is alread open, now no longer blocks. Show an error message.

  - smoother signal display in overview mode (no gaps) and improved polyline mode

  - replaced some of Kwave's multithreading classes with classes from Qt

  - compiles under SuSE-9.3

  - ebuild file for Gentoo Linux

- 0.7.2 [2004-12-31]

  - big rework of the internal streaming/storage subsystem, support for multiple stripes. Makes a big speedup when handling large files! Creating an empty 512MB file before: over 350 sec, now: about 25 sec (on my system)

  - optimized versions of memcpy() for ix86 (using MMX, MMXEXT, 3DNOW, SSE, SSE2) and for PowerPC, copied from the xine project

  - some support for X86_64

  - bugfix: in memory setup plugin, set virtual memory limit only if the limit has been enabled (checkbox is clicked)

  - bugfix: clipping in Ogg import filter was incorrect

  - speedups: import of Ogg and MP3 files improved

  - removed code copied from the GSL library, link against the shared library instead

  - added target "package-messages" to the toplevel Makefile, for translators

- 0.7.1 [2004-07-10]

  - FLAC (Free Lossness Audio Codec) import/export plugin

  - speedups for loading / saving files

  - removed our own copy of libmad from the source tree, now it should be available in all common distributions

  - implemented pre-recording

  - implemented recording time limit

  - bugfix: minor bug in the recording state machine

  - bugfix: solved some layout issues in the about- and sonagram plugins

  - bugfix: cancel while saving to .ogg works now

  - update of the online documentation, many screenshots

  - improved Makefile dependencies of the plugins, now parallel builds also work and speed up the creation of plugins

- 0.7.0 [2003-11-01]

  - Première version avec le module externe d'enregistrement audio (alpha)

  - Suppression des appels au programme « uic ».

  - Correction de bogue : le drapeau d'activation des modules externes était mauvais. Une seule instance de Kwave était possible.

  - Ajout des fichiers projet pour Kdevelop version 3

- 0.6.7 [28-06-2003]

  - Nouveau module externe « pitch_shift ».

  - Nouveau module externe « lowpass ».

  - Nouveau module externe « notch_filter », par Dave Flogeras.

  - Ajout de la version corrigée du module externe « synth_pitch_shift » de aRts.

  - Nouvelle caractéristique : « Aperçu sonore ». Première implantation dans le module externe « pitch_shift ».

  - Portage vers QT3.1 sans compatibilité avec QT2. Compilation possible avec les options « -DQT_NO_COMPAT » et « -DQT_CLEAN_NAMESPACE ».

- 0.6.6 [29-03-2003]

  - Fonctionne avec KDE 3.1.

  - Plusieurs améliorations sur le processus de compilation du programme. Cela doit fonctionner avec les systèmes Debian, Mandrake, RedHat, Gentoo et SuSE.

  - Utilisation de la taille de fenêtre principale utilisée lors de la dernière session.

  - Ajout d'options « Xt » pour la gestion de la géométrie de la fenêtre principale. Correction d'un bogue avec KDE 3.x. Exemple : « kwave -geometry 800x600 ».

  - Correction de bogue : sélection d'un échantillon en moins à gauche d'une sélection quand cela est nécessaire.

  - Module externe « Volume » : simple découpage.

  - Module externe « Volume » : mode « Multiplier avec / Diviser par un coefficient ».

  - Module externe « newsignal » et « selectrange » : « KDoubleNumInput » n'est plus utilisé à cause d'un comportement étrange dans l'affichage.

  - Module externe « selectrange » : sélection correcte au début de la plage sélectionnée.

  - Possibilité d'utiliser les bibliothèques « libmad » et « libaudiofile » si elle sont installées sur votre système.

  - Affichage des informations du module externe « fileinfo » quand on enregistre sous un type MIME différent.

- 0.6.5 [09-11-2002]

  - Importation de fichiers au format MP3 avec le support des marquages ID3 avec les bibliothèques « id3lib » et « libmad ».

  - Importation et exportation des fichier Ogg / Vorbis (seulement en mode ABR).

  - Nouveau module externe « volume ».

  - Affichage des plages sélectionnées avec le temps (caractéristique demandé par Christian Hollaender).

  - Support de l'enregistrement des fichiers « .wav » compressés.

  - La compatibilité avec Qt2/KDE2 n'est plus respectée. Seul Qt3/KDE3 sont supportées.

  - Module externe de lecture : activation du bouton « Sélectionner... » pour choisir d'autres périphériques de lecture (caractéristique demandé par Len Ovens).

  - Résolution des problèmes avec label « mangling » dans les modules externes et les versions différentes du compilateur « gcc ».

  - Fonctionne avec le compilateur « gcc » en version 3.2. Résolution des problèmes avec « __dso_handle ».

  - Ajout de contrôles plus stricts pour des programmes dans le script « .configure ».

- 0.6.4 [30-06-2002]

  - Support pour différents formats de fichiers. Intégration de « libaudiofile ».

  - Correction de bogues pour le glisser / déposer : le lâchement dans un même signal audio à gauche d'une sélection supprime une mauvaise partie du signal.

  - Réparation automatique des structures endommagées des fichiers au format WAVE.

  - Correction de bogues dans la sauvegarde d'une sélection.

  - Intégration de « libkwavemt » dans « libkwave ».

  - Utilisation du temps à la place du facteur de zoom (tel que lorsque le zoom correspond à « 1 minute »).

  - Entrées dans le menu pour le contrôle de la lecture d'une piste sonore.

  - Quelques icônes supplémentaires dans les menus.

  - Remplacement de « KFileDialog » par la sous-classe « KwaveFileDialog » (corrige quelques bogues avec KDE).

  - Ajout d'un petit chapitre dans l'aide sur les rudiments des enregistrements audio numériques.

  - Ajout du module externe « Selectrange ».

- 0.6.3 [01-03-2002]

  - Le glisser / déposer simple.

  - Traductions Française.

  - Traitement de « signal modified ».

  - Affichage d'un message d'erreur et d'arrêt si le chargement d'un fichier échoue.

- 0.6.2 [24-12-2001]

  - Nouveau module externe « amplifyfree ».

  - Nouveau module externe « noise ».

  - Un nouveau module externe pour le serveur de sons aRts fonctionne maintenant avec Kwave et il est possible de l'utiliser pour jouer des pistes sonores.

  - Changement du format de la documentation en XML / Docbook-4.1.

  - Récupération des fichiers endommagés si leur longueur n'est pas égale à zéro mais que les données d'entrées dans l'en-tête du fichier au format WAVE indique une valeur nulle (tel que lorsqu'une application comme « Krecord » s'arrête indésirablement pendant l'enregistrement d'une piste sonore).

  - Correction de bogue : libération de la mémoire virtuelle allouée dans le gestionnaire de mémoire.

  - Correction de bogue : problème avec TSS dans la libération de « TSS_Object ».

- 0.6.1-1 [01-09-2001]

  - Correction de bogue : la classe « Track » construit une entrée en double dans la liste des pistes quand on insère des signaux dans une piste sonore vide.

  - Correction du comportement étrange de l'affichage dans les boîtes de dialogues, depuis que la librairie Qt a des problèmes avec la construction de boîtes de dialogues complexes.

- 0.6.1 [24-08-2001]

  - UTILISATION DE LA MÉMOIRE VIRTUELLE

  - Changement des fichiers « Makefiles » : la documentation au format HTML restant dans la distribution de l'application provoque des dysfonctionnements avec les outils de construction de la documention pour KDE.

  - Quand on insère des données issues du presse papier vers un nombre de pistes sonores non cohérent, le résultat est mixé (opération non optimisée / lente).

  - Correction de problèmes pour la compilation avec les compilateurs gcc-2.96 / gcc-3.0.

  - Correction de l'oubli d'un fichier d'en-tête dans « NewSigDlg.ui ».

  - Le RPM doit pouvoir être relogeable lors de l'installation.

  - Correction d'un bogue dans les séquences de fermeture de l'application. Le presse-papiers est alors vidé de son contenu.

- 0.6.0 [29-07-2001]

  - PORTAGE VERS QT-2 ET KDE2

  - Architecture interne revue et corrigé complètement.

  - Les modules externes peuvent être installés dans les dossiers des utilisateurs.

  - « libkwave » est incluse dans le programme alors qu'elle était avant un paquetage séparé.

  - Écoute des pistes audio via le module sonore aRts.

  - Nombreuses correction de bogues.

- 0.5.5-1 [23-02-2001]

  - Correction de bogues : impossible de sélectionner jusqu'à la fin des pistes sonores.

  - Correction de bogues : plus de débordement mémoire dans le traitement des en-têtes wav lors de la sauvegarde de fichiers de plus de 268Mo (bogue reporté par Sven-Steffen Arndt, ssa29@gmx.de).

- 0.5.5 [01-12-2000]

  - Nouvelle gestion de la lecture de pistes sonores avec les fonctions Pause et Continuer.

  - Limitation de la taille de la mémoire tampon de lecture a une valeur comprise entre 256 et 65536 octets. Il y avait quelques problèmes avec de petites tailles lorsque la taille était comprise entre 16 et 64 octets (peut être liés à des dysfonctionnements matériels).

  - Ajout d'une barre d'outils comme dans toute application standard.

  - Correction de quelques bogues concernant les sélections avec la souris.

  - Reprise des « Widgets » de l'IHM (utilisés dans la fenêtre principale et le sonogramme).

  - Correction de la commande « zoomer sur la sélection ».

  - Sonogramme : sauvegarde dans un fichier et ajustement automatique de la brillance.

  - Remplacement de « QFileDialog » par « KFileDialog ».

  - Tests des optimisations de compilation pour un processeur AMD Athlon (correctifs pour pegcs).

  - Correction de bogues pour un fonctionnement correct du multithreading.

  - Vérification de quelques fichiers d'en-tête pour la séquence de configuration (Problèmes reportés par issiac@evcom.net).

- 0.5.4-4 [03-10-2000]

  - Ajout des classes « Mutex » et « MutexGuard ».

  - Sonogramme : ajout d'une image de fond transparente.

  - Ajout des fonctions « sizeHint() » et « minimumSize() » pour « ScaleWidget » et « OverViewWidget »

  - Sonogramme : suppression de « SonagramContainer », utilisé dans « QGridLayout ».

  - Déplacement de « SignalProxy » dans le sous-dossier « mt ».

  - Correction de problèmes de synchronisation avec X11 concernant « SignalProxy ».

  - Ajout du support de TSS (Thread-Specific-Storage) dans les classes « mt ».

  - Ajout de quelques classes pour le multithreading : « Thread », « AsynchObject », ...

  - Suppression du préfixe « get » de toutes les fonctions membres. Ceci est le nouveau style de codage pour KDE/QT.

  - Mise à jour de la documentation en ligne qui référence la nouvelle page WEB de Kwave sur http://kwave.sourceforge.net/.

  - Classe « ImageView » : toujours redessiner (les images et les données peuvent changer).

  - Correction de bogue : La sélection et le curseur de lecture ne seront pas dessinés si aucun fichier n'est chargé.

- 0.5.4-3 [09-09-2000]

  - Le titre de la fenêtre du sonogramme est mise à jour si le nom du fichier a changé.

  - Mise en place d'une solution au problème de synchronisation entre X11 et Qt dans l'environnement multithread.

  - Correction de bogue dans la fonction « Halt » (lecture audio).

- 0.5.4-2 [20-08-2000]

  - Management de la géométrie et des positions des « Widgets » de la fenêtre principale.

  - Limitation de l'affichage de la largeur d'un fichier sonore. Si toutes les pistes sonores sortent en dehors de l'écran, une barre de défilement horizontale apparaît sur le coté droit du fichier.

  - Limitation à une taille raisonnable du « TopWidget ».

  - Dépendances automatiques pour le fonctionnement des modules externes.

- 0.5.4-1 [29-07-2000]

  - Correction de la présentation de la boîte de dialogue des options de lecture.

  - Commencement de l'implémentation d'une nouvelle interface pour les modules externes.

  - Géométrie et présentation de la boîte de dialogues pour le paramétrage du sonogramme.

  - Mise en forme de la sélection et du temps dans un fichier sonore (KwavePlugin::ms2string).

  - Les modules externes peuvent maintenant être constitués de plusieurs fichiers sources.

- 0.5.4 [12-07-2000]

  - Quelques petites corrections dans les fichiers « Makefiles ».

  - Séparation de la documentation en deux parties distinctes : « de » et « en ».

  - Création d'un lien symbolique des dossiers « de » et « default » vers le dossier d'aide en anglais durant l'installation et la désinstallation, ainsi que avant et après l'exécution des scripts du fichier « .spec ». L'utilisateur doit au moins avoir l'aide en anglais...

  - Version alpha de la documentation en anglais.

  - Mise à jour automatique de l'historique de révision dans le fichier au format « Docbook » si le fichier est modifié (version anglaise seulement).

  - Le CVS est mis en service sur sourceforge.net.

  - Changement de quelques lignes d'en-tête dans ce fichier.

  - Commencement de l'écriture d'une nouvelle documentation d'aide en ligne avec l'utilisation du format « Docbook ».

- 0.5.3 [12-06-2000]

  - Si un fichier avec une taille invalide (tel que enregistré par « arecord ») est chargé, on affiche un message et on ne tient pas compte des données lues à la fin du fichier sonore.

  - Trouver quel sortie sonore le programme a besoin avec le démon ALSA pour un échantillonnage de 24 et 32 bits.

  - Lecture d'un fichier sonore en stéréo.

  - Les sélections des canaux audio (x) sont mixés vers les canaux du périphérique de sortie (y) à la lecture d'un fichier sonore en utilisant une matrice de translation x:y avec une échelle linéaire. Toutes les valeurs pour x et y excepté 0 sont admises.

  - Lecture audio pour seulement les canaux sélectionnés.

  - Restructuration de la boîte de dialogue des paramètres de lecture (module externe).

  - Long travail de restructuration du code correspondant à la lecture audio.

  - Correction d'un bogue grave dans « SignalManager::readWavChunk() », qui rendait instable l'application.

- 0.5.2-12 [02-06-2000]

  - Copie de la classe « AsyncSync » dans « libgui », qui doit être utilisée pour un usage des « theadsafe » de la librairie Qt.

  - Déplacement du drapeau « selected » de la classe « SignalManager » vers la classe « Signal ».

  - Correction de bogues sur la sélection d'un canal si on ajoute ou on supprime des données.

- 0.5.2-11 [28-05-2000]

  - Ajout du fichier d'en-tête config.h dans chaque fichier source (exceptés les modules externes).

  - Exportation vers de l'ASCII pour un fichier sonore de plusieurs canaux. (l'importation ne fonctionne qu'avec des données en mono).

  - Correction de plusieurs pertes de mémoire et suppression d'opérations contradictoires (tel que l'utilisation de « delete » à la place de « delete[ ] »).

  - Ajout (et test) du support pour la détection d'erreurs avec les outils de déboguage « Insure++ Lite 4.1 » (./configure --enable-insure=yes ...) -> remerciements à ParaSoft Corporation pour la mise à disposition d'une version limitée disponible sur http://www.parasoft.com.

  - « SignalWidget » utilise une arborescence en couche pour l'affichage. Cela améliore le réaffichage après une sélection avec la souris d'un facteur 14 (!!!) sur mon système.

- 0.5.2-10 [21-05-2000]

  - Quelques corrections de bogues mineurs dans les fichiers « Makefiles ».

  - Sauvegarde et ajout du fichier « .spec » de Kwave dans l'archive des sources. Cela permet à la commande « rpmbuild -ta kwave-x.x.x-x.tar.gz » de fonctionner.

  - Écriture d'un nouveau fichier README. Déplacement de l'ancienne version écrite par Martin dans README.OLD.

  - L'option RPM_OPT_FLAGS a été ajoutée dans la liste des options de compilation, pour permettre aux optimisations du Pentium de fonctionner.

  - Afficher une boîte de dialogue d'erreur sur le chargement d'un fichier a échoué.

- 0.5.2-9 [19-05-2000]

  - La liste des fichiers récemment ouverts est synchronisée avec entre toutes les instances du programme.

  - Correction de pertes de mémoires, d'oublis de constructions du type ASSERT, d'oublis d'initialisations de variable et de possibles divisions par zéro.

  - Le menu d'aide a été aligné sur le coté droit (Le menu principal est capable de gérer la commande spéciale « #separator »).

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

  - Remplacement de toutes les occurrences de « sprintf » par « snprintf », et de « strcpy » par « strncpy » (92 fois).

  - Pas d'affichage du facteur de zoom si aucun fichier sonore n'est chargé.

  - Dans le cas de l'ajout ou la suppression d'un canal, une sélection est décalée.

  - Changement de quelques variables et paramètres en « unsigned » (pour simplifier la vérification des étendues de valeurs).

  - Ajout de ce fichier d'aide.

  - Mise en valeur de quelques portions de code en concordance avec mon style de programmation. -> Remerciements aux développeurs de « Artistic Style ». Le programme astyle-1.11.4-1 fonctionne correctement.

  - Correction de quelques annotations incohérentes dans l'aide et dans la boîte de dialogue « A propos de... »

  - Vérification du format des types « char », « short », et « int » lors de la phase de configuration avant la compilation.

  - « globals.app » n'est maintenant plus utilisée (obsolète, sera retirée de la bibliothèque « libkwave »).

  - « MessagePort » n'est maintenant plus utilisée (obsolète, sera retirée de la bibliothèque « libkwave »).

  - L'ouverture de plusieurs instances de l'application est maintenant possible.

  - Construction des options spécifiques au serveur X (spécialement « -geometry »).

  - Corrections de bogues concernant le chargement et l'enregistrement de fichiers au format WAVE avec des données sous 8 bits (toujours non-signées).

  - RESTRUCTURATION COMPLÈTE DES COMMANDES ET DES STRUCTURES INTERNES DU PROGRAMME

    - Mise en place de combinaisons de signaux et de slots pour l'utilisation de chaînes de messages.

    - Hierarchie des processus : les commandes sont déplacées vers le haut jusqu'à atteindre un « TopWidget ».

    - Les « TopWidget » (de niveau haut) diffusent les commandes vers les niveaux les plus bas.

- 0.5.2 [24-04-2000]

  - Le paquetage RPM peut être maintenant installé sans conflits et compilé sans une installation préalable de Kwave.

  - Suppression du dossier « ${KDEDIR}/share/doc/HTML/default » du RPM pour qu'il n'y ai pas de conflit avec une version de ce dossier déjà existante.

  - « Shift+Home / Shift+End » permettent la sélection de la position courante jusqu'au début / fin du fichier sonore.

  - Correction de bogues dans l'affichage du fichier sonore : il n'est plus inversé dans sa longueur.

  - La fonction « Selectrange() » fonctionne correctement maintenant.

  - Le champs de sélection du facteur de zoom donne une valeur « réelle » du facteur zoom.

  - Quelques corrections de bogues dans le menu de sélection / désélection.

  - Restructuration complète des fonctions de zoom et de sélection :

    - Polynôme simple au lieu de d'une interpolation passe-bas si le facteur de zoom est moins de 10 pixels par échantillons.

    - Interpolation passe-bas si on a plus de 10 pixels par échantillons.

  - Correction de bogues dans « KWaveApp » : maintenant les paramètres généraux (globals.app) sont sauvegardés s'il n'existait pas avant. Il n'y a plus d'arrêt anormal si on charge un fichier spécifié dans la ligne de commande.

- 0.5.1-4

  - La compilation fonctionne maintenant sous RedHat 6.1 / Halloween IV comme pour SuSE 6.2.

  - L'information de version de « libkwavegui.so » est maintenant renseignée à partir de la version du paquetage.

  - Correction de bogues dans « plugins/template/Makefile.am » : on ne créé pas de fichiers « .moc » lorsqu'il y a une exécution d'un nettoyage des compilations ou d'une nouvelle construction.

  - Les drapeaux de compilation sont passés comme paramètres lors de la compilation d'un module externe.

  - La compilation s'effectue avec l'option « --no-rtti ». Ceci est nécessaire pour compiler l'application pour tenir compte des librairies KDE fournies avec une RedHat car celles ci n'ont pas été compilées avec cette option. Cela a un effet important lors de la compilation : tous les avertissements lors de l'édition des liens du programme et des bibliothèques ont disparu.

  - Le script .configure positionne l'option « --enable-debug ».

  - L'importation et l'exportation de l'ASCII fonctionne correctement maintenant (en mono seulement).

  - Corrections de bogues dans quelques modules externes. Toutes les compilations sont sans avertissement et sans erreur.

  - Les modules externes sont maintenant compilés dans un ordre alphabétique.

  - Tous les modules externes sont automatiquement trouvés et compilés.

  - Une nouvelle construction est disponible par la commande « make src.rpm ». Elle permet la fabrication d'un RPM de source.

- 0.5.1-3

  - L'affichage est déplacé à gauche où il est zoomé si on supprime des données à la fin du fichier sonore.

  - Le paramétrage des courbes pour une amplification croissante ou décroissante fonctionne maintenant.

- 0.5.1-2 [16-03-2000]

  - Convertion de plusieurs « klocale->translate(...) » en « i18n(...) »

  - La cible « make messages » fonctionne maintenant.

  - Convertion de menus.config pour la création d'une maquette d'un fichier « .ccp » qui sera utilisé pour l'internationalisation.

- 0.5.1-1 [13-03-2000]

  - Nouvelle cible « make rpm » pour la création d'un exécutable et d'un paquetage RPM.

  - Correction de problèmes concernant le partage de bibliothèques dans la construction du programme.

- 0.5.1 [28-02-2000]

  - Les éléments des menus peuvent appartenir à des sous-groupes.

  - Renomage de « SignalWidget::info »en « refresh ».

  - Plusieurs suppressions dans les fichiers d'en-tête dans les dossiers « src » et « libgui ».

  - Le contrôle des menus a été complètement ré-écrit :

    - Les menus « NumberedMenu » et « MenuCommand » ont été supprimé.

    - Nouvelles classes : « MenuNode », « MenuItem », « MenuSub », « MenuToplevel » et « MenuRoot ».

  - Les items des menus peuvent avoir des icônes.

  - Les liens des menus n'ont qu'un seul identifiant de chaîne de caractères.

  - Les commandes spéciales des menus commencent par un « # ».

  - Première introduction de l'internationalisation.

  - La liste des fichiers récemment ouverts est triée par la date de leur dernière utilisation.

- 0.5.0-1 [27-12-1999]

  - Déplacement de mes modifications du fichier Makefiles dans le fichier Makefile.am.

  - Ajout des cibles « make release », « make patchlevel », et quelques autres scripts.

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

  - Reconstruction de mes modifications pour quelques Makefiles et pour le script .configure qui ont été perdues lors des changements réalisées par Martin.

  - Changement des raccourcis clavier CTRL-SHIFT-X en CTRL-SHIFT-C pour les opérations de mixages.

  - Ajout de la fonction de « couper à la sélection » dans le menu édition.

  - Construction de la fonction de « mixage par copier / coller ».

  - Correction de l'appel « supprimer », qui maintenant supprime réellement des données au lieu de couper et copier la sélection dans le presse-papiers (sauvegarde du contenu du presse-papiers).

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

  - Changement des noms de fichiers en correspondance avec les noms des classes.

  - Une classe par fichier est maintenant le standard.

  - Ajout à plusieurs noms de classes du suffixe « Kwave ».

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

  - Suppression de l'option de compilation « -Werror » (problème avec le script de configuration).

  - Correction d'un bogue complexe dans « SignalManager::save » qui arrête anormalement l'application et la libstdc++.

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

  - Correction d'un bogue de perte de mémoire concernant le destructeur de la classe « SignalManager ».

  - Ajout d'un fichier TODO.

  - Ajout de l'option de compilation « -Werror » pour le compilateur c++ lorsque les options de débogage sont activées.

  - Nettoyage de quelques fichiers d'en-tête dans « libgui ».

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

  - La fonction « SignalManager::writeWavChunk » utilise maintenant une mémoire tampon pour l'écriture (plus rapide !).

  - Correction de bogue : le titre de la fenêtre principal change après un « Sauvegarder dans ».

  - Correction de bogue : la sélection d'une résolution fonctionne maintenant.

  - Correction de bogue : le titre de la fenêtre principal change après un « Sauvegarder dans ».

  - Correction de bogue : la fonction « SignalManager::writeWavChunk » ne détruit plus les données du fichier sonore avant de l'avoir enregistrer.

  - Un « make distclean » dans la racine du projet supprime aussi les fichiers vide, « *.orig », « *.rej » et « *~ ».

  - Les liens symboliques vers les fichiers Makefiles, Makefile.in et Makefile.am dans les dossiers des modules externes sont supprimés avec « make distclean » et reconstruit par « make ».

  - Nettoyage : suppression de quelques anciens fichiers de sauvegarde.

  - Le support du débogage est maintenant facile à utiliser.

  - « configure --enable-debug=yes » (options de compilation « -g » et « -DDEBUG »).

  - Réécriture d'une grande partie de Makefile.in pour les modules externes.

  - Ajout de l'option de compilation « -O2 ».

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

  - Fusion avec la version de Martin Wilz's.

- 1999-11

  - Script de Thomas Eschenbacher pour la numérotation des versions.

  - « KTMainwindow » est maintenant utilisée pour les « Widgets » de haut niveau.

  - Utilisation d'un « timer » pour vérifier les messages systèmes -> le message alternatif (threadsafe) passe à la place d'un signal ou d'un slot.

  - Les sources pour les fonctions de marquage ont été réécrites et sont maintenant incompatibles avec les anciennes versions.

  - Regroupement des routines de chargement.

- 1999-10

  - La suppression des canaux fonctionne.

  - Correction de la boîte de dialogue pour la sauvegarde du marquage.

  - Correction de la boîte de dialogue pour la modification de l'enveloppe d'un signal.

  - Raccordement de plusieurs fonctions par une chaîne de caractères commune.

  - Correction de quelques dépendances entre l'ancien code et les nouvelles classes (il reste encore des choses à faire !).

  - La sauvegarde d'un fichier sonore fonctionne.

  - Correction de la classe « Clipboard ».

  - La classe « Color » a été changée en « QColor » (elle pourra devenir indépendante plus tard).

  - Restructuration de la classe « Curve » pour la création de chaîne. L'interpolation est maintenant utilisée par les objets de cette classe.

  - Déplacement des fonctions graphiques dans une nouvelle bibliothèque (libkwavegui).

  - Nouvelles classes : « Parser », « DynamicLoader », et « Filter » (elles étaient précédemment des structures).

  - Déplacement des fonctions graphiques indépendantes dans une nouvelle librairie (libkwave).

  - Regroupement des boîtes de dialogue dans des fichiers uniques et dans des simples modules externes.

  - Nouveau schéma d'appel via des lignes de commandes. Cela permettra des appels par des scripts et la définition de macros. Les enchaînements sont construis plus facilement, car par une seule chaîne de caractères sont passés tous les paramètres.

  - Les fonctions d'entrées / sorties et de lecture sont adaptées à « SignalManager ».

  - Ajout de la classe « SignalManager » pour la gestion de plusieurs canaux.

- 0.29.5 [04-1998]

  - Juste la correction d'un bogue concernant le zoom arrière.

- 0.29.4 [03-1998]

  - Suppression d'une perte de mémoire dans la lecture audio.

  - Triple vérification de l'oubli des raccourcis clavier dans « Menumanager ». Cela semble être un bogue dans « qpopmenu », j'attendrai que la librairie Qt soit corrigée, ou qu'une solution palliative soit trouvée.

  - La liste des fichiers récemment ouverts est constamment mise à jour pendant l'exécution du programme.

  - Pour une plus grande facilité, Kwave utilise le dossier récemment utilisé pour l'ouverture un fichier.

  - Rétablissement des mécanismes de sélection pour rassembler les versions antérieures à la 0.29.3 et quelques corrections récentes.

  - Maintenant tous les paramètres des destructeurs doivent avoir disparu.

- 0.29.3 [02-1998]

  - Le développement a ralenti, et cette version n'est pas complète comme je le souhaitais depuis la 0.29.2. La modification de tous les destructeurs de classes a été mis de coté, et le programme ne se compile pas sur tous les systèmes -> On y reviendra plus tard...

  - Restructuration des routines de sélection dans les nouvelles classes. Le code est plus confus, mais il fonctionne.

  - Ajout de marques de vérifications.

  - Conversion du menu Fichier dans la nouvelle arborescence des menus.

  - Ajout d'une interface graphique pour mixer 2 canaux ensemble. Le besoin de fonctions pour le mixage sont toujours d'actualité.

  - Bouton d'arrêt par Gerhard Zintel.

- 0.29.2

  - Déplacement des fonctionnalités du presse-papiers dans une classe dédiée.

  - L'allocation dynamique des entrées des menus est utilisée par toutes les classes sauf « TopWidget ».

  - Importation de fichier ASCII.

- 0.29.1

  - Correction de bogues pour la sauvegarde de canaux multiples. Maintenant, la sauvegarde de fichiers doit fonctionner avec d'autres programmes.

  - Fonctionnalité d'écrétage de pics par Gerhard Zintel.

- 0.29.0

  - Changement du numéro de version et de nom de fichiers comme suggéré par la version 1.1 du document « How To Name Things » sur le site WEB « sunsite ». Le dernier nombre sera toujours marqué d'un 0 pour une version qui sera chargée sur « ftp.kde.org ».

  - Ajout des boîtes de dialogues pour les fonctionnalités de fenêtrages (Hamming Hanning, Blackmann).

  - Contribution de la part de Gerhard Zintel pour l'affichage d'information concernant « fftview ».

  - Ajout d'une fenêtre pour la gestion des « pitchs ».

  - Implantation du curseur et de l'échelle en décibel pour la vue sur les transformées de Fourrier.

  - Ajout d'une fonctionnalité sur la re-sélection et le changement de place du curseur.

  - Ajout de différentes possibilités d'affichage en fonction de la représentation des fréquences.

  - Correction d'un gros bogue concernant la sauvegarde en 16 bits.

  - Support du « mmaping » par Juhana Kouhia.

  - Ajout de nouvelles possibilités pour la génération de signaux : trains d'impulsions.

  - Ajout d'un modèle pour les systèmes qui ne gèrent pas les threads Posix -> il sera nécessaire de le déclarer dans le script de configuration (changement du fichier « Makefile » pour ne pas avoir d'édition des liens avec la bibliothèque « libpthread »).

  - Première utilisation du multithreading (pthreads) dans quelques fonctions.

  - La génération de « pitchs » est maintenant indépendante de la synthèse additionnelle.

  - Ajout des fonctions d'importations via des fichiers ASCII.

  - Les labels ASCII sont également sauvegardés via la fréquence.

  - La génération de labels est accordée avec la détection de périodes (auto-correllation).

  - Les classes « Sonagram », « FFTView » et « Distortion-Dialog » utilise maintenant la classe « ScaleWidgets ».

  - Nouvelle classe « ScaleWidget » qui donne plus d'informations à l'utilisateur.

  - Ajout des classes « ProgressDialog » et « Interpolation » pour permettre le multithreading.

  - Correction de quelques bogues mineurs.

- 0.28 [15-07-1998]

  - Changement dans la classe « curvewidget ».

  - Le tri des labels fonctionne maintenant sans écraser les opérations de « QGList::compareItems ».

  - Correction de bogues dans la sauvegarde d'une sélection.

  - Ajout d'une fonction de sauvegarde d'une sélection.

  - Fonction de recherche de signaux dans markers.cpp : interface graphique.

  - Quelques petites corrections de bogues.

- 0.27

  - Première version, qui n'a jamais été chargé sur « ftp.kde.org » (serveur FTP non opérationnel).

## Installation

### Comment obtenir &kapp;

&kapp; a sa propre page WEB à l'adresse http://kwave.sourceforge.net/. Vous pouvez y trouver plus d'informations sur le projet, ainsi que les versions stables et en cours de développement du programme.

If you want to get a &kapp; release, you have the choice to visit http://kwave.sourceforge.net/download.html and

- download a binary package of the latest stable version, if there is one for your distribution,

- download a source RPM package of the latest stable version,

- compile on your own, from a .tar.gz archive with the source code of the latest stable version,

- compile on your own, from the latest SVN source.

Don't be afraid, compiling Kwave should be quite simple even if you are not a programmer. It just needs some developer packages to be installed.

### Ce dont vous avez besoin.

Dans l'ordre, pour pouvoir utiliser &kapp;, vous avez besoin :

- D'un ordinateur sous LINUX (&kapp; peut théoriquement fonctionner sous d'autre système d'exploitation, mais nous n'avons jamais testé cette possibilité. nous vous remercions de nous avertir si vous avez réussi à faire fonctionner le logiciel sur une autre plate-forme).

- D'un équipement audio pour l'écoute des fichiers sonores (ce n'est pas absolument nécessaire, mais que faire avec un éditeur de pistes audio sans pouvoir écouter le résultat de son travail).

- De KDE-3.1 ou supérieur (ou au moins les bibliothèques appropriées. Si vous êtes un fan de l'environnement de bureau Gnome, vous pouvez également utilisé &kapp; à partir du moment que les librairies de KDE sont installées.).

- De Qt-3.1 ou supérieure (normalement associée avec KDE3).

- id3lib-3.8.1 or higher (for ID3 tags)

- mad-0.15 or higher (for MP3 import)

- flac-1.1.0 higher

- D'environ 32 Mo de mémoire pour lancer &kapp; (mais cela peut varier en fonction de votre plate-forme et de votre configuration).

For a more complete and up-to-date list, please consult the README file that is included in the source distribution or can be found here: "http://svn.sourceforge.net/viewvc/kwave/trunk/README?view=markup". This file also contains some special hints for getting &kapp; running and/or building &kapp; under some distributions.

Si vous désirez compiler &kapp; à partir des sources, vous avez besoin:

- cmake-2.4.6 or newer

- A C/C++ compiler. GCC-2.95.3 works fine, some older and any newer version (like gcc-4.1 and newer) work too.

- De la bibliothèque de développement glibc2 (libc-6). Sur la distribution SuSE Linux, le paquetage se nomme « libc ». Sur d'autres systèmes il peut s'appeler « libc-devel ».

- De l'environnement de développement de KDE3 : « kdelibs3-devel », « kdemultimedia3-devel », et « kdesdk3 ».

- De l'environnement de développement Qt. Le paquetage se nomme normalement « qt3-devel » ou quelque chose de similaire.

- la bibliothèque « id3lib-3.8.1 » ou supérieure

- la bibliothèque « mad-0.15 » ou supérieure

- flac-devel-1.1.0 higher

- If you intend to get the &kapp; sources via SVN, you will also need a current subversion package.

- ...many other packages, please take a look at the "README" file included in the source package.

### Le manuel de compilation et d'installation.

Since version 0.7.10 &kapp; uses cmake, the make system that is also used by KDE itself. So if you can build other KDE applications, you should also be able to build &kapp;. If you run into problems please report them to the &kapp; mailing list.

In order to compile and install &kapp; on your system, it is best practice to do a out-of-tree build. This means that you hold the sources of &kapp; in one directory and build the package in another (temporary) directory.

For example, assuming that your sources are already unpacked in ``$HOME/src/kwave-0.7.11``, you can do the following:

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

(Specifying build options is a way to enable or disable specific features. See the following section for descriptions)

### Build options

By specifying build options, you can enable or disable some features of &kapp;, like excluding some components or plugins from the generated package. Here is a list of the available options:

- `WITH_ALSA` enable playback/recording via ALSA [`on`/`off`, default=`on`]

- `WITH_ARTS` enable playback via aRts [`on`/`off`, default=`off`]

- `WITH_BUILTIN_LIBAUDIOFILE` force usage builtin libaudiofile, even if the one installed in the system is useable [`on`/`off`, default=`off`]

- `WITH_DOC` build online documentation [`on`/`off`, default=`on`]

- `WITH_FLAC` enable support for FLAC files [`on`/`off`, default=`on`]

- `WITH_MP3` enable support for mp3 files [`on`/`off`, default=`on`]

- `WITH_OGG` enable support for ogg files [`on`/`off`, default=`on`]

- `WITH_OSS` enable playback/recording via OSS [`on`/`off`, default=`on`]

These options can be passed to ``cmake`` with ``-D``option``=``value``. For example, if you want to leave out generation of the online documentation, you can pass the corresponding option as follows:

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

### La construction du paquetage RPM à partir de l'archive au format « .tar.gz ».

#### Utilisation de la commande « rpmbuild -ta »

If you are runnig a system with RPM support, the preferred way to install &kapp; on your system will be the creation of a nice RPM package. First you should get the current source of &kapp;, either as a tar.gz archive from the &kapp; download page or check out an up-to-date copy via SVN (like described in the chapter about SVN) and read the next chapter.

If you have downloaded a tar.gz archives of &kapp;, create and install the RPMs just by doing the following steps (where `[arch]` stands for the platform you have built the package and might be something like `i386`, `i586`, `sparc` or whatever, `XXX` stands for the version number you have downloaded).

Pour construire et installer le paquetage de &kapp; vous devez saisir les lignes de commande suivantes :

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

Pour les utilisateurs d'une distribution SuSE LINUX vous devez spécifier le dossier `/usr/src/packages` à la place de `/usr/src/redhat` !

Si vous n'avez pas de messages d'erreurs, vous pouvez alors passer le reste de ce chapitre. Si le programme utilitaire « rpm » est incapable de construire les paquetages et qu'un message du genre « spec file not found » est affiché, alors le reste du chapitre vous sera utile.

#### Que faire lorsque la commande « rpmbuild -ta » ne fonctionne pas ?

Si vous ne pouvez pas exécuter la commande `rpmbuild -ta`, il existe plusieurs solutions pour réaliser cette tâche manuellement (solutions délicates) :

1. Aller dans le dossier « principal » de stockage des RPM de votre système. Normalement, celui-ci est `/usr/src/redhat` pour une distribution du type RedHat ou `/usr/src/packages` pour la distribution SuSE.

       % cd /usr/src/redhat

2. Mettre l'archive au format « .tar.gz » dans le sous-dossier SOURCES (vous devez remplacer « NomDossier » avec le nom du dossier qui contient votre archive au format « .tar.gz »).

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

3. Extraire le fichier de spécification (.spec) de l'archive au format « .tar.gz » et copier le dans le sous-dossier SPEC.

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

4. Le programme « rpm » compilera et construira le paquetage RPM de &kapp;. Si vous voulez seulement construire un paquetage contenant les exécutables, vous pouvez spécifier le paramètre `-bb` à la place de `-ba`, ou juste `-bs` pour construire un paquetage contenant les sources.

       % rpmbuild -ba SPECS/kwave.spec

5. Si tout se passe correctement, vous pouvez installer le paquetage RPM contenant les exécutables de &kapp;, celui-ci étant stocké dans le sous dossier BUILD. Si vous avez déjà une version de &kapp; installée sur votre système, vous devez tout d'abords désinstaller celui-ci en premier ou utiliser le paramètre `-U` à la place de `-i` pour mettre à jour automatiquement le paquetage.

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

### Building RPM packages from SVN

#### La vérification des mises à jour des sources

For initially checking out the sources you will need some disk space (about 25 megabytes) in a directory of your choice, the svn package of your favorite distribution and full access to the internet. If you get error messages about rejected connections you either have typed something wrong or your provider doesn't give you full access. A good place for the source files will be `"$HOME/src"`.

1. En premier lieu, vous devez créer le dossier où vous allez recevoir le sous-dossier qui stockera les sources de &kapp; :

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

2. Then check out the latest sources from the SVN server:

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

   or you can check out a specific release with the following command:

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

   You can look up the names of the release tags in the web svn page at "http://svn.sourceforge.net/viewvc/kwave/tags/". The release tags are always built out of the word `Release-` and the version number of the release, with underscores instead of dots. For example "`Release-0_7_9`" for v0.7.9.

There must not be a directory named `kwave` under the directory you want to check out. Otherwise the svn program will complain about already existing files and the checkout will not work.

#### Updating sources from SVN

The procedure described in the previous section is only necessary once. For further updates it is much easier. Just change into the directory where you have the checked out sources and do the following:

    % svn update

Then go on to the next section and compile as usual.

If you think that you have messed up your local source or if there are conflicts during updating, you can remove all files and directories from your &kapp; source directory, except the `.svn` directory and then try again.

#### La compilation

Building rpm package from a SVN snapshot is quite simple. The procedure is nearly the same as described in the last section, so it unhappily also has the same problem with the `rpmbuild -ta` command our method internally uses. Like in the previous chapter, `[arch]` stands for the platform you have Built the package and might be something like `i386`, `i586`, `sparc` or whatever, `XXX` stands for the version number you have checked out.

Pour les utilisateurs de la distribution SuSE LINUX : vous devez également indiquer le nom du dossier de stockage des paquetages en remplaçant `/usr/src/packages` par `/usr/src/redhat` !

Assuming that you are in the root of where you checked out from SVN, do the following to create a Makefile, the &kapp; package and install it. If you already have a version of &kapp; installed, please remove it first or use `rpm -U` instead of `rpm -i` for updating instead of installing.

    % 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

Si vous avez des problèmes avec la commande `make rpm`, vous trouverez l'archive au format « .tar.gz » qui a été construite dans le dossier `« /tmp »`. Vous pouvez ensuite suivre les instructions de création d'un paquetage RPM dans le précédent chapitre.

### Indiquer un emplacement d'installation pour les exécutables d'un paquetage RPM

Les exécutables d'un paquetage RPM de &kapp; sont « relogeables ». Vous pouvez construire un paquetage RPM sur un système équipé des dossiers de KDE3 et installer les exécutables dans un dossier différent sur un autre système. Cette caractéristique est très pratique pour installer un paquetage compilé sur une distribution SUSE vers une distribution RedHat ou vice-versa.

Par exemple : vous prenez le paquetage RPM des exécutables d'un ami qui a une distribution RedHat (où le dossier de KDE3 est `/usr`) et vous souhaitez l'installer sur une distribution SuSE (où le dossier de KDE3 est `/opt/kde3`). Vous avez juste à passer un paramètre différent quand vous installez le paquetage : Par exemple :

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

Cela modifie le chemin où le programme sera installé. Il est grandement recommandé que ce répertoire ou le dossier renvoyé par la commande `kde-config --prefix` soit contenu dans la variable d'environnement KDEDIRS. Dans le cas contraire, &kapp; ne pourra pas trouver la configuration des menus, les modules externes, les valeurs par défaut, etc.

### La construction de paquetages optimisés pour certains CPU

Si vous êtes propriétaire d'un processeur Pentium, ou d'un AMD K6 / Athlon / Athlon-XP, vous désirez peut être utiliser les optimisations de compilation pour gagner de la vitesse pendant l'exécution de &kapp;. Le gain obtenu est d'environ 30% avec ces processeurs, quand les fonctions de manipulation de signaux et les fonctions de calculs complexes sur les tableaux de fréquences (comme les Transformées de Fourrier ou le Sonogramme) sont activées.

Vous ne devez pas connaître les fondements de la programmation pour utiliser et optimiser la compilation de &kapp;, mais peut-être quelques principes vous serons utiles pour installer le compilateur et l'utiliser.

#### Les optimisations pour la construction d'un paquetage RPM

You can easily compile the RPM package optimized for Athlon, Athlon-XP, Pentium and Pentium Pro (and some other CPUs) by using some defines in your `rpmrc` file. You can either modify your system's `rpmrc` file in `/usr/lib/rpm` or the `.rpmrc` file in your home directory. There you can specify option lines like these:

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

(I found those nice tricks at http://www.keywarrior.net/duesti/rpmopt.en.html. Thanks to Matthias Düsterhöft!).

This means that on an `k7` architecture the rpm package will be compiled using `-O3 -march=athlon-xp -DNDEBUG -fomit-frame-pointer` as compiler option and so on, you might extend or adapt these to your own needs. The settings apply to all of the sections before in all places where `rpmbuild -ta` is used or where a binary RPM is to be created out of a source rpm using `rpmbuild --rebuild`.

N'oubliez pas que la commande `rpm` peut refuser d'installer votre paquetage parce qu'elle est incapable de reconnaître votre architecture matérielle. Normalement, vous pouvez juste installer et optimiser le paquetage en spécifiant l'option `--ignorearch`.

#### How to pass optimizer options to the compiler manually

The invocation of the compiler is quite simple. It normally is sufficient to set the environment variables `CFLAGS` and `CXXFLAGS` in the correct way and then compile as usual. For the best settings please consult the documentation or homepage of the corresponding compiler.

If you build &kapp; from a source tree (unpacked tar.gz or from SVN) the flags need to be specidied before the call. For example:

    % 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]

Si vous recompilez &kapp; à partir d'un paquetage RPM contenant les fichiers sources, veuillez suivre les instructions dans la section précédente.

## Les rudiments sur les enregistrements audio numériques

Ce chapitre présente une courte introduction sur les rudiments des enregistrements audio, sans rentrer trop dans les détails. Bien sûr, cela peut être incomplet, mais si vous avez des questions, vous pouvez les poser dans la liste de diffusion de &kapp; ou consulter diverses autres littératures sur le sujet.

### Le monde de l'analogique.

Tout d'abord, la première chose à savoir est que le monde qui nous entoure est analogique alors que l'ordinateur travail en numérique. Il existe de nombreuses méthodes pour convertir le son analogique en données numériques et vice versa. Comme la méthode de conversion du numérique vers l'analogique est normalement l'inverse de la méthode pour passer de l'analogique au numérique, nous ne décrirons que cette dernière.

La conversion du son en bits

La conversion du son en bits

Avant de continuer, le son analogique doit être transformé en un signal électrique qui pourra être traité par l'ordinateur. Un des procédés les plus utilisés pour cela est l'utilisation d'un microphone et d'un amplificateur. Cette combinaison donne une tension qui est proportionnelle aux changements de la pression dans l'air. Les amplitudes les plus grandes des changements de pression donneront les tensions avec la plus grande amplitude à la sortie de l'amplificateur. Cette sortie est aussi appelée un « signal ». A la place d'un microphone on peut imaginer d'autre source de capture sonore. « L'amplificateur » peut être intégré directement dans la carte son de votre ordinateur et vous ne pouvez pas le voir.

La conversion d'un signal électronique

La conversion d'un signal électronique

A ce stade, le signal électrique présente trois limitations dont une doit être bien présente à l'esprit :

1. L'amplitude (volume) est limitée à un niveau maximum. Ceci est la conséquence de l'électronique (amplificateurs) qui peut seulement traiter des tensions suivant des plages bien spécifiques. Cela ne pose pas de problème tant que les sons ne sont pas trop forts. Dans ce cas, le signal sera saturé, et une partie sera tronquée au niveau les plus forts.

2. La plage de fréquences est aussi limitée. Cela est dû à des contraintes mécaniques des microphones et aux limitations des plages de fréquences des amplificateurs. Il n'y a pas de cassures nettes au niveau fréquentiel pour lesquelles le son disparait. Généralement, le son est atténué progressivement dans les basses et hautes fréquences. L'existence d'une fréquence maximale peut être facilement comprise en associant cette hypothèse aux limites de temps de monté et de descente du signal électrique dans les composants électroniques. En utilisant un amplificateur et un microphone de haute qualité, ces limites peuvent être repoussées dans des plages de fréquences inaudibles pour des êtres humains. Un homme entend normalement les sons jusqu'à une fréquence de 20 kHz.

3. Le signal contient du bruit. Le bruit est l'ennemi le plus néfaste. Il marque le signal à tous les niveaux. Typiquement, le bruit est un effet analogique qui perturbe le signal. Il est toujours présent et ne peut pas être supprimé. On peut seulement essayer d'utiliser des composants électroniques de haute qualité qui produisent un bruit de faible amplitude que l'on ne peut pas distinguer. Normalement le bruit a un certain volume qui doit être le plus négligeable possible par rapport au signal utile. On appelle cela le rapport signal sur bruit (SNR). Une valeur élevée de ce rapport donne une bonne qualité de sons. Un son qui a un faible volume plus faible que le bruit ne peut être entendu.

### La numérisation

Quand nous voulons enregistrer et jouer une piste audio sur un ordinateur, nous devons d'abord convertir le signal analogique en données numériques. Ce procédé est appelé numérisation. Il converti un signal électronique en une séquence de valeurs numériques.

La numérisation d'un signal électronique

La numérisation d'un signal électronique

La conversion peut être comprise comme des mesures répétitives des valeurs du signal électronique à un certain temps. On appelle cela l'échantillonnage du signal. Le résultat est alors encodé en valeurs numériques.

L'échantillonnage peut être fait à des distances temporelles arbitraires ou à des intervalles constants. La dernière méthode est la plus facile à utiliser. Elle utilise un taux constant que l'on l'appelle période d'échantillonnage. Normalement, ce taux est de 8000, 11025, 22050, ou 44100 échantillons par seconde. Dans la pratique, les périodes d'échantillonnage donnent aussi des fréquences en Hz ou en kHz.

Le taux d'échantillonnage limite les hautes fréquences d'un signal numérisé. Comme le démontre le théorème de Shannon, la fréquence la plus haute utilisable est égale à la moitié de la fréquence d'échantillonnage. Par exemple, pour une fréquence d'échantillonnage de 44.1 kHz, on ne peut pas avoir un signal utile dont la fréquence est supérieure à 22 kHz. Pour éviter tous problèmes avec cette contrainte, votre carte son dispose d'un filtre en interne qui élimine les fréquences correspondantes aux limites définies précédemment.

Le signal échantillonné

Le signal échantillonné

### L'encodage échantillonné

Le résultat d'un processus d'échantillonnage numérique est une séquence de simple échantillons. Un échantillon est une représentation numérique du signal à un temps donné.

La valeur d'un échantillon peut être interprété et encodé de plusieurs manières. La plus simple est l'encodage linéaire. Avec cet encodage, on peut pour chaque valeur des échantillons, déterminer directement la valeur du signal analogique en utilisant un coefficient multiplicateur constant. Cette technique est facile à mettre en oeuvre, mais présente l'inconvénient de rendre audible le bruit pour les faibles amplitudes. C'est pour ces valeurs du signal que le bruit est le plus perturbateur. Il est cependant moins audible pour les hautes fréquences.

Une des solutions pour réduire l'influence du bruit est d'utiliser un encodage non linéaire. Avec cette technique, les faibles amplitudes sont amplifiées avant d'être traitées. Les distances entre le bruit et les faibles amplitudes sont alors réduites et la qualité du signal est alors meilleure. Les méthodes d'encodages non linéaires les plus utilisées sont l'encodage A-Law et l'encodage U-Law. Quelques techniques d'amplifications sont standardisées en téléphonie numérique (ITU G.711 par exemple).

L'encodage non linéaire

L'encodage non linéaire

### Formats d'échantillonnage

Les échantillons peuvent être stockés avec différents formats et différentes précisions. Le format le plus utilisé est le nombre entier qui stocke les valeurs avec des valeurs fixes de numérisation. Comme cela dépend de la position de la valeur zéro du signal, on distingue un format dit non signé (pour les valeurs strictement positives) et un format dit signé (pour les valeurs positives et négatives).

Le format signé

Signed Format

Le format non signé

Le format non signé

En plus que la numérisation du signal fait perdre de la précision, il y a génération d'un bruit parasite, que l'on appel bruit de numérisation. La partie la plus importante de ce bruit a une influence sur les basses amplitudes. Cette méthode de stockage des échantillons n'est pas optimale mais elle est facile et rapide à mettre en oeuvre (un ordinateur est très rapide pour les calculs sur les nombres entiers).

La seconde méthode pour encoder des échantillons est l'utilisation de nombres à virgule flottante. Avec cette méthode, le bruit est moins influent sur les signaux de faibles amplitudes. Cependant, dans ce format les calculs sont plus lents à s'exécuter (les ordinateurs traitent les chiffres à virgule plus lentement que les nombres entiers).

&kapp; utilise en interne des entiers signés avec une précision de 24 bits, stockés dans des entiers de 32 bits. Ceci a l'inconvénient d'utiliser plus de mémoire lors du traitement des fichiers ayant une définition plus basse (tel que 8 bits), mais les calculs sur des nombres codés sur 32 bits sont beaucoup plus rapides et prennent moins de ressource système qu'avec des entiers codés directement sur 24 bits.

## Utilisation de &kapp;

Voici une petite capture d'écran de la fenêtre principale de &kapp;, qui vous donnera une première impression sur le programme...

Une capture d'écran de &kapp; Screenshot of the Main Window

### Memory Setup

When using &kapp; for the first time, you should go to the memory setup dialog an modify the settings to be suitable for yor needs and the installed memory of your computer. You can reach it under Options Memory... .

Here's a screenshot of &kapp;'s memory setup dialog Screenshot of the Memory Setup Dialog

&kapp; is able to use two types of memory: physical and virtual memory.

Physical memory is the memory (RAM) that is installed in your computer. You should limit the usage of physical memory to some reasonable size, as a rule of thumb, half of the installed memory should be ok. If you set the limit too high, Linux will take memory from other applications, which means that it swaps out memory of other programs to the harddisk (swap), which is rather slow. If you set the limit too low, you might lose some performance when working with big files, because you use less of the fast physical memory than you could.

If you enable virtual memory, &kapp; is able to load and process files that are bigger than the amount of real installed physical memory. &kapp; does this by using temporary files in a configurable directory, which is much faster and more cooperative to other applications than using the operating system's swapping. The directory that you configure should be on your local hard disk.

### Les options en ligne de commande

Si vous lancez &kapp; à partir de la ligne de commande, vous pouvez spécifier une liste de fichiers à ouvrir. Le premier fichier spécifié sera ouvert en premier, puis le second, etc. Chaque fichier sera ouvert dans une fenêtre séparée mais à partir de la même instance de &kapp;. Vous pouvez ainsi ouvrir un nombre important de fichiers sonores en même temps.

Par exemple, la ligne de commande suivante lance une instance de &kapp; et ouvre dans des fenêtres séparées, tous les fichiers sonores utilisés en internes par KDE :

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

En plus d'une liste de fichiers, vous pouvez spécifier une liste de d'options du serveur X comme `-geometry` pour spécifier la taille et/ou la position de la première fenêtre ouverte de &kapp; ou comme `-display` pour lancer &kapp; sur une instance du serveur X différente.

Par exemple, la ligne de commande suivante lance &kapp; avec une fenêtre d'une largeur largeur initiale de 600 pixels et une hauteur de 400 pixels, avec la bordure droite positionnée à 30 pixels du bords droit de la fenêtre et 0 pixels du haut de la fenêtre.

    % kwave -geometry 600x400-30+0

### Ouverture et sauvegarde de fichiers

L'ouverture des fichiers avec &kapp; fonctionne comme dans toutes les autres applications de KDE. Vous pouvez :

- Spécifier une liste de fichiers à partir de la ligne de commande quand vous lancez &kapp;.

- Ouvrir une fenêtre vide de &kapp; (par exemple à partir de Ctrl W Fichier Nouveau... ) et mettre un fichier sonore dans l'espace de travail de cette fenêtre via le glisser / déposer.

- Ouvrir un fichier à partir du menu Ctrl O Fichier Ouvrir.

- Ouvrir un des fichiers récemment ouvert via le menu Fichier Récemment ouvert(s).

- Sauvegarder le fichier courant via le menu Ctrl S Fichier Enregistrer.

- Sauvegarder le fichier courant avec un nom différent via le menu Shift Ctrl S Fichier Sauvegarder Dans....

- Sauvegarder la sélection courante d'un fichier sonore via le menu Fichier Sauvegarder Sélection....

#### Formats de fichiers supportés

&kapp; supporte les formats de fichiers suivants :

- Le meilleur format de fichier pour &kapp; est (comme l'indique le nom de l'application) « .wav ». Ce format est très commun vis-à-vis d'autre « systèmes d'exploitation » mais aussi pour l'environnement de bureau KDE.

- The second format that &kapp; supports is "ASCII". You can export to ASCII, but currently not import from it (this is currently not implemented). Please be aware that storing in this format might produce very large files! The file format will be described below.

- `.mp3` et `.mp2` pour l'importation est disponible grâce à la bibliothèque libmad pour le décodage des fichiers MP3 en combinaison avec la bibliothèque id3lib pour le décodage des marquages ID3.

- Ogg / Vorbis (`*.ogg`) pour l'importation et l'exportation. Voir l'URL http://www.xiph.org pour plus de détails.

- En plus, &kapp; supporte plusieurs autres formats audio très communs via la bibliothèque audiofile. Vous pouvez importer les fichiers du type `*.au` et `*.snd` (NeXT, Sun Audio), `*.aiff` (Audio Interchange Format) et `*.sf` (Berkeley, IRCAM,Carl Sound Format).

#### Convertir vers ou à partir d'un fichier « .wav »

Pour le moment, le meilleur moyen pour travailler avec des formats différents de ceux supportés par &kapp; est d'utiliser un convertisseur externe. Un bon jeu d'utilitaires de convertion est fourni avec le paquetage SoX, ainsi qu'une excellente documentation ! Vous pouvez la consulter en ligne sur le site internet http://www.spies.com/Sox/.

Les prochaines versions incluront des filtres d'importation pour d'autres formats et peut être quelques filtres qui utiliseront des scripts définissables par les utilisateurs avec des appels à des outils de convertion externes pour le traitement en écriture ou en lecture des formats de fichiers non supportés par `SoX` (comme le MP3).

#### Format of ASCII files

The ASCII format is quite useful for scientific and educational purposes. Due to it's simple format, you can either write simple files on your own with a text editor or you can use the output of an other application and convert it into ASCII. As the format is really simple, you should not have big problems in writing a converter and most scientific applications use to have some kind of their own ASCII format for export.

The format of an ASCII file is quite simple and has the following rules:

1. At the start of the file comes a block of properties, with one property per line.

2. Each property line starts with `##`.

3. After the properties comes a list of samples, with one sample per line. When using multiple channels, the samples are separated by commas.

4. Lines might end with a carriage return and/or a line feed character (so DOS files are supported too). But when saving, files will always be saved with line feed character as the end of the line.

5. Empty lines and characters after a `#` are treated as comments and are ignored.

6. Values can be are given in any format that the C library of your system is able to read and interprete as a floating point or integer number. But when saving, &kapp; will save as in signed integer format with a 24 bit range.

7. All values are expected to be in signed format. So if you import a file with only positive values, you will only see samples that are above the zero line.

8. When importing, values can be specified in any range, &kapp; always does a first pass over the file to get the highest absolute value and defines that value as "100%" before really reading in the file and scaling it.

9. Internally all values are stored with 24 bit precision (signed).

Here is an example of a simple ASCII file that represents a sine wave with eleven samples:

##### content of an ASCII file with a single sine wave

    ## '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

### Creating a New File

You can create a new and empty file menu under File New... .

Here's a screenshot of &kapp;'s new file dialog Screenshot of the File New Dialog

You can select the sample rate, resolution in bits per sample and the number of tracks. Per default the file format will be ".wav", but it can still be changed at the time when the file is saved.

The length of the new signal can be set by time (hours, minutes, seconds) or by the number of samples. Additionally you can select it relative to the highest possible length, which is limited by the available memory and &kapp;'s internal limit (2 GB).

### Recording

&kapp; is able to record audio data from various sources, with all sample rates, sample formats and other modes that your sound hardware supports. Currently &kapp; records through the old OSS sound interface, and since v0.7.4 also the newer and more powerful ALSA interface that is the preferred choice for linux kernel 2.6.

The recording can be reached from the menu under File Record .

Here is a screenshot of the &kapp; record dialog, showing the first page with the recording controls during a running recording session. Like in most dialogs of &kapp; you can get some help or see tooltips on the controls.

Here's a screenshot of &kapp;'s record dialog Screenshot of the Record Dialog

Here you have the following controls:

- Pre-Record: If the pre-recording feature of &kapp; is enabled and the recording is startet, &kapp; records into an internal buffer which is some seconds long. If you press the Record ( record button ) button again, then the recording really starts, and also keeps the already pre-recorded data. This is useful for example if you want to record your favorite song from radio, but you recognize too late that the song has started. In this case you can still press the record button and get the start of the song from what &kapp; has already pre-recorded before, so that you will no longer miss a start.

- Record-Time: If the length of the recording should be limited to some time, you can activate this setting and select a time in hours, minutes, seconds for your recording. If this option is not enabled, the recording runns until you press the Stop ( stop button ) button.

- Record Trigger: If enabled, the recording starts only if the volume of the input goes over a certain limit, which can be defined from 0 to 100% of the highest possible input volume. This is useful if you do not want to record leading silence.

- The New ( new button ) button is active when the recording is not running or is finished, to discard the current file content and start again.

- The Stop ( stop button ) button is active when the recording or pre-recording is running or &kapp; is waiting for the trigger. If pressed, the current progress will be stopped.

- The Pause ( pause button ) button is active when the recording or pre-recording is running. The first time you press it, the rcording will be halted and the button starts blinking. When you press it again the button will stop blinking and recording will continue immediately, without waiting for a trigger.

- The Record ( record button ) button starts the recording and/or prerecording, depending on the features enabled above:

  1. If neither prerecording nor trigger level are used, the recording starts as soon as you press the record button.

  2. If prerecording is not used and a trigger level is set, the first press will let &kapp; wait for the trigger level to be reached. While waiting for a trigger, you can force the recording to start immediately by pressing the record button again, otherwise the recording will start automatically when the trigger level has been reached.

  3. If prerecording is enabled, the first press starts only the prerecording and the second press really starts the recording.

### Playback

Depending on the compilation options &kapp; is able to play sounds trough one of the following playback methods:

- OSS (Open Sound System): The oldest linux implementation, capable of mono and stereo output. Deprecated since linux kernel 2.6, but still wide spread. Might collide with aRts from KDE or other sound applications, only one application at a time can use OSS playback !

- ALSA (Advanced Linux Sound Architecture): Supercedes OSS, supports more features and more hardware. Might collide with aRts or other applications like OSS does, but has a plugin called "dmix" as a way out.

- aRts (Analog Realtime Synthesizer): The preferred way of doing playback in KDE, the sound server KDE uses itself. Multiple applications can play at the same time. It must be configured in the KDE control center.

Before trying to play sounds, you should take a look on the playback configuration dialog:

Here's a screenshot of &kapp;'s playback setup dialog Screenshot of the Playback Setup Dialog

Currently &kapp; supports only 8 and 16 bit playback, with mono or stereo output through the OSS and the aRts interface, but many also all modes your sound hardware supports through the ALSA interface.

If your sound file uses more or less channels than the playback allows, all channels will be mixed together during playback. For example if you have a file with three channels and you use stereo playback, the left channel will play channel 0 (upper) and half of channel 1 (middle), the right channel will play the half of channel 1 (middle) and channel 2 (lower).

For getting a smooth playback without interruptions, you should also set the buffer size to an appropriate value. If you encounter problems with interrupted playback, you should increase the buffer size here. But the bigger you set the buffer, the bigger is the latency between the audible sound and the display of the playback position in the signal display.

The playback settings dialog also provides a button for playing a simple test sound. You should hear a 440Hz tone that wanders over all speakers, from one to the next.

Once you have configured playback, you can use the playback controls of the &kapp; main window or through the Play menu or with keyboard shortcuts:

- P Play Start : Start playback of the current selection from it's beginning or the whole file from the current cursor position if nothing was selected. Play only once.

- Play Loop : Like before, but repeat in a loop.

- Space Play Pause : Pause the playback at the current position. Only available when the playback is running.

- Space Play Continue : Continue the playback from the position where it has been paused. Only available if the playback is paused.

- Esc Play Stop : Stop the playback, go back to the start of the selection.

### File Properties

&kapp; is able to handle several meta information that is stored within an audio file. It tries to import and export as much of these informations as possible. For example, if you import an MP3 file with ID3 tags, you can keep those informations when exporting to a Wave file. If &kapp; would lose meta information when saving, it shows a warning.

You can view and modify the meta information under Edit File Properties... . There you can also change things like sample format, resolution and compression.

Here's a screenshot of &kapp;'s file properties dialog Screenshot of the File Properties Dialog

### Comment faire une sélection

&kapp; permet de sélectionner une plage sonore continue sur plusieurs combinaisons de canaux sonores (si vous éditez un fichier constitué de canaux multiples). Toutes les actions futures qui suivront la sélection d'une plage d'échantillons (suivant l'axe du temps) opéreront uniquement sur la sélection. Si un canal n'est pas activé avant la sélection, son contenu ne sera pas modifié.

#### La sélection de canaux sonores

La sélection et la désélection d'un canal est très simple. Il suffit de cliquer sur le témoin lumineux placé à la gauche des pistes sonores. Les états du témoins sont les suivants :

Lumière verte Un témoin vert indique que le canal est « actif ».

Lumière rouge Un témoin rouge indique que le canal est « inactif ».

Si le canal est désélectionné, il ne sera pas écoutable lors d'une lecture des pistes sonores !

#### La sélection d'échantillons

Si vous sélectionnez une plage d'échantillons dans &kapp;, cette plage sera prioritaire. En effet, tous les échantillons de la sélection seront utilisés en priorité pour les actions futures de l'utilisateur. D'autre part, si vous n'avez pas sélectionné une plage mais seulement un échantillon unique, celui-ci représentera la sélection (celle-ci n'étant pas considérée comme étant « vide »). Par exemple, si vous n'avez pas sélectionné une plage mais juste un échantillon, la fonction « Supprimer » appliquera les modifications uniquement sur ce dernier.

La méthode la plus simple pour sélectionner une plage d'échantillons sonores est d'utiliser la souris. Le principe est le même que pour n'importe qu'elle application graphique : il suffit d'appuyer avec le bouton gauche de la souris dans l'espace de travail pour indiquer le début de la sélection, et de déplacer la souris en maintenant appuyer le bouton gauche jusqu'à la fin de la sélection.

Si vous désirez ajuster ou déplacer le début ou la fin de la sélection, il suffit de positionner le curseur de la souris sur une des extrémités (le curseur doit changer de forme), d'appuyer sur le bouton gauche de la souris, de déplacer l'extrémité à l'emplacement voulu, puis de relâcher le bouton.

Vous pouvez aussi étendre ou réduire la sélection à un emplacement particulier en appuyant sur la touche SHIFT tout en cliquant sur le bouton gauche de la souris. En fonction de la position du curseur de la souris dans l'espace de travail vis à vis de la sélection, le bord gauche ou le bord droit de la sélection sera ajusté à la position pointée par le curseur.

Il y a également quelques fonctions qui sont disponibles par le menu et bien sur quelques raccourcis clavier qui sont :

- Sélectionner entièrement la piste sonore : Ctrl A Édition Sélection Tout

- La zone visible courante : V Édition Sélection Région visible

- Le prochain bloc d'échantillons, commençant au premier échantillon après la fin de la sélection courante et avec la même largeur : Shift+Édition Sélection Suivant

  (Astuce : utiliser la touche « + » du pavé numérique !)

- Le précédent bloc d'échantillons, finissant au premier échantillon avant le début de la sélection courante et avec la même largeur : Shift-Édition Sélection Précédent

  (Astuce : utiliser la touche « - » du pavé numérique !)

- Étendre la sélection jusqu'au début de la piste sonore (premier échantillon) : Shift Home Édition Sélection Au début

- Étendre la sélection jusqu'à la fin de la piste sonore (dernier échantillon) : Shift End Édition Sélection A la fin

- Retirer la sélection et ne « rien » sélectionner : N Édition Sélection Rien

### Le presse-papiers

Malheureusement, &kapp; ne dispose pas encore d'une implémentation évoluée du presse papier. Ceci est dû à un manque de support des formats différents au texte et aux bitmaps dans KDE. Cette situation changera probablement dans un futur proche.

Cependant, ceci présente quelques désavantages. Il est impossible d'échanger des données entre deux instances de &kapp; via le presse papier. En effet, chaque instance de &kapp; dispose de sa propre instance du presse papier pour travailler.

Si vous voulez utiliser le presse papier dans &kapp;, vous devez seulement lancer une seule instance de &kapp; et utiliser plusieurs fenêtres de &kapp; à partir de cette même instance. Normalement cela fonctionne !

### Le glisser / déposer

&kapp; supporte les fonctionnalités de glisser / déposer de l'environnement de bureau KDE. Cela doit vous permettre d'ouvrir par exemple un fichier audio en le sélectionnant à partir de `konqueror` et en le déposant dans l'espace de travail de &kapp;.

Veuillez noter que si vous déposez un fichier audio dans l'espace de travail de &kapp; alors qu'un fichier audio est déjà ouvert, ce dernier sera fermé en premier avant l'ouverture du fichier à déposer. Si vous vous ne voulez pas que le fichier précédemment ouvert soit fermé, vous devez ouvrir une autre fenêtre de &kapp; afin d'y recevoir le fichier à ouvrir.

Vous pouvez aussi faire une sélection dans un fichier sonore et faire un glisser / déposer à un autre endroit dans l'espace de travail de &kapp;. Par défaut, la sélection est déplacée de son emplacement d'origine et elle est insérée à l'emplacement ou on la dépose. En appuyant sur la touche Ctrl vous pouvez modifier ce comportement pour copier la sélection.

## Le guide du développeur de &kapp;

Ce chapitre est en cours de rédaction.

Désolé, mais ce chapitre n'est pas encore écrit... Pour le moment, le code source n'est pas encore documenté avec les outils de rédaction de documentation fournis avec KDE. Nous préférons utiliser le logiciel doxygen. Peut être que dans quelques temps un utilitaire pourra convertir les annotations faites avec le programme « doxygen » vers un document au format « Docbook » (Le source de cette aide a été faite de cette manière).

Si vous voulez écrire un module externe, contribuer au projet (ou peut être écrire un outil de conversion mentionné précédemment), veuillez prendre contact directement avec un des auteurs et / ou vous enregistrer sur la liste de diffusion de &kapp;. De l'aide est toujours la bienvenue !

### Adding support for a new Language

1. make system:

   Edit the toplevel `CMakeLists.txt` and add a new entry to the list of languages. Look for the variable `KWAVE_LINGUAS` and add a line for the new language. Each entry consists of a pair with a language code and language name, like this: ``<code>``:``<name>``. Example:

       fr:Francais

   The language code is a 2-letter code which is used for directories and filenames, as it is also used in KDE. The language name is used internally for the docbook online documentation and the online help only. For a list of available language codes and names, please refer to the documentation of the international standard ISO 639-2.

2. user interface:

   Go to the source directory of &kapp; (not the build directory), change into the subdirectory `po` and copy the file `kwave.pot` to the corresponding `.po` file of the language you want to add: `"`<code>`.po"`. After that you can translate the file using your favorite tool, like `kbabel`. Example:

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

3. online help:

   This is similar to the procedure for the user interface, but requires some extra steps because the master file is in `docbook` format and the `.pot` template is a generated file. Go to the source directory of &kapp; (not the build directory), change into the subdirectory `doc` and create an empty `.po` file:

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

   Then change your build directory (e.g. somewhere in `/tmp`), prepare for building and then generate the `.pot` template (you can safely ignore the error messages that come out at this stage). This themplate has to be copied to the `.po` file in the source directory of the online help. Example:

       % 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

   Now you can translate the `.po` file, like above:

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

4. screenshots:

   For the online documentation you also need screenshots that use the translated messages. This requires a built and installed &kapp; package, so you should follow the steps mentioned in the section about Manual Compilation and installation. Of course you must not pass the build option `WITH_DOC=no` or any other build option that removes functionality, otherwise you would not be able to get screenshots of components that you have disabled.

   For a list of screenshots you can look into one of the existing directories in the source tree, for example in `$HOME/doc/de`. All screenshots are in `.png` and should follow the KDE Documentation Screenshots Requirements. Here in short:

   - Window decoration: Plastik

   - Widget style: Plastik

   - Colors: KDE Default

   - Background: Flat color - Color must be white

   - Run X11 in 72dpi mode

   - Save the files in 8bpp

   - Try to keep the size of each file below 20kB

Useful links:

- RFC 3066 Tags for the Identification of Languages

- KDE Localization contains a lot of useful links for KDE translators.

- KBabel is the standard tool that helps you translating `.po` files.

- KDE Documentation Screenshots Requirements.

## Foire aux questions

De quoi ai je besoin pour compiler &kapp; ?

Read in the chapter mentioned before. It compiles with gcc-2.95 and gcc-3.x as well.

Qu'elles sont les cartes sons supportées par &kapp; ?

&kapp; does not need support for any special sound card. The sound card only has to be supported by your operating system and &kapp; uses it's interface to the operating system's sound driver through a OSS or ALSA interface. So &kapp; can play on any sound card that KDE is able to play on.

Pourquoi certaines entrées des menus ou certaines fonctionnalités sont désactivées ?

Toutes les actions qui nécessitent des fonctionnalités en cours de développement ont été désactivées car elles sont encore considérées comme instables. Elles seront progressivement activées au fur et à mesure de l'avancement des développements.

Pourquoi &kapp; utilise plus de mémoire système que celle nécessaire pour stocker un fichier sonore ?

&kapp; stocke tous les échantillons en interne avec des entiers codés sur 32 bits. Cela facilite la programmation, et génère une application plus rapide et plus stable. Si vous chargez un fichier sonore codé sur 8 bits d'une taille de 1 Mo, il représentera environ 4 Mo en mémoire. Cette caractéristique évoluera peut être dans le futur...

Quels sont les formats de fichiers sonores supportés par &kapp; ?

&kapp; currently supports .wav files with 8, 16 and 24 bits per sample, with any number of channels (of course including mono and stereo). Additionally it can import all file types that libaudiofile supports and some other formats like Ogg/Vorbis and MP3 (read-only).

Quels sont les formats de fichiers qui ne sont pas supportés par &kapp; ?

Si vous désirez travailler sur d'autres formats de fichiers sonores, vous pouvez les convertir au format WAVE. Un bon jeu d'utilitaires pour la manipulation des fichiers sonores est le paquetage SoX. Il est accompagné d'une très bonne documentation !

J'obtiens des erreurs quand je veux lire des pistes sonores. Pourquoi ?

Peut être avez vous choisi une combinaison entre le taux d'échantillonnage et la taille des échantillons qui n'est pas supportée par le pilote de la carte sonore ou par le materiel. Essayez une lecture avec des échantillons sur 8 bits et en mono, cela devrait normalement fonctionner. Si c'est le cas, essayez d'augmenter le nombre de bits par échantillon et de passer en stéréo. Noter que certaine carte sonore ne supporte pas certaine résolution d'échantillonnage.

La lecture d'une piste sonore semble fonctionner mais je n'entends rien. Pourquoi ?

Peut être avez vous oubliez d'augmenter le volume de votre carte sonore. &kapp; ne contrôle pas directement le niveau du volume sonore.

Quelques fichiers sont joués avec une vitesse réduite de moitié. Pourquoi ?

Essayer de choisir un autre périphérique de lecture sonore.

Quelques fichiers sont joués avec des coupures ou des perturbations. Pourquoi ?

Vous devez augmenter le buffer de lecture pour obtenir une lecture plus « fluide » (cela peut générer un contrôle sur la lecture un peu plus lent).

La lecture ne s'arrête pas immédiatement si j'appuie sur le bouton STOP. Pourquoi ?

La raison est que le périphérique de la carte sonore reçoit encore des données à jouer en provenance de &kapp; au moment où vous appuyez sur STOP. Diminuer la taille du buffer de lecture pour avoir une réaction plus rapide du programme (des problèmes de lecture sont cependant à envisager).

Les drivers ALSA sont ils supportés ?

Yes, since v0.7.4 for playback and recording

What about playback with 18, 20, 24 or 32 bits per sample or more than two channels?

This is possible through the ALSA interface, since v0.7.4.

Qu'en est-il du support des fichiers MP3 ?

Well, as long as there are patent issues, we support only MP3 import through the mad library. No export, sorry...

## Crédits et Licence

&kapp;

Programme sous copyright de 1998 à 2000 Martin Wilz mwilz@ernie.mi.uni-koeln.de

Programme sous copyright depuis 2000 Thomas Eschenbacher thomas.eschenbacher@gmx.de

For a complete list of authors and licenses of all files, please see the `LICENSES` file, which is included in the sources. It is also available online at "http://svn.sourceforge.net/viewvc/kwave/trunk/LICENSES?view=markup".

Contributions / Auteurs :

- Thomas Eschenbacher thomas.eschenbacher@gmx.de

- Sven-Steffen Arndt ssa29@gmx.de (page web, traductions en Allemand)

- Ralf Waspe rwaspe@web.de (Boîte de dialogue « A propos de »)

- Gilles CAULIER caulier.gilles@free.fr (Internationalisation, traductions Françaises, bêta testeur)

- Dave Flogeras dflogera@nbnet.nb.ca (module externe « notch_filter »)

- Rik Hemsley rik@kde.org (level meter)

Remerciements (par ordre alphabétique) :

- Jorge Luis Arzola arzolacub@gmx.de (packaging for SuSE Linux)

- Matthias Düsterhöft duesti@gmx.de (pour toutes les informations concernant les optimisations sur les RPM)

- Michael Favreau michel.favreau@free.fr (packaging for Arch Linux)

- Aurelien Jarno aurel32@debian.org (Paquetage pour la distribution debian)

- Martin Kuball makube@user.sourceforge.net (bêta testeur)

- Ma femme Ximena González (pour toute sa patience)

- T.H.F. Klok et Cedric Tefft (mainteneurs de la bibliothèque id3lib)

- Robert Leslie rob@mars.org (auteur de la bibliothèque « mad » pour le décodage des fichiers MP3)

- Erik de Castro Lopo erikd@zip.com.au (auteur de la bibliothèque « sndfile » )

- Michael Pruett mpruett@sgi.com (auteur de la bibliothèque « audiofile »)

- Robert M. Stockmann stock@stokkie.net (packaging for Mandrake / X86_64)

- Diederick de Vries diederick76@gmail.com (packaging for Crux Linux)

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

Older code contained some FFT routines and code fragments from the GNU Scientific Library project http://sources.redhat.com/gsl/.

&underFDL; &underGPL;