/[svn]/linuxsampler/trunk/src/effects/EffectFactory.h
ViewVC logotype

Annotation of /linuxsampler/trunk/src/effects/EffectFactory.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 2124 - (hide annotations) (download) (as text)
Sat Sep 18 09:24:41 2010 UTC (13 years, 8 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 3115 byte(s)
* implemented support for internal LADSPA effects (work in progress)

1 schoenebeck 2124 /*
2     Copyright (C) 2010 Christian Schoenebeck
3     */
4    
5     #ifndef LS_EFFECT_FACTORY_H
6     #define LS_EFFECT_FACTORY_H
7    
8     #include "Effect.h"
9     #include "EffectInfo.h"
10     #include "../common/Exception.h"
11    
12     namespace LinuxSampler {
13    
14     /**
15     * Manages all sampler internal effects. It offers a list and detailed
16     * informations about all internal effects available for the sampler and allows
17     * to create and destroy instances of those effects. It provides a general
18     * interface for these functions, independent of the respective effect system's
19     * implementation details.
20     */
21     class EffectFactory {
22     public:
23     /**
24     * Returns comma separated list of all effect systems currently available
25     * for this sampler. This list can vary on the exact configuration of the
26     * running machine and the options with which the sampler was compiled.
27     */
28     static String AvailableEffectSystemsAsString();
29    
30     /**
31     * Returns total amount of effects currently available for the sampler. This
32     * value can vary on the exact configuration of the running machine and
33     * especially on which effect plugins are currently installed on the machine.
34     *
35     * @e Note: When this method is called the 1st tim, it can take quite some
36     * time to return, since it will trigger a scan to retrieve all effects,
37     * currently available on the system. Those informations are then buffered
38     * in RAM and won't change on subsequent calls to AvailableEffectsCount()
39     * until an update of available effects is forced by calling
40     * UpdateAvailableEffects() .
41     *
42     * @see UpdateAvailableEffects()
43     */
44     static uint AvailableEffectsCount();
45    
46     /**
47     * Force to refresh the internal list of available effects and their
48     * detailed informations. This might be necessary e.g. when the user
49     * installed new effect plugins on his system and doesn't want to restart
50     * the whole sampler session just for being able to access the new effects.
51     */
52     static void UpdateAvailableEffects();
53    
54     /**
55     * Returns unique identifier and further detailed informations about the
56     * requested effect.
57     *
58     * @param index - index of the effect to retrieve informations about, must
59     * be between 0 and AvailableEffectsCount()
60     * @see UpdateAvailableEffects()
61     */
62     static EffectInfo* GetEffectInfo(uint index);
63    
64     /**
65     * Create an instance of the requested effect. You should call Destroy()
66     * once the effect is not used anymore.
67     *
68     * @param pInfo - unique identifier of the effect to create
69     * @returns pointer to new effect instance, throws an Exception otherwise
70     * @throws Exception - if the requested effect could not be instantiated
71     * successfully
72     */
73     static Effect* Create(EffectInfo* pInfo) throw (Exception);
74    
75     /**
76     * Destroy and free the given effect instance from memory, previously
77     * created with Create() .
78     *
79     * @param pEffect - effect instance to destroy
80     */
81     static void Destroy(Effect* pEffect);
82     };
83    
84     } // namespace LinuxSampler
85    
86     #endif // LS_EFFECT_FACTORY_H

  ViewVC Help
Powered by ViewVC