                                                                                                                                         Known bugs and possible improvements

                                                                    Known bugs and possible improvements

Bugs

     * Zwischenlinien bei embedded MM sollten nur INNEN sein und nicht als zusaetzliche Umrandung
     * External Connectors: Description, die nach aussen sichtbar ist, muss editiert werden koennen. Bei Slots auch die Farbe der Wires.
     * Destructor of LayoutableModuleGenerator must handle playing!
     * Entering negativ Numbers in MNumber is inconveniant (you can't begin with a '-'). This is a Bug in Qt.
     * /tmp/-Files should be created with -rw------
     * Memory leakages. Insure++ the whole thing.
     * Cracking sound shortly after start to play
     * Output modules: If every output module has finished playing (reached CUT_TO), execution should be stopped. Currently only the status-line-update stops, but the
       STOP and PAUSE buttons stay active.
     * SaveForUndo isn't called at all correct places
     * Undo() should result in "not modified", if level is reached, where file was saved last.
     * segfault after quitting program. KFileDialog?
     * Special characters in filenames, parameters etc. cause file syntax errors
     * endless recursion when ET_FILEREF-embedding contains cycles.

Neccessary internal restructurations

     * Document headers.

Enhancements of the GUI:

     * Save Window size together with module file.
     * New/Open/Close/Quit and modified module -> SAVE/DON'T SAVE/CANCEL
     * Paste should be always activated, if something is in the clipboard. And this is always the time since the user has cutted/copied something the very first time
       after installing MD or deleting /tmp/*.md. So lets just always activate paste.
     * Wenn man save macht, ohne einen eigenen Filename ausgesucht zu haben, sollte das sein wie Save as...
     * Wenn man mit save as... eine bestehende Datei auswaehlt, sollte man gewarnt werden.
     * Tooltips auf fuer die Menupunkte. Keine Ahnung, wie das geht. Aber beim Panel vom kwm habe die auch Tooltips im Menue. Mal kde-devel fragen
     * Beim Einfuegen um ein Raster nach rechts unten verschieben. Damit man sieht, dass es was neues Ist. Auch bei insertFile. beim laden muss man einfach mit QPoint
       ein Gridoffset angeben koennen. Fuegt man mehrfach ein, so soll jedesmal um eins weiter verschoben werden.
     * Use relative filenames when saving ET_FILEREF macromodules.

Enhancements of the sound system

     * Module MWavOutput: support different formats: mono/stereo 8/12/16 bit
     * MWavOutput: Filename via Textslot.
     * Caching wieder integrieren.
     * Impulssignale z.B. fuer die Radiobuttons.
     * MEcho: Check negative delay: Should this be an error?
     * Should MCut understand parameter duration? and fix cutting interval in some means? I think: Yes.
     * Unrolling of loops. Test efficiency.

Greater Projects:

     * Realtime input
     * Find someone to draw real icons!

Vague future plans

     * New kind of signal: 16-Bit sample signal. Works like sound signal, but with 16 bit short instead of floats. Some modules would be more effektive. Output modules
       could either have two inputs or exist in two flavors or something. E.g echo, parallel and many other modules could have a 16 bit sample version. Could gain
       speed perhaps.
     * New kind of signal: sample stream. A sample stream has no start_time parameter at the getSignal() call. I can rely on its being sequentially processed and thus
       hasn't some of the problems concerned with caching and recursion.

New Modules:

     * text-concat, current-working-dir, filename, modulename, ...
     * Other oszillators. Esp. an efficient sinus generator.
     * cut-from, cut-to
     * get-duration, handle-...
     * Filter
     * Simple modules like clip, raise, null, const, ...
     * Control-Modules: Druckknoepfe, Radiobuttons.
     * Display-Modules. Als erstes z.B. PerformanceMeter.
     * Arithmethic modules sqrt, min, max, ...
     * Logical operators: >, <, =, true, nor. Builtin Macro modules false, and, or, nand, exor, equiv.

Internal code restructurations:

     * ".md" ersetzen durch Makro FILE_SUFFIX
     * Restructure module source files: one include file, two .cc files. One for the player, the other must be only the additional part for the layout. Both must be
       linked together for the GUI.
     * Koennte man die Module zur Laufzeit linken? Wie die netscape plugins?! Da war doch eine mail in KDE, wo es etwas erklaert wurde.

User documentaion:

     * Start Webpages.

Developers Documentation:

     * Document the limits. Max number of everything, if this exists.
     * Document how to write a module. Write a skeleton/sample module with slots and signals of all types.
     * use kdoc
