doc/TODO-matthias.txt --------------------- IDEAS ----- - publish TConversionTool in some way. Binary? Packaged with example programs? - use speex (open source speech compression, http://speex.sourceforge.net/) - use FLAC (free lossless audio codec)? - check to shadow META-INF/services/javax.sound.* by means of prepending to boot class path. - remove midishare and mp3 stuff? - use libiiwusynth? - support ADPCM? - use TSE3 (portable sequencer engine written in C++) - support TSE3MDL file format? TODO (1 - important, 3 - nice to have) ---- general 2 - use aspectj!!! 3 - add "formatted for 80 cols" header to all files 3 - check freetts/Tritonus interaction lowlevel, native 2 - initialize all variables 3 - use libtritonuscommon in all native libs 3 - rename DEBUG to debug_flag for all native libs 3 - separate static inner classes in all native/lowlevel classes 3 - in src/lib/alsa, change constants_check.h to constants_check.c and include it into the object list of in Makefile.in. This is to isolate its effects. 3 - change library building to using libtool 3 - re-check ALSA seq constants (constants_check.h) documentation, distibution 1 - some documentation "how to use Tritonus", explaining general options (precompiled, compile yourself from cvs) 1 - make a note in INSTALL that for hand-installation only desired components should be installed. For automatic install, anyway. (see midishare exception) 1 - binary dists: esd, alsa, SRC, AOS 3 - cleanup web pages: contemporary doctype, weblint, ... 3 - Separate into tritonus_midi_alsa.jar and tritonus_sampled_alsa.jar 3 - review cdda distribution README misc 1 - integrate ogg/vorbis 1 - test suite for classes (not necessarily interfaces) in javax.sound 1 - implement available() for lines 1 - fix start()/stop()/active behaviour for lines 2 - fix bug in AlsaMixer.readControlList() 2 - rework sample rate converter 3 - change provider search order to be exactely compatible with Sun TEST ---- javax.sound.midi Interfaces ControllerEventListener MetaEventListener MidiChannel MidiDevice Receiver Sequencer Soundbank Synthesizer Transmitter Classes Instrument MetaMessage MidiDevice.Info MidiEvent MidiFileFormat MidiMessage MidiSystem Patch Sequence Sequencer.SyncMode ShortMessage SoundbankResource SysexMessage Track VoiceStatus Exceptions InvalidMidiDataException MidiUnavailableException javax.sound.midi.spi Classes MidiDeviceProvider MidiFileReader MidiFileWriter SoundbankReader javax.sound.sampled Interfaces Clip DataLine Line LineListener Mixer Port SourceDataLine TargetDataLine Classes AudioFileFormat AudioFileFormat.Type AudioFormat AudioFormat.Encoding AudioInputStream AudioPermission AudioSystem BooleanControl BooleanControl.Type CompoundControl CompoundControl.Type Control tested in ControlTestCase Control.Type tested in ControlTypeTestCase DataLine.Info EnumControl EnumControl.Type FloatControl FloatControl.Type Line.Info LineEvent LineEvent.Type Mixer.Info Port.Info ReverbType Exceptions LineUnavailableException UnsupportedAudioFileException javax.sound.sampled.spi Classes AudioFileReader AudioFileWriter FormatConversionProvider MixerProvider ------------------------------------------------------------------- SAOL ---- grammar: - tables (s/r conflict) - floats - associativity of '?' - make unicode-clean (but check if saol allows unicode chars in identifiers) Tests mit JSInfo, Converter Test ================================ Es wird immer über die Funktion AudioSystem.isConversionPossible(AudioFormat, AudioFormat) getestet. -------- source format: PCM_SIGNED, 1 channel(s), 16 bit samples, 2 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian target format: ALAW, 1 channel(s), 8 bit samples, 1 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.MpegFormatConversionProvider@ed1976dd AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.UlawFormatConversionProvider@f91976dd possible: true - possible solutions: - cancel alaw <-> ulaw completely (let smart converter do it) - seperate it into an own converter - derive Alaw-/UlawFCP from TMatrixFormatConversionProvider --- source format: PCM_SIGNED, 1 channel(s), 8 bit samples, 1 byte frames, 48000.0 Hz, 48000.0 frames/second, little endian target format: PCM_SIGNED, 1 channel(s), 24 bit samples, 3 byte frames, 48000.0 Hz, 48000.0 frames/second, little endian AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.MpegFormatConversionProvider@ed1a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.UlawFormatConversionProvider@f91a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.AlawFormatConversionProvider@fdd27a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.PCM2PCMConversionProvider@fcae7a60 possible: false - solution: In PCM2PCM FCP., add 24 and 32 bit formats to set of I/O formats passed to super class constructor additional suggestions: a) remove duplicate lines in OUTPUT_FORMATS b) rename OUTPUT_FORMATS to INOUT_FORMATS --- source format: PCM_SIGNED, 1 channel(s), 8 bit samples, 1 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian target format: PCM_SIGNED, 2 channel(s), 8 bit samples, 2 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.MpegFormatConversionProvider@ed1a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.UlawFormatConversionProvider@f91a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.AlawFormatConversionProvider@fdd27a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.PCM2PCMConversionProvider@fcae7a60 possible: false - solution: ?? (this is presumably a fundamental solution of TEncodingProvider) --- source format: PCM_SIGNED, 2 channel(s), 16 bit samples, 4 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian target format: PCM_UNSIGNED, 2 channel(s), 16 bit samples, 4 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.MpegFormatConversionProvider@ed1a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.UlawFormatConversionProvider@f91a7a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.AlawFormatConversionProvider@fdd27a60 AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.PCM2PCMConversionProvider@fcae7a60 possible: false - solution: discuss whether 16 bit unsigned is important --- source format: PCM_SIGNED, 2 channel(s), 16 bit samples, 4 byte frames, 48000.0 Hz, 48000.0 frames/second, little endian target format: PCM_SIGNED, 2 channel(s), 16 bit samples, 4 byte frames, 44100.0 Hz, 44100.0 frames/second, little endian AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.MpegFormatConversionProvider@d06e6b3f AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.UlawFormatConversionProvider@c46e6b3f AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.AlawFormatConversionProvider@c1566b3f AudioSystem.doFormatConversionProviderIteration(): handling FormatConversionProvider: org.tritonus.sampled.convert.PCM2PCMConversionProvider@c0226b3f possible: false - solution: mal hinmachen! ---