
o license change to GPL v3

o new import/export plugin using ffmpeg/libavcodec

o scrolling left/right while playback is running

o clipping of position widget

o add a "record" button to the toolbar

o support for visualization plugins (rev 2498)
  - new functions
    * allow drag&drop to reorder signal views
    * resizing of signal views per size grip
    * allow plugins to add and remove own signal views

  - enhanced functions (maybe next release)
    * store order and settings of signal views in embedded metadata
    * store order and settings of signal views in a separate file
    * provide global database for colors (for signal, labels, etc.)
    * reordering of tracks according to order of the views
    * context sensitive toolbar/menu entries when clicking to a view
    * navigating between views per <Tab> key

o support for multi selection

o support for recording via PULSE audio

o MP3 export (maybe via calling lame/mpg123/mencoder as an external process)

o debug aid: write all actions to a logfile

o debug aid: new plugin for adding a new track with test/debug info:
  - stripe number
  - hull curve
  - test pattern: sample offset within stripe
  - test pattern: stripe borders
  - generate labels at stripe borders

o spurious valgrind error:
    ==13087== Conditional jump or move depends on uninitialised value(s)
    ==13087==    at 0x40F29EE: Kwave::Mul::multiply() (KwaveMul.cpp:117)

o spurious valgrind error:
    ==13087== Invalid read of size 8
    ==13087==    at 0x4BF10544: QList<QTouchEvent::TouchPoint>::~QList() (qlist.h:716)
    ==13087==    by 0x4C1CD41B: QRasterPaintEngine::drawLines(QLineF const*, int) (qpaintengine_raster_p.h:278)
    ==13087==    by 0x4C1D386A: QRasterPaintEngine::drawRects(QRectF const*, int) (qpaintengine_raster_p.h:272)
    ==13087==    by 0x4C110A63: QPainter::drawImage(QPointF const&, QImage const&) (qpainterpath.h:310)
    ==13087==    by 0x404C4B5: OverViewWidget::calculateBitmap() (qpainter.h:925)
    ==13087==    by 0x404D091: OverViewWidget::WorkerThread::run() (OverViewWidget.cpp:65)
    
o use xml description for device names in playback/record plugins

o use svg graphics instead of pixmaps

o use LADSPA

o JACK audio support

o automatic defragmentation of stripes

o maybe some effects from soundtouch

o re-activate the "label" menu

o use some xml file for the menu instead of a macro

o support for Spex codec: http://www.speex.org/

o get rid of libaudiofile, it is buggy, has too few features and
  is no longer actively maintained -> find an alternative

o ALSA record/playback: also detect devices configured in the .asoundrc,
  and not only hardware devices

o find a better solution for deadlock when closing the current file while
  a plugin is still running, instead of refusing the request to close

o replace "AF_SAMPFMT_xxx" with enum "SampleFormat::yyy" in WavEncoder.cpp,
  WavDecoder.cpp and PlayBack-OSS.cpp

o more precise handling of the playback pointer
  -> latency handling

o audible/silent mode of tracks (speakers)
  speaker controls for "audible" mode

o dithering/noise shaping when loading/saving

o auto-detect pause and set markers, for splitting recorded stuff into several
  parts and then save them to disc as separate files

o install a new_handler() for cases in which we run out of memory

o open file dialog: add a preview widget that shows info about the file
  and maybe has "playback/pause/stop" buttons

o fast playback mode, playback with facor 1.5x, 3x, 5x, 7x...
  -> look how noatun does that...

o support for compressed wav files, like those found on www.montypython.net
  -> MPEG 3 is still not supported by libaudiofile

o get Phonon playback support running correctly

o TrackPixmap: implement usage of "extra_samples" for interpolated mode

o fileinfo plugin: auto-generate filename from "track - title"

o use a MenuManager in the plugins (e.g. sonagram)

o optimized cut/paste, at zero-crossing

o new plugin: amplifyclip

o new plugin: pulse train

o document how to do an optimized build, for example:
  CFLAGS="-march=athlon-xp -mcpu=athlon-xp \
  -O4 -Wall -pipe -DQT_CLEAN_NAMESPACE -DQT_NO_COMPAT -DQT_NO_TRANSLATION" \
  CXXFLAGS=${CFLAGS} cmake ...

o speed up MP3 import by blockwise operation

o import/export of labels as meta info in codecs other than wav

o SonagramWindow::toSignal()

o rework of the FFTWidget

o new plugin: additive synthesis

o new plugin: fft, averagefft

o new plugin: distort

o new plugin: channel mixer

o import of multi-channel ASCII files

o use namespace "Kwave" for all Kwave components

o support for KDE's session management

o fix bug in Fx->Periodic Silence (segmentation fault)

o macro recorder

o use MemoryManager for undo actions

o user selectable color scheme
  (feature requested by John David Thompson, 2006-12-20)

o port from id3lib to taglib
  => rejected, currently no alternative available
  => taglib currently works only on files, unsuitable API
     + inaccurate file length detection (units of 1 sec)
  => libid3tag is nearly as old, undocumented and would
      produce a lot of work

o switch to use float as sample_t (requires much work...)
  -> version 0.9

o about plugin: auto-scroll for contents

o crash in record plugin, maybe if device is busy? (last seen ~2009)
    RecordALSA::read(), after underrun: resuming
    RecordALSA::read(), underrun
    ALSA lib pcm_direct.c:1280:(snd1_pcm_direct_set_timer_params) unable to set timer parameters
    RecordALSA::read(), resume after underrun failed: Ungültiger Dateideskriptor
    RecordThread: read result = -9 (Ungültiger Dateideskriptor)
    RecordThread::run() - done
    KCrash: Application 'kwave' crashing...

### EOF ###
