lp:mage

Created by JohnLM and last modified
Get this branch:
bzr branch lp:mage
Only JohnLM can upload to this branch. If you are JohnLM please log in for upload directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
JohnLM
Project:
MAGE
Status:
Development

Recent revisions

16. By JohnLM

An overhaul of file handling mechanism. Made the back-end handler classes
internal to AudioFile class. Change summary:
 - AudioFile now uses MallocVector for static buffer
 - Removed file open failure handling code from AudioFile
   This should be handled elsewhere (a sample test code in main.cpp)
 - Removed monoaural file checks from AudioFile
 - Added AudioFile::isMono() method so it can be quieried from outside
 - Reimplemented AudioFile::getAudio() to use the new MallocVector buffer
 - Implemented FileLoop class to act as "neverending loop" source
 - Made AudioFile back-end handler classes internal to AudioFile
 - Changed var names in AudioFile methods to emphasise the frame/sample
   distinction
 - Moved inline methods to header files (for proper linking)
 - Numerous minor changes

15. By JohnLM

First rudimentary mixing support. No cues are processed yet, but data
can be passed to the only implemented -- MonoMix -- mixing bus.
Some improvements made on MallocVector to make it more useful with
C-style data retreival functions. You can now take a raw pointer to
a slice of vecor's internal data so functions can fill it chunk at a
time. For more C++ likeness I wrote MallocVector::iterator, but it
ain't used anywhere yet.
 - AudioSource class to serve as an abstraction for data retreival
   + AudioSource declares virtual getAudio() method for polymorphism
   + Static getAudio() methods also moved to AudioSource
 - AudioFile now inherits from AudioSource
 - EmptySource class defined (to replace "silent" AudioFile)
 - AudioFile::eof() renamed to override virtual AudioSource::eos()
 - MixingBus now uses MallocVector for buffers
 - Defined virtual MixBus::mix() method to mix audio from arbitary
   sources (arbitary to support filters and generators) into final mix
 - MixBus::Piece class to simplify passing arguments for mix()
 - MonoMix can dump data to .wav file (for debugging only)
 - MallocVector additions
   + getBuffer() method to get "self-allocated" array
   + Defined iterator (unused yet)
 - Defined strConv() function to provide numeric-to-string conversion
 - Moved stripToSymbol() and basename() to messages.cpp

14. By JohnLM

This is a backup commit before audio processing path draft gets
implemented. Quite a few modifications in this commit.
 - Mixing Bus classes draft written
 - TimeStamp class draft written (revise this)
 - SimpleBuffer (was retbuffer_t) class implemented to pass
   arbitary sized chunks around.
 - AudioFile::getAudio() now returns SimpleBuffer
 - ResampleLayer::getData() now returns SimpleBuffer
 - AudioFile::makeCache() modified to handle SimpleBuffers
 - Implemented argument parsing with TCLAP
 - Minor fixes to prevent memory leaks in case of failure
   in AudioFile::getAudio()
 - Minor modification in LADSPA plugin identification mechanism
 - makefile now uses pkg-config to get flags

13. By JohnLM

- More LADSPA Host code
  + Loads .so files
  + Get's and parses descriptors
  + Recognizes plugins by ID/Label pairs
- Amplitude modulator recognizes usuable plugins
  + TODO: It just recognizes, actual data processing code pending
- Reimplemented Resampler code to use callbacks
- Modified makeCache() to cache with new callback resampler
- Added a method to gain access to MallocVector's internal buffer
- Moved around some declarations in headers, to avoid circular deps

12. By JohnLM

- Started coding LADSPA Host code.
  + Retreives Plugin .so file list.
  + TODO: Dynamic library loading
  + TODO: Plugin .so file black/whitelist
- Started to code wrapping classes around plugins
- Added undefined private copy constructors to file handler classes
  to avoid copying them.
- Split out audio.hpp from master header
- Added some optimization flags to makefile to drop unused code
  (FIXME: This may or may not interfere with
          other optimization, please test!)

Damn it! This just keeps getting more and more complicated.
I just keep wrapping pieces of code in other code. This can't be
good for performance.
Need to make code more modular, and try simplify things a wee bit
(provided it won't affect performance... much)

11. By JohnLM

- Reimplemented CachedDataHandler class to use MallocVector for buffer
- Reimplemented AudioFile::makeCache to use MallocVector
- Added AudioFile::fillIn() for partial or external buffer fills
- Rewrote AudioFile::getAudio() to wrap around fillIn()
- Implemented cache with resampling
- Added EXTRA_DEBUG macro for them very verbose debug messages
- New user-configurable Resampler settings in conf file

10. By JohnLM

Bunch of things done for this commit
- FIXED: AudioFile::makeCache saves streaming read "pointer"
- Implemented seeking methods for AudioFile and it's data handlers
- FIXED: Created a dummy, virtual ~GenericDataHandler destructor,
  for proper polymorphic destruction of child class objects.
- Minor fixes in resampler layer code.
- Added MallocVector class

9. By JohnLM

This is quite a big commit, guess should've done some more
along the way. Lots of new code.
 - Completed the AudioFile class (can now read data)
 - Created Resampling layer (not used anywhere yet)
 - Implemented caching mechanism (without resampling)
 - Fully defined libsndfile handler for input files
 - Fully defined cached data handler for input files
 - Made AudioFile buffer static (shared accross objects)
 - ResampleLayer buffer is also static
 - Added MageFatalException class to simplify exception catching
 - New downmixer function (downmixes in place)
 - New message types added
 - makefile updated for more efficient... making
 - Split some headers out of magical.hpp, to lessen the mess.

8. By JohnLM

This commit is a total overhaul of the code. Pretty much everything is
rewritten in C++ with classes. This decision was made because C code
was pretty ugly and complicated already, and it would be even more so
if I continued that way.
On other note, the Amplitude Modulator plugin is now deprecated and will
be removed. Why did I need to reinvent the sqare wheel anyway?
In short:
 - Rewrote most code in C++ organised in classes
 - Deprecated my Amplitude Modulator plugin (4421)

7. By JohnLM

Backup commit before a change in development decision.
This code is still a mess.

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
This branch contains Public information 
Everyone can see this information.

Subscribers