Ce projet a débuté en été 1998 par Martin Wilz et a été developpé 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.
Un nouveau plugin 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'entête du fichier wav indique une valeur nulle (tel que lorqu'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.
Correction de bogue : la classe Track contruit 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 contruction de boîtes de dialogues complexes.
Changement des Makefiles: la documentation html restant dans la distribution de l'application provoque des dysfonctionnements avec les outils de contruction 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 gcc-2.96 / gcc-3.0.
Correction de l'oubli d'un fichier d'entête dans NewSigDlg.ui.
Correction d'un bogue dans les séquences de fermeture de l'application. Le presse papier est alors vidé de son contenu.
Nouvelle gestion de la lecture de pistes sonores avec les fonctions Pause et Continuer.
Limitation de la taille buffer de lecture a une valeur comprise entre 256 et 65536 octets. il y avait quelques problèmes avec de petits buffers de lecture dont 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 selections avec la souris.
Reprise des widgets de l'IHM (utilisés dans la fenêtre principal et le sonogramme).
Sonogramme : sauvegarde dans un fichier et ajustement automatique de la brillance.
Tests des optimisations de compilation pour un processeur AMD Athlon (patch pour pegcs).
Correction de bogues pour un fonctionnement correct du multithreading.
Vérification de quelques fichiers d'entête pour la séquence de configuration (Problèmes reportés par issiac@evcom.net).
Ajout des fonctions sizeHint() et minimumSize() pour ScaleWidget et OverViewWidget
Sonagramme : suppression de SonagramContainer, utilisé dans QGridLayout.
Déplacement de SignalProxy dans le répertoire contenant les classes 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 prefixe "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 nouvele 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 selection et le curseur de lecture ne seront pas dessinés si aucun fichier n'est chargé.
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 apparait sur le coté droit du fichier.
Dépendances automatiques pour le fonctionnement des plugins.
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 plugins.
Géométrie et présenation 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 plugins peuvent maintenant être constitués de plusieurs fichiers sources.
Séparation de la documentation en deux parties distinctes : "de" et "en".
Création d'un lien symbolique des répertoires "de" et "default" vers le répertoire d'aide en anglais durant l'installation et la désinstallation, ainsi que avant et aprés l'éxécution des scripts du specfile. L'utilisateur doit au moins avoir l'aide en anglais...
Mise à jour automatique de l'historique de révision dans le fichier docbook si le fichier est modifié (version anglaise seulement).
Commencement de l'écriture d'une nouvelle documentation d'aide en ligne avec l'utilisation du format docbook.
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.
Les sélections des canaux audios (x) sont mixés vers les canaux du pré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.
Restructuration de la boite de dialogue des paramètres de lecture (plugin).
Long travail de restructuration du code correspondant à la lecture audio.
Correction d'un bogue grave dans SignalManager::readWavChunk(), qui rendait instable l'application.
Ajout du fichier d'entête config.h dans chaque fichier source (exceptés les plugins).
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'érreurs avec les outils de débogage "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.
Sauvegarde et ajout du fichier .spec de Kwave dans l'archive des sources. Cela permet à la commande "rpm -ta kwave-x.x.x-x.tar.gz" de fonctionner.
Ecriture 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é.
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 [...2000-05-18]
Remplacement de toutes les occurances 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).
Mise en valeur de quelques portions de code en concordance avec mon style de programmation. -> Remerciements aux développeurs de "Artistic Style". astyle-1.11.4-1 fait du bon travail.
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 (obsolete, sera retirée de la bibliothéque libkwave).
'MessagePort' n'est maintenant plus utilisée (obsolete, 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 la sauvegarde de fichier wav au format 8 bits (toujours non-signés).
RESTRUCTURATION COMPLETE DES COMMANDES ET DES STRUCTURES INTERNES DU PROGRAMME
Le paquetage RPM peut être maintenant installé sans confilts et compilé sans une installation préalable de Kwave.
Suppression du répertoire "${KDEDIR}/share/doc/HTML/default" du RPM pour qu'il n'y ai pas de conflit avec une version de ce répertoire 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 corrrections de bogues dans le menu de sélection / déselection.
Restructuration complète des fonctions de zoom et de sélection :
Correction de bogues dans KWaveApp : maintenant les parramètres généraux (globals.app) sont sauvegardés si il n'existait pas avant. Il n'y a plus de crash si on charge un fichier spécifié dans la ligne de commande.
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 éxé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 plugin.
La compilation s'effectue avec l'option --no-rtti. Ceci est necessaire 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 warnings lors du linkage du programme et des libraries ont disparu.
L'importation et l'exportation de l'ASCII fonctionne correctement maintenant (en mono seulement).
Corrections de bogues dans quelques plugins. Toutes les compilation sont sans warnings et sans erreurs.
Les plugins sont maintenant compilés dans un ordre alphabétique.
Une nouvelle construction est disponible par la commande "make src.rpm". Elle permet la fabrication d'un RPM de source.
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.
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-papier (sauvegarde du contenu du presse-papier).
1999-12-07 (par Thomas.Eschenbacher@gmx.de)
La fonction SignalManager::writeWavChunk utilise mainteant un buffer 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 sauver.
Un make distclean dans la racine du projet supprime aussi les fichiers vide, *.orig, *.rej and *~.
Les liens symboliques vers Makefile, Makefile.in et Makefile.am dans les répertoires des plugins sont supprimés avec "make distclean" et reconstruit par "make".
Nettoyage : suppression de quelques anciens fichiers de sauvegarde.
"configure --enable-debug=yes" (options de compilation -g et -DDEBUG).
Réécriture d'une grande partie de Makefile.in pour les plugins.
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.
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 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 fontions graphiques dans une nouvelle librarie (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 plugins.
Nouveau schéma d'appel via des lignes de commandes. Cela permettra des appels par des scripts et la définition de macros. Les enchainements sont construis plus facilement, car par une seule chaine de carractè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.
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 paliative 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 répertoire 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éçentes.
Maintenant tous les paramètres des destructeurs doivent avoir disparu.
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 sytèmes -> On y reviendra plus tard...
Restructuration des routines de sélection dans les nouvelles classes. Le code est plus confus, mais il fonctionne.
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é.
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.
Implémentation du curseur et de l'échelle en db pour la vue sur les transformées de Fourrier.
Ajout d'une fonctionnalité sur la resé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.
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 necessaire de le déclarer dans le script de configuration (changement du Makefile pour ne pas avoir de linkage 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.
Les lablels 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 (autocoréllation).
Les classes Sonagram, FFTView et Distortion-Dialog utilise maintenant ScaleWidgets.
Nouvelle classe ScaleWidget qui donne plus d'informations à l'utilisateur.
Ajout des classes ProgressDialog et Interpolation pour permettre le multithreading.