Save and load feature
I would like to add a feature to save and load the whole configuration of the synthesizer. This includes all the waveforms used (the tabs), their settings and effects, the scales that are set up to display, the recorded sequence of notes, the pulse and number of beats in the loop and the mixer settings. Those data will probably be saved to a xml file, where multiple configurations will be stored. It will be then possible to load/save those configuration from the menu. The last configuration will automatically be loaded at startup.
Export loop feature
A menu will option will be added to export the loop in an audio file format, so that it can be used by other android apps. The best way is probably to stick to wav file (compared to mp3 which would require additional compression libraries and have less quality).
I would like to add a feature to save and load the whole configuration of the synthesizer. This includes all the waveforms used (the tabs), their settings and effects, the scales that are set up to display, the recorded sequence of notes, the pulse and number of beats in the loop and the mixer settings. Those data will probably be saved to a xml file, where multiple configurations will be stored. It will be then possible to load/save those configuration from the menu. The last configuration will automatically be loaded at startup.
Export loop feature
A menu will option will be added to export the loop in an audio file format, so that it can be used by other android apps. The best way is probably to stick to wav file (compared to mp3 which would require additional compression libraries and have less quality).
Import waveforms
One cool feature would be to let the user add it's own waveforms to the app. One folder in the android system would be reserved for that matter. The app would scan this folder at startup and add the waveform found to the choices list. For the waveform to be successfully imported, an XML file should be provided, and a folder containing the waveform at different frequencies. The XML file would define inside which range those source waveforms can be transposed by the synthesizer.
Waveform visualizer
Instead of the spinner used now, I think that a box displaying the waveform would look way better. Arrows or a menu could be used to select the waveform.
Filtering waveforms
Standard filters could be applied to the waveform via sleek sliders bars (have to define custom UI element for that). If I can manage it, the effect of the filtering would be directly visible on the waveform visualizer !
Alternating filters configuration
Now idea I'm very keen on trying ! In my opinion, applying a fixed setting for the filters is not very interesting, as it just basically reflects another waveform that could be inputted to the system (I will maybe develop this in another post). What is of course more interesting is varying the filters parameters. But instead of going the standard envelope way, I'm thinking to give the possibility of setting several ''waypoints'' with different filters configuration (say a low-pass and high-pass only) so that they could vary simultaneously.
Wavemorphing
Expanding on the previous point, different waveforms could be assigned to the waypoints ! The sound would then shift from one waveform to the other, bringing whole new possibilities.
The UI should implement this feature in an easy to use manner. I imagine using several boxes to display the stages of the waveform, with a slider, or a simple imput box to set the timing of the waypoints. There's a big risk that UI gets too charged however... have to figure out a good way to design this.
Loop edition (sequencer)
Instead of always displaying the keyboard, I'm thinking to display different things on the ring. One thing very interesting to display would be the recorded notes. One tour of the circle would correspond to one bar, and the notes would be distributed around the ring according their timing. If multiple notes play at the same time, they would be displayed side by side, with their notes value displayed. I don't intend to display all the keyboards notes, as it is, in my opinion often limited in use, especially if the note's value is written on the note. The action possible would be to remove a note and maybe change it's pitch and duration, if it is not too tricky to handle wit our big fingers.
With the ring displaying the notes, the central space would display the bars inside the loop. Each bar would occupy a part of the central disk (sharing a piece of the cake). By clicking on it, one could switch the displayed notes on the ring to the different bars. It could even be possible to copy a whole bar to another by sliding it.
Improve UI : effects on the ring
Not too sure if this one is a good idea. The effects (such as ADSR) could be displayed on the ring, instead of the current sliders. This would give a sort of ''circular'' slider. I think it would look cooler. Also have to figure a good way to display the numeric value of the slider.
Improve UI : merge tabs
I think the tab implementation as of now is kinda impractical. For example, switching between the tabs, the scale is not carried over. However, I think it makes sense that it would, as you usually play in the same scale between the different instruments.
So, I would go for buttons, placed at the top of the screen, associated to each wave used. Now, clicking the button would replace only the content of the ring (if the sequencer is displayed) instead of changing the whole display of the screen (as it happens with the tabs)