726539d107df3e1060a14f7fb1c9985fa29722de
[platform/upstream/gstreamer.git] / docs / random / ensonic / interfaces.txt
1 $Id$
2
3 * new general interfaces
4   * GST_TYPE_PRESET_MANAGER
5     - add preset managment
6     - API:
7       GList *get_presets();
8       void activate_preset_by_index(glong index);
9       void activate_preset_by_name(const gchar *name);
10       void add_current(const gchar *name);
11       void remove_preset_by_index(glong index);
12       void remove_preset_by_name(const gchar *name);
13     - features
14       - there should always be a default preset
15     - questions
16       - were and how do we store the presets?
17
18   * GST_TYPE_UI_HINT
19     - add hints to generate 'good' looking interfaces to elements
20     - API:
21       GList *get_group_list();
22       struct ui_hint_group {
23         gchar *label;
24         gachr *role;
25         GList *entries;
26       }
27       struct ui_hint_group_entry {
28         enum UiHintGroupEntryType type={PARAM,DPARAM};
29         gchar *name;
30       }
31       roles {
32         /* graphics */
33         "color_selection/rgb",
34         "color_selection/hsv",
35         "aspect_ratio",
36         /* audio */
37         "envelope/adsr",
38       }
39     - features
40       - grouping of parameters, each group has:
41         - a label: giving a title to the group
42         - a role:
43           - this can give the UI a hint about the purpose of the controls
44           - this only makes sense, if we dont make this a thousand templates
45         - a list of dparams or properties
46     - question
47       - should this be aware of instruments (voice-groups)
48         - no, instruments should auto-generate those
49
50 * new interfaces for audio applications
51   * GST_TYPE_MUSIC_GENERATOR
52     - add hints so that application can use a element as an instrument
53     - API:
54       // param types
55       DParam *get_note_dparam();
56       GList *get_trigger_dparams();
57       // -- or
58       DParamType get_dparam_type(DParam *);
59       dparamtype = { NOTE, TRIGGER, OTHER }
60       // voices
61       char *get_number_of_voices_property();
62       GList *get_global_param_names();
63       GList *get_voice_param_names();
64     - features
65       - find out which params to use to play notes/trigger sounds
66         - these params will not appear in a control-ui
67         - notes involve a key to frequency translation
68       - find out if the element has a number_of_voices property
69         - if yes, we can find out about the max by looking at the gparamspec
70         - setting the property, adds/removes voices
71         - if the element supports it, it needs to:
72           - register voice-dparams as e.g. note_XXX, where XXX is the voice-number
73           - run the voice-loop in the chain/loop function
74             each voice processes the same input, if at all
75             the outputs of all voices are mixed together
76