All of lore.kernel.org
 help / color / mirror / Atom feed
* non-destructive aproach for Built-In effects
@ 2003-01-17 21:55 Benny Sjostrand
  2003-01-17 22:01 ` Benny Sjostrand
  0 siblings, 1 reply; 2+ messages in thread
From: Benny Sjostrand @ 2003-01-17 21:55 UTC (permalink / raw)
  To: alsa-devel

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2003-01-17 22:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-01-17 21:55 non-destructive aproach for Built-In effects Benny Sjostrand
2003-01-17 22:01 ` Benny Sjostrand

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.