Hi!

Now I got a new non-destructive aproach in mind, implementing exactly the same functionality, but without modifying to the original source. Instead effects are applied in realtime, which obviously will consume more CPU time when playbacking and recording, depending on the amout of effects applied. (from now I will try to call it "effects" not "filters")

A brief idea what I've got in mind todo:
- Separate ARDOUR::Source peak stuff functionality into another class, ARDOUR::PeakFile, in such way it will be posible to have several peak files asociated to the same source. What I want is to have one peak-file for each region. Then when effects are applied the peak file will be modified to be able to see the changes on the wave on screen. (Yes! in a destructive way modify the peak-file, but I guess that is OK)
- Add some new interfaces to libardour:
ARDOUR::AudioEffect - which is just a pure abstract interface, will have some few methods like: start(), length() , process (Sample * samples, Source * source, start, cnt)
ARDOUR::AudioEffectList - which will just be cointainer class for AudioEffect instances, some simple methods like: add_effect(...), remove_effect(...) and effect_at (frame_position) which i will try to implement in some smart way which it dont have to loop throug all registered AudioEffects on each call.
ARDOUR::SilenceEffect , ARDOUR::AmplifyEffect, ARDOUR::ReverseEffect, implement effect procesing in this AudioEffect subclasses
- Changes in ARDOUR::Region class:
add a new member ARDOUR::AudioEffectList effect_list
add a new member ARDOUR::PeakFile peak_file
add some new functions like: apply_effect (ARDOUR::AudioEffect, start, length), and remove_effect (ARDOUR::AudioEffect)
the read(...) function will transparantly in some magic way process all effects, and return the samples.

Thing that I dont have any idea about howto implement yet:
- support for Undo/Redo should be implemented somewhere, I guess with this aproach it will not be too dificult.
- in some how all this new data should be saved with the session, and restored when open again, probably not very dificult, with that great XML engine.

What I like with this idea is that the day when you run out of CPU power, course there's too many effect to process, then you just "flattern" the region and you got a new region with all effect applied to the new source file.

I just want to have some feedback about the idea before start hacking -:)

/Benny



-------------------------------------------------------
This SF.NET email is sponsored by: Thawte.com - A 128-bit supercerts will
allow you to extend the highest allowed 128 bit encryption to all your clients even if they use browsers that are limited to 40 bit encryption. Get a guide here:http://ads.sourceforge.net/cgi-bin/redirect.pl?thaw0030en
_______________________________________________
Alsa-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/alsa-devel

Reply via email to