I wrote a few more filters and created some generators for my sample editor. I haven't thought of a good name for it yet, at the moment it's called fled. Creating the filters and generators is trivial. Creating an intuitive interface for their use is difficult. Each new filter needs a property page, and some way to visuialise what it will do to the sample when run. One good way to see how it will affect the sample is to plot a frequency response graph. All my filters operate in the time domain. At the moment I can see how see a bit of what they will do by generating random noise, viewing the frequency spectrum by performing an FFT on it, and then running the filter over the data. Many of the filters require a number of coefficients that wouldn't mean much to a casual user - hence the need to experiment. Creating a property dialog given a reference or pointer to the base filter or generator class is a bit of a challenge. I had to resort to RTTI. Perhaps there is a better way.
I haven't created a good filter graph widget yet. I've been fudging by using an Fl_Browser - it really isn't appropriate. When I created the filters that are used to connect other filters together I used references rather than pointers thinking that references might be a bit safer. I still managed to get a segfault by passing arguments to filters that were built on the stack and then trying to use them after they had gone out of scope. I would like to be able to modify the filter graph dynamically, which means I will need to create filters dynamically. I think that using pointers to filters will be more appropriate, I'll need to be careful to avoid leaking memory.
The ability to undo an operation is becoming more and more important. Another issue is the ability to edit large sample files, that wont fit into memory, and also the ability to play them back.
Another important thing that is missing from my editor is the display of precise measurements. There are no indications of the length of the sample data, the size of the selected data or any indication of the time in the sample view or the frequency in the frequency spectrum view. This is not suitable for users doing serious work.
I've uploaded the source. I've been thinking about either putting it back in the penguinplay cvs (penguinplay is dead) or creating a source forge project for it. I created a user account on sourceforge and sent some mail about this to the penguinplay list.