1 /* GSequencer - Advanced GTK Sequencer
2  * Copyright (C) 2005-2020 Joël Krähemann
3  *
4  * This file is part of GSequencer.
5  *
6  * GSequencer is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSequencer is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSequencer.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #ifndef __AGS_SOUND_ENUMS_H__
21 #define __AGS_SOUND_ENUMS_H__
22 
23 #include <glib.h>
24 #include <glib-object.h>
25 
26 #include <ags/libags.h>
27 
28 #define AGS_TYPE_SOUND_ABILITY_FLAGS       (ags_sound_ability_flags_get_type())
29 #define AGS_TYPE_SOUND_BEHAVIOUR_FLAGS     (ags_sound_behaviour_flags_get_type())
30 #define AGS_TYPE_SOUND_SCOPE               (ags_sound_scope_get_type())
31 #define AGS_TYPE_SOUND_STAGING_FLAGS       (ags_sound_staging_flags_get_type())
32 #define AGS_TYPE_SOUND_STATE_FLAGS         (ags_sound_state_flags_get_type())
33 #define AGS_TYPE_SOUND_KEY_FORMAT          (ags_sound_key_format_get_type())
34 
35 G_BEGIN_DECLS
36 
37 /**
38  * AgsSoundAbilityFlags:
39  * @AGS_SOUND_ABILITY_PLAYBACK: playback ability
40  * @AGS_SOUND_ABILITY_SEQUENCER: sequenecer ability
41  * @AGS_SOUND_ABILITY_NOTATION: notation abilitiy
42  * @AGS_SOUND_ABILITY_WAVE: wave abilitiy
43  * @AGS_SOUND_ABILITY_MIDI: MIDI ability
44  *
45  * Enum values to specify particular ability. Mark an object to be
46  * able to handle matching scope.
47  */
48 typedef enum{
49   AGS_SOUND_ABILITY_PLAYBACK            = 1,
50   AGS_SOUND_ABILITY_SEQUENCER           = 1 <<  1,
51   AGS_SOUND_ABILITY_NOTATION            = 1 <<  2,
52   AGS_SOUND_ABILITY_WAVE                = 1 <<  3,
53   AGS_SOUND_ABILITY_MIDI                = 1 <<  4,
54 }AgsSoundAbilityFlags;
55 
56 /**
57  * AgsSoundBehaviourFlags:
58  * @AGS_SOUND_BEHAVIOUR_PATTERN_MODE: pattern mode
59  * @AGS_SOUND_BEHAVIOUR_BULK_MODE: bulk mode
60  * @AGS_SOUND_BEHAVIOUR_REVERSE_MAPPING: reverse mapping
61  * @AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_OUTPUT: defaults to output
62  * @AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_INPUT: defaults to input
63  * @AGS_SOUND_BEHAVIOUR_CHAINED_TO_OUTPUT: chained to output
64  * @AGS_SOUND_BEHAVIOUR_CHAINED_TO_INPUT: chained to input
65  * @AGS_SOUND_BEHAVIOUR_PERSISTENT: persistent
66  * @AGS_SOUND_BEHAVIOUR_PERSISTENT_PLAYBACK: persistent playback
67  * @AGS_SOUND_BEHAVIOUR_PERSISTENT_NOTATION: persistent notation
68  * @AGS_SOUND_BEHAVIOUR_PERSISTENT_SEQUENCER: persistent sequencer
69  * @AGS_SOUND_BEHAVIOUR_PERSISTENT_WAVE: persistent wave
70  * @AGS_SOUND_BEHAVIOUR_PERSISTENT_MIDI: persistent MIDI
71  * @AGS_SOUND_BEHAVIOUR_PROPAGATE_DONE: propagate done
72  *
73  * Enum values to describe behaviour.
74  */
75 typedef enum{
76   AGS_SOUND_BEHAVIOUR_PATTERN_MODE           = 1,
77   AGS_SOUND_BEHAVIOUR_BULK_MODE              = 1 <<  1,
78   AGS_SOUND_BEHAVIOUR_REVERSE_MAPPING        = 1 <<  2,
79   AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_OUTPUT     = 1 <<  3,
80   AGS_SOUND_BEHAVIOUR_DEFAULTS_TO_INPUT      = 1 <<  4,
81   AGS_SOUND_BEHAVIOUR_CHAINED_TO_OUTPUT      = 1 <<  5,
82   AGS_SOUND_BEHAVIOUR_CHAINED_TO_INPUT       = 1 <<  6,
83   AGS_SOUND_BEHAVIOUR_PERSISTENT             = 1 <<  7,
84   AGS_SOUND_BEHAVIOUR_PERSISTENT_PLAYBACK    = 1 <<  8,
85   AGS_SOUND_BEHAVIOUR_PERSISTENT_NOTATION    = 1 <<  9,
86   AGS_SOUND_BEHAVIOUR_PERSISTENT_SEQUENCER   = 1 << 10,
87   AGS_SOUND_BEHAVIOUR_PERSISTENT_WAVE        = 1 << 11,
88   AGS_SOUND_BEHAVIOUR_PERSISTENT_MIDI        = 1 << 12,
89   AGS_SOUND_BEHAVIOUR_PROPAGATE_DONE         = 1 << 13,
90 }AgsSoundBehaviourFlags;
91 
92 /**
93  * AgsSoundScope:
94  * @AGS_SOUND_SCOPE_PLAYBACK: playback scope
95  * @AGS_SOUND_SCOPE_SEQUENCER: sequenecer scope
96  * @AGS_SOUND_SCOPE_NOTATION: notation abilitiy
97  * @AGS_SOUND_SCOPE_WAVE: wave abilitiy
98  * @AGS_SOUND_SCOPE_MIDI: MIDI scope
99  * @AGS_SOUND_SCOPE_LAST: the last scope
100  *
101  * Enum values to specify current scope. Request current scope.
102  */
103 typedef enum{
104   AGS_SOUND_SCOPE_PLAYBACK,
105   AGS_SOUND_SCOPE_SEQUENCER,
106   AGS_SOUND_SCOPE_NOTATION,
107   AGS_SOUND_SCOPE_WAVE,
108   AGS_SOUND_SCOPE_MIDI,
109   AGS_SOUND_SCOPE_LAST,
110 }AgsSoundScope;
111 
112 /**
113  * AgsSoundStagingFlags:
114  * @AGS_SOUND_STAGING_CHECK_RT_DATA: check rt-data
115  * @AGS_SOUND_STAGING_RUN_INIT_PRE: run init pre
116  * @AGS_SOUND_STAGING_RUN_INIT_INTER: run init inter
117  * @AGS_SOUND_STAGING_RUN_INIT_POST: run init post
118  * @AGS_SOUND_STAGING_FEED_INPUT_QUEUE: feed input queue
119  * @AGS_SOUND_STAGING_AUTOMATE: automate
120  * @AGS_SOUND_STAGING_RUN_PRE: run pre
121  * @AGS_SOUND_STAGING_RUN_INTER: run inter
122  * @AGS_SOUND_STAGING_RUN_POST: run post
123  * @AGS_SOUND_STAGING_DO_FEEDBACK: do feedback
124  * @AGS_SOUND_STAGING_FEED_OUTPUT_QUEUE: feed output queue
125  * @AGS_SOUND_STAGING_FINI: fini
126  * @AGS_SOUND_STAGING_CANCEL: cancel
127  * @AGS_SOUND_STAGING_DONE: done
128  * @AGS_SOUND_STAGING_REMOVE: remove
129  * @AGS_SOUND_STAGING_RESET: reset
130  * @AGS_SOUND_STAGING_FX: fx staging
131  *
132  * Enum values to stage the specified action.
133  */
134 typedef enum{
135   AGS_SOUND_STAGING_CHECK_RT_DATA       = 1,
136   AGS_SOUND_STAGING_RUN_INIT_PRE        = 1 <<  1,
137   AGS_SOUND_STAGING_RUN_INIT_INTER      = 1 <<  2,
138   AGS_SOUND_STAGING_RUN_INIT_POST       = 1 <<  3,
139   AGS_SOUND_STAGING_FEED_INPUT_QUEUE    = 1 <<  4,
140   AGS_SOUND_STAGING_AUTOMATE            = 1 <<  5,
141   AGS_SOUND_STAGING_RUN_PRE             = 1 <<  6,
142   AGS_SOUND_STAGING_RUN_INTER           = 1 <<  7,
143   AGS_SOUND_STAGING_RUN_POST            = 1 <<  8,
144   AGS_SOUND_STAGING_DO_FEEDBACK         = 1 <<  9,
145   AGS_SOUND_STAGING_FEED_OUTPUT_QUEUE   = 1 << 10,
146   AGS_SOUND_STAGING_FINI                = 1 << 11,
147   AGS_SOUND_STAGING_CANCEL              = 1 << 12,
148   AGS_SOUND_STAGING_DONE                = 1 << 13,
149   AGS_SOUND_STAGING_REMOVE              = 1 << 14,
150   AGS_SOUND_STAGING_RESET               = 1 << 15,
151   AGS_SOUND_STAGING_FX                  = 1 << 16,
152 }AgsSoundStagingFlags;
153 
154 /**
155  * AgsSoundStateFlags:
156  * @AGS_SOUND_STATE_IS_WAITING: is waiting
157  * @AGS_SOUND_STATE_IS_ACTIVE: is active
158  * @AGS_SOUND_STATE_IS_PROCESSING: is processing
159  * @AGS_SOUND_STATE_IS_TERMINATING: is terminating
160  *
161  * Enum values to indicate state.
162  */
163 typedef enum{
164   AGS_SOUND_STATE_IS_WAITING                  = 1,
165   AGS_SOUND_STATE_IS_ACTIVE                   = 1 <<  1,
166   AGS_SOUND_STATE_IS_PROCESSING               = 1 <<  2,
167   AGS_SOUND_STATE_IS_TERMINATING              = 1 <<  3,
168 }AgsSoundStateFlags;
169 
170 /**
171  * AgsSoundKeyFormat:
172  * @AGS_SOUND_KEY_FORMAT_16TH: key format 16th
173  * @AGS_SOUND_KEY_FORMAT_256TH: key format 256th
174  *
175  * Enum values to specify key format.
176  */
177 typedef enum{
178   AGS_SOUND_KEY_FORMAT_16TH,
179   AGS_SOUND_KEY_FORMAT_256TH,
180 }AgsSoundKeyFormat;
181 
182 GType ags_sound_ability_flags_get_type();
183 GType ags_sound_behaviour_flags_get_type();
184 GType ags_sound_scope_get_type();
185 GType ags_sound_staging_flags_get_type();
186 GType ags_sound_state_flags_get_type();
187 GType ags_sound_key_format_get_type();
188 
189 G_END_DECLS
190 
191 #endif /*__AGS_SOUND_ENUMS_H__*/
192