BEAST/BSE - Better Audio System and Sound Engine  0.9.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
bsebasics.idl
Go to the documentation of this file.
1  // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html
2 namespace Bse {
3 using namespace Sfi;
4 /* param options */
5 Const READWRITE = ":r:w:";
6 Const STORAGE = ":r:w:S:";
7 Const STANDARD = ":r:w:S:G:";
8 Const STANDARD_RDONLY = ":r:w:S:G:ro:";
9 Const GUI = ":r:w:G:";
10 Const GUI_RDONLY = ":r:w:G:ro:";
11 Const GUI_READABLE = ":r:G:";
12 /* extra options */
13 Const SKIP_DEFAULT = ":skip-default:";
14 Const SKIP_UNDO = ":skip-undo:";
15 Const DEFAULT = STANDARD; // FIXME: remove
16 /* numeric constants */
17 Const MAXINT = +2147483647;
18 Const MININT = -2147483648;
19 Const MAXNUM = +9223372036854775807;
20 Const MINNUM = -9223372036854775808;
21 Const MINDB = -96; /* 32bit:-192 24bit:-144 16bit:-96 */
22 /* standard sequences */
23 sequence IntSeq {
24  Int ints;
25 };
26 sequence TypeSeq {
27  String types;
28 };
29 sequence StringSeq {
30  String strings;
31 };
32 sequence FloatSeq {
33  Real values;
34 };
35 /* musical tunings: http://en.wikipedia.org/wiki/Musical_tuning */
36 enum MusicalTuningType {
37  /* Equal Temperament: http://en.wikipedia.org/wiki/Equal_temperament */
38  MUSICAL_TUNING_12_TET = Enum (1, _("12 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament
39  _("The most common tuning system for modern Western music, "
40  "is the twelve-tone equal temperament, abbreviated as 12-TET, "
41  "which divides the octave into 12 equal parts.")),
42  MUSICAL_TUNING_7_TET = Enum (_("7 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament
43  _("A fairly common tuning system is the seven-tone equal temperament tuning system, "
44  "abbreviated as 7-TET. It divides the octave into 7 equal parts using 171 cent steps.")),
45  MUSICAL_TUNING_5_TET = Enum (_("5 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament
46  _("A fairly common tuning system is the five-tone equal temperament tuning system, "
47  "abbreviated as 5-TET. It divides the octave into 5 equal parts using 240 cent steps.")),
48  /* Rational Intonation: http://en.wikipedia.org/wiki/Just_intonation */
49  MUSICAL_TUNING_DIATONIC_SCALE = Enum (_("Diatonic Scale"), // http://en.wikipedia.org/wiki/Diatonic_scale
50  _("In music theory, a diatonic scale (also: heptatonia prima) is a seven-note "
51  "musical scale comprising five whole-tone and two half-tone steps. "
52  "The half tones are maximally separated, so between two half-tone steps "
53  "there are either two or three whole tones, repeating per octave.")), // Werckmeister I
54  MUSICAL_TUNING_INDIAN_SCALE = Enum (_("Indian Scale"), // http://en.wikipedia.org/wiki/Just_intonation#Indian_scales
55  _("Diatonic scale used in Indian music with wolf interval at Dha, close to 3/2")),
56  MUSICAL_TUNING_PYTHAGOREAN_TUNING= Enum (_("Pythagorean Tuning"), // http://en.wikipedia.org/wiki/Pythagorean_tuning
57  _("Pythagorean tuning is the oldest way of tuning the 12-note chromatic scale, "
58  "in which the frequency relationships of all intervals are based on the ratio 3:2. "
59  "Its discovery is generally credited to Pythagoras.")),
60  MUSICAL_TUNING_PENTATONIC_5_LIMIT= Enum (_("Pentatonic 5-limit"), // http://en.wikipedia.org/wiki/Pentatonic_scale
61  _("Pentatonic scales are used in modern jazz and pop/rock contexts "
62  "because they work exceedingly well over several chords diatonic "
63  "to the same key, often better than the parent scale.")),
64  MUSICAL_TUNING_PENTATONIC_BLUES = Enum (_("Pentatonic Blues"), // http://en.wikipedia.org/wiki/Pentatonic_scale
65  _("The blues scale is the minor pentatonic with an additional augmented fourth, "
66  "which is referred to as the \"blues note\".")),
67  MUSICAL_TUNING_PENTATONIC_GOGO = Enum (_("Pentatonic Gogo"), // http://en.wikipedia.org/wiki/Pentatonic_scale
68  _("The Pentatonic Gogo scale is an anhemitonic pentatonic scale used to tune the "
69  "instruments of the Gogo people of Tanzania.")),
70  /* Meantone Temperament: http://en.wikipedia.org/wiki/Meantone_temperament */
71  MUSICAL_TUNING_QUARTER_COMMA_MEANTONE = Enum (_("Quarter-Comma Meantone"), // http://en.wikipedia.org/wiki/Quarter-comma_meantone
72  _("Quarter-comma meantone was the most common meantone temperament in the "
73  "sixteenth and seventeenth centuries and sometimes used later.")), // Werckmeister II
74  MUSICAL_TUNING_SILBERMANN_SORGE = Enum (_("Silbermann-Sorge Temperament"), // http://de.wikipedia.org/wiki/Silbermann-Sorge-Temperatur
75  _("The Silbermann-Sorge temperament is a meantone temperament used for "
76  "Baroque era organs by Gottfried Silbermann.")),
77  /* Well Temperament: http://en.wikipedia.org/wiki/Well_temperament */
78  MUSICAL_TUNING_WERCKMEISTER_3 = Enum (_("Werckmeister III"), // http://en.wikipedia.org/wiki/Werckmeister_temperament
79  _("This tuning uses mostly pure (perfect) fifths, as in Pythagorean tuning, but each "
80  "of the fifths C-G, G-D, D-A and B-F# is made smaller, i.e. tempered by 1/4 comma. "
81  "Werckmeister designated this tuning as particularly suited for playing chromatic music.")),
82  MUSICAL_TUNING_WERCKMEISTER_4 = Enum (_("Werckmeister IV"), // http://en.wikipedia.org/wiki/Werckmeister_temperament
83  _("In this tuning the fifths C-G, D-A, E-B, F#-C#, and Bb-F are tempered narrow by 1/3 comma, "
84  "and the fifths G#-D# and Eb-Bb are widened by 1/3 comma. The other fifths are pure. "
85  "Most of its intervals are close to sixth-comma meantone. "
86  "Werckmeister designed this tuning for playing mainly diatonic music.")),
87  MUSICAL_TUNING_WERCKMEISTER_5 = Enum (_("Werckmeister V"), // http://en.wikipedia.org/wiki/Werckmeister_temperament
88  _("In this tuning the fifths D-A, A-E, F#-C#, C#-G#, and F-C are narrowed by 1/4 comma, "
89  "and the fifth G#-D# is widened by 1/4 comma. The other fifths are pure. "
90  "This temperament is closer to equal temperament than Werckmeister III or IV.")),
91  MUSICAL_TUNING_WERCKMEISTER_6 = Enum (_("Werckmeister VI"), // http://en.wikipedia.org/wiki/Werckmeister_temperament
92  _("This tuning is also known as Septenarius tuning is based on a division of the monochord "
93  "length into 196 = 7 * 7 * 4 parts. "
94  "The resulting scale has rational frequency relationships, but in practice involves pure "
95  "and impure sounding fifths. "
96  "Werckmeister described the Septenarius as a \"temperament which has nothing at all to do "
97  "with the divisions of the comma, nevertheless in practice so correct that one can be really "
98  "satisfied with it\".")),
99  MUSICAL_TUNING_KIRNBERGER_3 = Enum (_("Kirnberger III"), // http://en.wikipedia.org/wiki/Johann_Philipp_Kirnberger_temperament
100  _("Kirnberger's method of compensating for and closing the circle of fifths is to split the \"wolf\" "
101  "interval known to those who have used meantone temperaments between four fifths instead, "
102  "allowing for four 1/4-comma wolves to take their place. "
103  "1/4-comma wolves are used extensively in meantone and are much easier to tune and to listen to. "
104  "Therefore, only one third remains pure (between C and E).")),
105  MUSICAL_TUNING_YOUNG = Enum (_("Young Temperament"), // http://en.wikipedia.org/wiki/Young_temperament
106  _("Thomas Young devised a form of musical tuning to make the harmony most perfect in those keys which "
107  "are the most frequently used (give better major thirds in those keys), but to not have any unplayable keys. "
108  "This is attempted by tuning upwards from C a sequence of six pure fourths, "
109  "as well as six equally imperfect fifths.")),
110 };
111 /* various MIDI specific definitions */
112 enum MidiSignalType {
113  /* special cased signals */
114  MIDI_SIGNAL_PROGRAM = Enum (1, _("Program Change")), /* 7bit */
115  MIDI_SIGNAL_PRESSURE = Enum (2, _("Channel Pressure")), /* 7bit */
116  MIDI_SIGNAL_PITCH_BEND = Enum (3, _("Pitch Bend")), /* 14bit */
117  MIDI_SIGNAL_VELOCITY = Enum (4, _("Note Velocity")),
118  MIDI_SIGNAL_FINE_TUNE = Enum (5, _("Note Fine Tune")),
119  /* 14bit, continuous controls */
120  MIDI_SIGNAL_CONTINUOUS_0 = Enum (64, _("Bank Select")),
121  MIDI_SIGNAL_CONTINUOUS_1 = Enum (65, _("Modulation Depth")),
122  MIDI_SIGNAL_CONTINUOUS_2 = Enum (66, _("Breath Control")),
123  MIDI_SIGNAL_CONTINUOUS_3 = Enum (67, _("Continuous 3")),
124  MIDI_SIGNAL_CONTINUOUS_4 = Enum (68, _("Foot Controller")),
125  MIDI_SIGNAL_CONTINUOUS_5 = Enum (69, _("Portamento Time")),
126  MIDI_SIGNAL_CONTINUOUS_6 = Enum (70, _("Data Entry")),
127  MIDI_SIGNAL_CONTINUOUS_7 = Enum (71, _("Volume")),
128  MIDI_SIGNAL_CONTINUOUS_8 = Enum (72, _("Balance")),
129  MIDI_SIGNAL_CONTINUOUS_9 = Enum (73, _("Continuous 9")),
130  MIDI_SIGNAL_CONTINUOUS_10 = Enum (74, _("Panorama")),
131  MIDI_SIGNAL_CONTINUOUS_11 = Enum (75, _("Expression")),
132  MIDI_SIGNAL_CONTINUOUS_12 = Enum (76, _("Effect Control 1")),
133  MIDI_SIGNAL_CONTINUOUS_13 = Enum (77, _("Effect Control 2")),
134  MIDI_SIGNAL_CONTINUOUS_14 = Enum (78, _("Continuous 14")),
135  MIDI_SIGNAL_CONTINUOUS_15 = Enum (79, _("Continuous 15")),
136  MIDI_SIGNAL_CONTINUOUS_16 = Enum (80, _("General Purpose Controller 1")),
137  MIDI_SIGNAL_CONTINUOUS_17 = Enum (81, _("General Purpose Controller 2")),
138  MIDI_SIGNAL_CONTINUOUS_18 = Enum (82, _("General Purpose Controller 3")),
139  MIDI_SIGNAL_CONTINUOUS_19 = Enum (83, _("General Purpose Controller 4")),
140  MIDI_SIGNAL_CONTINUOUS_20 = Enum (84, _("Continuous 20")),
141  MIDI_SIGNAL_CONTINUOUS_21 = Enum (85, _("Continuous 21")),
142  MIDI_SIGNAL_CONTINUOUS_22 = Enum (86, _("Continuous 22")),
143  MIDI_SIGNAL_CONTINUOUS_23 = Enum (87, _("Continuous 23")),
144  MIDI_SIGNAL_CONTINUOUS_24 = Enum (88, _("Continuous 24")),
145  MIDI_SIGNAL_CONTINUOUS_25 = Enum (89, _("Continuous 25")),
146  MIDI_SIGNAL_CONTINUOUS_26 = Enum (90, _("Continuous 26")),
147  MIDI_SIGNAL_CONTINUOUS_27 = Enum (91, _("Continuous 27")),
148  MIDI_SIGNAL_CONTINUOUS_28 = Enum (92, _("Continuous 28")),
149  MIDI_SIGNAL_CONTINUOUS_29 = Enum (93, _("Continuous 29")),
150  MIDI_SIGNAL_CONTINUOUS_30 = Enum (94, _("Continuous 30")),
151  MIDI_SIGNAL_CONTINUOUS_31 = Enum (95, _("Continuous 31")),
152  /* 14bit, special cased signals */
153  MIDI_SIGNAL_CONSTANT_HIGH = Enum (96, _("Constant HIGH")),
154  MIDI_SIGNAL_CONSTANT_CENTER = Enum (97, _("Constant CENTER")),
155  MIDI_SIGNAL_CONSTANT_LOW = Enum (98, _("Constant LOW")),
156  MIDI_SIGNAL_CONSTANT_NEGATIVE_CENTER = Enum (99, _("Constant Negative CENTER")),
157  MIDI_SIGNAL_CONSTANT_NEGATIVE_HIGH = Enum (100, _("Constant Negative HIGH")),
158  MIDI_SIGNAL_PARAMETER = Enum (101, _("Registered Parameter")),
159  MIDI_SIGNAL_NON_PARAMETER = Enum (102, _("Non-Registered Parameter")),
160  /* 7bit, literal channel controls, MSB values */
161  MIDI_SIGNAL_CONTROL_0 = Enum (128, _("Control 0 Bank Select MSB")),
162  MIDI_SIGNAL_CONTROL_1 = Enum (129, _("Control 1 Modulation Depth MSB")),
163  MIDI_SIGNAL_CONTROL_2 = Enum (130, _("Control 2 Breath Control MSB")),
164  MIDI_SIGNAL_CONTROL_3 = Enum (131, _("control-3")),
165  MIDI_SIGNAL_CONTROL_4 = Enum (132, _("Control 4 Foot Controller MSB")),
166  MIDI_SIGNAL_CONTROL_5 = Enum (133, _("Control 5 Portamento Time MSB")),
167  MIDI_SIGNAL_CONTROL_6 = Enum (134, _("Control 6 Data Entry MSB")),
168  MIDI_SIGNAL_CONTROL_7 = Enum (135, _("Control 7 Volume MSB")),
169  MIDI_SIGNAL_CONTROL_8 = Enum (136, _("Control 8 Balance MSB")),
170  MIDI_SIGNAL_CONTROL_9 = Enum (137, _("control-9")),
171  MIDI_SIGNAL_CONTROL_10 = Enum (138, _("Control 10 Panorama MSB")),
172  MIDI_SIGNAL_CONTROL_11 = Enum (139, _("Control 11 Expression MSB")),
173  MIDI_SIGNAL_CONTROL_12 = Enum (140, _("Control 12 Effect Control 1 MSB")),
174  MIDI_SIGNAL_CONTROL_13 = Enum (141, _("Control 13 Effect Control 2 MSB")),
175  MIDI_SIGNAL_CONTROL_14 = Enum (142, _("control-14")),
176  MIDI_SIGNAL_CONTROL_15 = Enum (143, _("control-15")),
177  MIDI_SIGNAL_CONTROL_16 = Enum (144, _("Control 16 General Purpose Controller 1 MSB")),
178  MIDI_SIGNAL_CONTROL_17 = Enum (145, _("Control 17 General Purpose Controller 2 MSB")),
179  MIDI_SIGNAL_CONTROL_18 = Enum (146, _("Control 18 General Purpose Controller 3 MSB")),
180  MIDI_SIGNAL_CONTROL_19 = Enum (147, _("Control 19 General Purpose Controller 4 MSB")),
181  MIDI_SIGNAL_CONTROL_20 = Enum (148, _("control-20")),
182  MIDI_SIGNAL_CONTROL_21 = Enum (149, _("control-21")),
183  MIDI_SIGNAL_CONTROL_22 = Enum (150, _("control-22")),
184  MIDI_SIGNAL_CONTROL_23 = Enum (151, _("control-23")),
185  MIDI_SIGNAL_CONTROL_24 = Enum (152, _("control-24")),
186  MIDI_SIGNAL_CONTROL_25 = Enum (153, _("control-25")),
187  MIDI_SIGNAL_CONTROL_26 = Enum (154, _("control-26")),
188  MIDI_SIGNAL_CONTROL_27 = Enum (155, _("control-27")),
189  MIDI_SIGNAL_CONTROL_28 = Enum (156, _("control-28")),
190  MIDI_SIGNAL_CONTROL_29 = Enum (157, _("control-29")),
191  MIDI_SIGNAL_CONTROL_30 = Enum (158, _("control-30")),
192  MIDI_SIGNAL_CONTROL_31 = Enum (159, _("control-31")),
193  /* 7bit, literal channel controls, LSB values */
194  MIDI_SIGNAL_CONTROL_32 = Enum (160, _("Control 32 Bank Select LSB")),
195  MIDI_SIGNAL_CONTROL_33 = Enum (161, _("Control 33 Modulation Depth LSB")),
196  MIDI_SIGNAL_CONTROL_34 = Enum (162, _("Control 34 Breath Control LSB")),
197  MIDI_SIGNAL_CONTROL_35 = Enum (163, _("control-35")),
198  MIDI_SIGNAL_CONTROL_36 = Enum (164, _("Control 36 Foot Controller LSB")),
199  MIDI_SIGNAL_CONTROL_37 = Enum (165, _("Control 37 Portamento Time LSB")),
200  MIDI_SIGNAL_CONTROL_38 = Enum (166, _("Control 38 Data Entry LSB")),
201  MIDI_SIGNAL_CONTROL_39 = Enum (167, _("Control 39 Volume LSB")),
202  MIDI_SIGNAL_CONTROL_40 = Enum (168, _("Control 40 Balance LSB")),
203  MIDI_SIGNAL_CONTROL_41 = Enum (169, _("control-41")),
204  MIDI_SIGNAL_CONTROL_42 = Enum (170, _("Control 42 Panorama LSB")),
205  MIDI_SIGNAL_CONTROL_43 = Enum (171, _("Control 43 Expression LSB")),
206  MIDI_SIGNAL_CONTROL_44 = Enum (172, _("Control 44 Effect Control 1 LSB")),
207  MIDI_SIGNAL_CONTROL_45 = Enum (173, _("Control 45 Effect Control 2 LSB")),
208  MIDI_SIGNAL_CONTROL_46 = Enum (174, _("control-46")),
209  MIDI_SIGNAL_CONTROL_47 = Enum (175, _("control-47")),
210  MIDI_SIGNAL_CONTROL_48 = Enum (176, _("Control 48 General Purpose Controller 1 LSB")),
211  MIDI_SIGNAL_CONTROL_49 = Enum (177, _("Control 49 General Purpose Controller 2 LSB")),
212  MIDI_SIGNAL_CONTROL_50 = Enum (178, _("Control 50 General Purpose Controller 3 LSB")),
213  MIDI_SIGNAL_CONTROL_51 = Enum (179, _("Control 51 General Purpose Controller 4 LSB")),
214  MIDI_SIGNAL_CONTROL_52 = Enum (180, _("control-52")),
215  MIDI_SIGNAL_CONTROL_53 = Enum (181, _("control-53")),
216  MIDI_SIGNAL_CONTROL_54 = Enum (182, _("control-54")),
217  MIDI_SIGNAL_CONTROL_55 = Enum (183, _("control-55")),
218  MIDI_SIGNAL_CONTROL_56 = Enum (184, _("control-56")),
219  MIDI_SIGNAL_CONTROL_57 = Enum (185, _("control-57")),
220  MIDI_SIGNAL_CONTROL_58 = Enum (186, _("control-58")),
221  MIDI_SIGNAL_CONTROL_59 = Enum (187, _("control-59")),
222  MIDI_SIGNAL_CONTROL_60 = Enum (188, _("control-60")),
223  MIDI_SIGNAL_CONTROL_61 = Enum (189, _("control-61")),
224  MIDI_SIGNAL_CONTROL_62 = Enum (190, _("control-62")),
225  MIDI_SIGNAL_CONTROL_63 = Enum (191, _("control-63")),
226  /* 7bit, literal channel controls */
227  MIDI_SIGNAL_CONTROL_64 = Enum (192, _("Control 64 Damper Pedal Switch (Sustain)")),
228  MIDI_SIGNAL_CONTROL_65 = Enum (193, _("Control 65 Portamento Switch")),
229  MIDI_SIGNAL_CONTROL_66 = Enum (194, _("Control 66 Sustenuto Switch")),
230  MIDI_SIGNAL_CONTROL_67 = Enum (195, _("Control 67 Soft Switch")),
231  MIDI_SIGNAL_CONTROL_68 = Enum (196, _("Control 68 Legato Pedal Switch")),
232  MIDI_SIGNAL_CONTROL_69 = Enum (197, _("Control 69 Hold Pedal Switch")),
233  MIDI_SIGNAL_CONTROL_70 = Enum (198, _("Control 70 Sound Variation")),
234  MIDI_SIGNAL_CONTROL_71 = Enum (199, _("Control 71 Filter Resonance (Timbre)")),
235  MIDI_SIGNAL_CONTROL_72 = Enum (200, _("Control 72 Sound Release Time")),
236  MIDI_SIGNAL_CONTROL_73 = Enum (201, _("Control 73 Sound Attack Time")),
237  MIDI_SIGNAL_CONTROL_74 = Enum (202, _("Control 74 Sound Brightness")),
238  MIDI_SIGNAL_CONTROL_75 = Enum (203, _("Control 75 Sound Decay Time")),
239  MIDI_SIGNAL_CONTROL_76 = Enum (204, _("Control 76 Vibrato Rate")),
240  MIDI_SIGNAL_CONTROL_77 = Enum (205, _("Control 77 Vibrato Depth")),
241  MIDI_SIGNAL_CONTROL_78 = Enum (206, _("Control 78 Vibrato Delay")),
242  MIDI_SIGNAL_CONTROL_79 = Enum (207, _("Control 79 Sound Control 10")),
243  MIDI_SIGNAL_CONTROL_80 = Enum (208, _("Control 80 General Purpose Switch 5")),
244  MIDI_SIGNAL_CONTROL_81 = Enum (209, _("Control 81 General Purpose Switch 6")),
245  MIDI_SIGNAL_CONTROL_82 = Enum (210, _("Control 82 General Purpose Switch 7")),
246  MIDI_SIGNAL_CONTROL_83 = Enum (211, _("Control 83 General Purpose Switch 8")),
247  MIDI_SIGNAL_CONTROL_84 = Enum (212, _("Control 84 Portamento Control (Note)")),
248  MIDI_SIGNAL_CONTROL_85 = Enum (213, _("control-85")),
249  MIDI_SIGNAL_CONTROL_86 = Enum (214, _("control-86")),
250  MIDI_SIGNAL_CONTROL_87 = Enum (215, _("control-87")),
251  MIDI_SIGNAL_CONTROL_88 = Enum (216, _("control-88")),
252  MIDI_SIGNAL_CONTROL_89 = Enum (217, _("control-89")),
253  MIDI_SIGNAL_CONTROL_90 = Enum (218, _("control-90")),
254  MIDI_SIGNAL_CONTROL_91 = Enum (219, _("Control 91 Reverb Depth")),
255  MIDI_SIGNAL_CONTROL_92 = Enum (220, _("Control 92 Tremolo Depth")),
256  MIDI_SIGNAL_CONTROL_93 = Enum (221, _("Control 93 Chorus Depth")),
257  MIDI_SIGNAL_CONTROL_94 = Enum (222, _("Control 93 Detune Depth")),
258  MIDI_SIGNAL_CONTROL_95 = Enum (223, _("Control 95 Phase Depth")),
259  MIDI_SIGNAL_CONTROL_96 = Enum (224, _("Control 96 Data Increment Trigger")),
260  MIDI_SIGNAL_CONTROL_97 = Enum (225, _("Control 97 Data Decrement Trigger")),
261  MIDI_SIGNAL_CONTROL_98 = Enum (226, _("Control 98 Non-Registered Parameter MSB")),
262  MIDI_SIGNAL_CONTROL_99 = Enum (227, _("Control 99 Non-Registered Parameter LSB")),
263  MIDI_SIGNAL_CONTROL_100 = Enum (228, _("Control 100 Registered Parameter MSB")),
264  MIDI_SIGNAL_CONTROL_101 = Enum (229, _("Control 101 Registered Parameter LSB")),
265  MIDI_SIGNAL_CONTROL_102 = Enum (230, _("control-102")),
266  MIDI_SIGNAL_CONTROL_103 = Enum (231, _("control-103")),
267  MIDI_SIGNAL_CONTROL_104 = Enum (232, _("control-104")),
268  MIDI_SIGNAL_CONTROL_105 = Enum (233, _("control-105")),
269  MIDI_SIGNAL_CONTROL_106 = Enum (234, _("control-106")),
270  MIDI_SIGNAL_CONTROL_107 = Enum (235, _("control-107")),
271  MIDI_SIGNAL_CONTROL_108 = Enum (236, _("control-108")),
272  MIDI_SIGNAL_CONTROL_109 = Enum (237, _("control-109")),
273  MIDI_SIGNAL_CONTROL_110 = Enum (238, _("control-110")),
274  MIDI_SIGNAL_CONTROL_111 = Enum (239, _("control-111")),
275  MIDI_SIGNAL_CONTROL_112 = Enum (240, _("control-112")),
276  MIDI_SIGNAL_CONTROL_113 = Enum (241, _("control-113")),
277  MIDI_SIGNAL_CONTROL_114 = Enum (242, _("control-114")),
278  MIDI_SIGNAL_CONTROL_115 = Enum (243, _("control-115")),
279  MIDI_SIGNAL_CONTROL_116 = Enum (244, _("control-116")),
280  MIDI_SIGNAL_CONTROL_117 = Enum (245, _("control-117")),
281  MIDI_SIGNAL_CONTROL_118 = Enum (246, _("control-118")),
282  MIDI_SIGNAL_CONTROL_119 = Enum (247, _("control-119")),
283  MIDI_SIGNAL_CONTROL_120 = Enum (248, _("Control 120 All Sound Off ITrigger")),
284  MIDI_SIGNAL_CONTROL_121 = Enum (249, _("Control 121 All Controllers Off ITrigger")),
285  MIDI_SIGNAL_CONTROL_122 = Enum (250, _("Control 122 Local Control Switch")),
286  MIDI_SIGNAL_CONTROL_123 = Enum (251, _("Control 123 All Notes Off ITrigger")),
287  MIDI_SIGNAL_CONTROL_124 = Enum (252, _("Control 124 Omni Mode Off ITrigger")),
288  MIDI_SIGNAL_CONTROL_125 = Enum (253, _("Control 125 Omni Mode On ITrigger")),
289  MIDI_SIGNAL_CONTROL_126 = Enum (254, _("Control 126 Monophonic Voices Mode")),
290  MIDI_SIGNAL_CONTROL_127 = Enum (255, _("Control 127 Polyphonic Mode On ITrigger")),
291 };
292 enum MidiControlType {
293  /* special cased signals */
294  MIDI_CONTROL_NONE = Enum (0, _("None")),
295  /* 14bit, continuous controls */
296  MIDI_CONTROL_CONTINUOUS_0 = Enum (64, _("Bank Select"), _("Continuous MIDI Control #1 - Bank Select")),
297  MIDI_CONTROL_CONTINUOUS_1 = Enum (65, _("Modulation Depth")),
298  MIDI_CONTROL_CONTINUOUS_2 = Enum (66, _("Breath Control")),
299  MIDI_CONTROL_CONTINUOUS_3 = Enum (67, _("Continuous 3")),
300  MIDI_CONTROL_CONTINUOUS_4 = Enum (68, _("Foot Controller")),
301  MIDI_CONTROL_CONTINUOUS_5 = Enum (69, _("Portamento Time")),
302  MIDI_CONTROL_CONTINUOUS_6 = Enum (70, _("Data Entry")),
303  MIDI_CONTROL_CONTINUOUS_7 = Enum (71, _("Volume")),
304  MIDI_CONTROL_CONTINUOUS_8 = Enum (72, _("Balance")),
305  MIDI_CONTROL_CONTINUOUS_9 = Enum (73, _("Continuous 9")),
306  MIDI_CONTROL_CONTINUOUS_10 = Enum (74, _("Panorama")),
307  MIDI_CONTROL_CONTINUOUS_11 = Enum (75, _("Expression")),
308  MIDI_CONTROL_CONTINUOUS_12 = Enum (76, _("Effect Control 1")),
309  MIDI_CONTROL_CONTINUOUS_13 = Enum (77, _("Effect Control 2")),
310  MIDI_CONTROL_CONTINUOUS_14 = Enum (78, _("Continuous 14")),
311  MIDI_CONTROL_CONTINUOUS_15 = Enum (79, _("Continuous 15")),
312  MIDI_CONTROL_CONTINUOUS_16 = Enum (80, _("General Purpose Controller 1")),
313  MIDI_CONTROL_CONTINUOUS_17 = Enum (81, _("General Purpose Controller 2")),
314  MIDI_CONTROL_CONTINUOUS_18 = Enum (82, _("General Purpose Controller 3")),
315  MIDI_CONTROL_CONTINUOUS_19 = Enum (83, _("General Purpose Controller 4")),
316  MIDI_CONTROL_CONTINUOUS_20 = Enum (84, _("Continuous 20")),
317  MIDI_CONTROL_CONTINUOUS_21 = Enum (85, _("Continuous 21")),
318  MIDI_CONTROL_CONTINUOUS_22 = Enum (86, _("Continuous 22")),
319  MIDI_CONTROL_CONTINUOUS_23 = Enum (87, _("Continuous 23")),
320  MIDI_CONTROL_CONTINUOUS_24 = Enum (88, _("Continuous 24")),
321  MIDI_CONTROL_CONTINUOUS_25 = Enum (89, _("Continuous 25")),
322  MIDI_CONTROL_CONTINUOUS_26 = Enum (90, _("Continuous 26")),
323  MIDI_CONTROL_CONTINUOUS_27 = Enum (91, _("Continuous 27")),
324  MIDI_CONTROL_CONTINUOUS_28 = Enum (92, _("Continuous 28")),
325  MIDI_CONTROL_CONTINUOUS_29 = Enum (93, _("Continuous 29")),
326  MIDI_CONTROL_CONTINUOUS_30 = Enum (94, _("Continuous 30")),
327  MIDI_CONTROL_CONTINUOUS_31 = Enum (95, _("Continuous 31")),
328  /* 7bit, literal channel controls, MSB values */
329  MIDI_CONTROL_0 = Enum (128, _("Control 0 Bank Select MSB")),
330  MIDI_CONTROL_1 = Enum (129, _("Control 1 Modulation Depth MSB")),
331  MIDI_CONTROL_2 = Enum (130, _("Control 2 Breath Control MSB")),
332  MIDI_CONTROL_3 = Enum (131, _("control-3")),
333  MIDI_CONTROL_4 = Enum (132, _("Control 4 Foot Controller MSB")),
334  MIDI_CONTROL_5 = Enum (133, _("Control 5 Portamento Time MSB")),
335  MIDI_CONTROL_6 = Enum (134, _("Control 6 Data Entry MSB")),
336  MIDI_CONTROL_7 = Enum (135, _("Control 7 Volume MSB")),
337  MIDI_CONTROL_8 = Enum (136, _("Control 8 Balance MSB")),
338  MIDI_CONTROL_9 = Enum (137, _("control-9")),
339  MIDI_CONTROL_10 = Enum (138, _("Control 10 Panorama MSB")),
340  MIDI_CONTROL_11 = Enum (139, _("Control 11 Expression MSB")),
341  MIDI_CONTROL_12 = Enum (140, _("Control 12 Effect Control 1 MSB")),
342  MIDI_CONTROL_13 = Enum (141, _("Control 13 Effect Control 2 MSB")),
343  MIDI_CONTROL_14 = Enum (142, _("control-14")),
344  MIDI_CONTROL_15 = Enum (143, _("control-15")),
345  MIDI_CONTROL_16 = Enum (144, _("Control 16 General Purpose Controller 1 MSB")),
346  MIDI_CONTROL_17 = Enum (145, _("Control 17 General Purpose Controller 2 MSB")),
347  MIDI_CONTROL_18 = Enum (146, _("Control 18 General Purpose Controller 3 MSB")),
348  MIDI_CONTROL_19 = Enum (147, _("Control 19 General Purpose Controller 4 MSB")),
349  MIDI_CONTROL_20 = Enum (148, _("control-20")),
350  MIDI_CONTROL_21 = Enum (149, _("control-21")),
351  MIDI_CONTROL_22 = Enum (150, _("control-22")),
352  MIDI_CONTROL_23 = Enum (151, _("control-23")),
353  MIDI_CONTROL_24 = Enum (152, _("control-24")),
354  MIDI_CONTROL_25 = Enum (153, _("control-25")),
355  MIDI_CONTROL_26 = Enum (154, _("control-26")),
356  MIDI_CONTROL_27 = Enum (155, _("control-27")),
357  MIDI_CONTROL_28 = Enum (156, _("control-28")),
358  MIDI_CONTROL_29 = Enum (157, _("control-29")),
359  MIDI_CONTROL_30 = Enum (158, _("control-30")),
360  MIDI_CONTROL_31 = Enum (159, _("control-31")),
361  /* 7bit, literal channel controls, LSB values */
362  MIDI_CONTROL_32 = Enum (160, _("Control 32 Bank Select LSB")),
363  MIDI_CONTROL_33 = Enum (161, _("Control 33 Modulation Depth LSB")),
364  MIDI_CONTROL_34 = Enum (162, _("Control 34 Breath Control LSB")),
365  MIDI_CONTROL_35 = Enum (163, _("control-35")),
366  MIDI_CONTROL_36 = Enum (164, _("Control 36 Foot Controller LSB")),
367  MIDI_CONTROL_37 = Enum (165, _("Control 37 Portamento Time LSB")),
368  MIDI_CONTROL_38 = Enum (166, _("Control 38 Data Entry LSB")),
369  MIDI_CONTROL_39 = Enum (167, _("Control 39 Volume LSB")),
370  MIDI_CONTROL_40 = Enum (168, _("Control 40 Balance LSB")),
371  MIDI_CONTROL_41 = Enum (169, _("control-41")),
372  MIDI_CONTROL_42 = Enum (170, _("Control 42 Panorama LSB")),
373  MIDI_CONTROL_43 = Enum (171, _("Control 43 Expression LSB")),
374  MIDI_CONTROL_44 = Enum (172, _("Control 44 Effect Control 1 LSB")),
375  MIDI_CONTROL_45 = Enum (173, _("Control 45 Effect Control 2 LSB")),
376  MIDI_CONTROL_46 = Enum (174, _("control-46")),
377  MIDI_CONTROL_47 = Enum (175, _("control-47")),
378  MIDI_CONTROL_48 = Enum (176, _("Control 48 General Purpose Controller 1 LSB")),
379  MIDI_CONTROL_49 = Enum (177, _("Control 49 General Purpose Controller 2 LSB")),
380  MIDI_CONTROL_50 = Enum (178, _("Control 50 General Purpose Controller 3 LSB")),
381  MIDI_CONTROL_51 = Enum (179, _("Control 51 General Purpose Controller 4 LSB")),
382  MIDI_CONTROL_52 = Enum (180, _("control-52")),
383  MIDI_CONTROL_53 = Enum (181, _("control-53")),
384  MIDI_CONTROL_54 = Enum (182, _("control-54")),
385  MIDI_CONTROL_55 = Enum (183, _("control-55")),
386  MIDI_CONTROL_56 = Enum (184, _("control-56")),
387  MIDI_CONTROL_57 = Enum (185, _("control-57")),
388  MIDI_CONTROL_58 = Enum (186, _("control-58")),
389  MIDI_CONTROL_59 = Enum (187, _("control-59")),
390  MIDI_CONTROL_60 = Enum (188, _("control-60")),
391  MIDI_CONTROL_61 = Enum (189, _("control-61")),
392  MIDI_CONTROL_62 = Enum (190, _("control-62")),
393  MIDI_CONTROL_63 = Enum (191, _("control-63")),
394  /* 7bit, literal channel controls */
395  MIDI_CONTROL_64 = Enum (192, _("Control 64 Damper Pedal Switch (Sustain)")),
396  MIDI_CONTROL_65 = Enum (193, _("Control 65 Portamento Switch")),
397  MIDI_CONTROL_66 = Enum (194, _("Control 66 Sustenuto Switch")),
398  MIDI_CONTROL_67 = Enum (195, _("Control 67 Soft Switch")),
399  MIDI_CONTROL_68 = Enum (196, _("Control 68 Legato Pedal Switch")),
400  MIDI_CONTROL_69 = Enum (197, _("Control 69 Hold Pedal Switch")),
401  MIDI_CONTROL_70 = Enum (198, _("Control 70 Sound Variation")),
402  MIDI_CONTROL_71 = Enum (199, _("Control 71 Filter Resonance (Timbre)")),
403  MIDI_CONTROL_72 = Enum (200, _("Control 72 Sound Release Time")),
404  MIDI_CONTROL_73 = Enum (201, _("Control 73 Sound Attack Time")),
405  MIDI_CONTROL_74 = Enum (202, _("Control 74 Sound Brightness")),
406  MIDI_CONTROL_75 = Enum (203, _("Control 75 Sound Decay Time")),
407  MIDI_CONTROL_76 = Enum (204, _("Control 76 Vibrato Rate")),
408  MIDI_CONTROL_77 = Enum (205, _("Control 77 Vibrato Depth")),
409  MIDI_CONTROL_78 = Enum (206, _("Control 78 Vibrato Delay")),
410  MIDI_CONTROL_79 = Enum (207, _("Control 79 Sound Control 10")),
411  MIDI_CONTROL_80 = Enum (208, _("Control 80 General Purpose Switch 5")),
412  MIDI_CONTROL_81 = Enum (209, _("Control 81 General Purpose Switch 6")),
413  MIDI_CONTROL_82 = Enum (210, _("Control 82 General Purpose Switch 7")),
414  MIDI_CONTROL_83 = Enum (211, _("Control 83 General Purpose Switch 8")),
415  MIDI_CONTROL_84 = Enum (212, _("Control 84 Portamento Control (Note)")),
416  MIDI_CONTROL_85 = Enum (213, _("control-85")),
417  MIDI_CONTROL_86 = Enum (214, _("control-86")),
418  MIDI_CONTROL_87 = Enum (215, _("control-87")),
419  MIDI_CONTROL_88 = Enum (216, _("control-88")),
420  MIDI_CONTROL_89 = Enum (217, _("control-89")),
421  MIDI_CONTROL_90 = Enum (218, _("control-90")),
422  MIDI_CONTROL_91 = Enum (219, _("Control 91 Reverb Depth")),
423  MIDI_CONTROL_92 = Enum (220, _("Control 92 Tremolo Depth")),
424  MIDI_CONTROL_93 = Enum (221, _("Control 93 Chorus Depth")),
425  MIDI_CONTROL_94 = Enum (222, _("Control 93 Detune Depth")),
426  MIDI_CONTROL_95 = Enum (223, _("Control 95 Phase Depth")),
427  MIDI_CONTROL_96 = Enum (224, _("Control 96 Data Increment Trigger")),
428  MIDI_CONTROL_97 = Enum (225, _("Control 97 Data Decrement Trigger")),
429  MIDI_CONTROL_98 = Enum (226, _("Control 98 Non-Registered Parameter MSB")),
430  MIDI_CONTROL_99 = Enum (227, _("Control 99 Non-Registered Parameter LSB")),
431  MIDI_CONTROL_100 = Enum (228, _("Control 100 Registered Parameter MSB")),
432  MIDI_CONTROL_101 = Enum (229, _("Control 101 Registered Parameter LSB")),
433  MIDI_CONTROL_102 = Enum (230, _("control-102")),
434  MIDI_CONTROL_103 = Enum (231, _("control-103")),
435  MIDI_CONTROL_104 = Enum (232, _("control-104")),
436  MIDI_CONTROL_105 = Enum (233, _("control-105")),
437  MIDI_CONTROL_106 = Enum (234, _("control-106")),
438  MIDI_CONTROL_107 = Enum (235, _("control-107")),
439  MIDI_CONTROL_108 = Enum (236, _("control-108")),
440  MIDI_CONTROL_109 = Enum (237, _("control-109")),
441  MIDI_CONTROL_110 = Enum (238, _("control-110")),
442  MIDI_CONTROL_111 = Enum (239, _("control-111")),
443  MIDI_CONTROL_112 = Enum (240, _("control-112")),
444  MIDI_CONTROL_113 = Enum (241, _("control-113")),
445  MIDI_CONTROL_114 = Enum (242, _("control-114")),
446  MIDI_CONTROL_115 = Enum (243, _("control-115")),
447  MIDI_CONTROL_116 = Enum (244, _("control-116")),
448  MIDI_CONTROL_117 = Enum (245, _("control-117")),
449  MIDI_CONTROL_118 = Enum (246, _("control-118")),
450  MIDI_CONTROL_119 = Enum (247, _("control-119")),
451  MIDI_CONTROL_120 = Enum (248, _("Control 120 All Sound Off ITrigger")),
452  MIDI_CONTROL_121 = Enum (249, _("Control 121 All Controllers Off ITrigger")),
453  MIDI_CONTROL_122 = Enum (250, _("Control 122 Local Control Switch")),
454  MIDI_CONTROL_123 = Enum (251, _("Control 123 All Notes Off ITrigger")),
455  MIDI_CONTROL_124 = Enum (252, _("Control 124 Omni Mode Off ITrigger")),
456  MIDI_CONTROL_125 = Enum (253, _("Control 125 Omni Mode On ITrigger")),
457  MIDI_CONTROL_126 = Enum (254, _("Control 126 Monophonic Voices Mode")),
458  MIDI_CONTROL_127 = Enum (255, _("Control 127 Polyphonic Mode On ITrigger")),
459 };
460 enum MidiChannelEventType {
461  MIDI_EVENT_NONE = 0,
462  /* channel voice messages */
463  MIDI_EVENT_NOTE_OFF,
464  MIDI_EVENT_NOTE_ON,
465  MIDI_EVENT_KEY_PRESSURE,
466  MIDI_EVENT_CONTROL_CHANGE,
467  MIDI_EVENT_PROGRAM_CHANGE,
468  MIDI_EVENT_CHANNEL_PRESSURE,
469  MIDI_EVENT_PITCH_BEND,
470  /* system common messages */
471  MIDI_EVENT_SYS_EX,
472  MIDI_EVENT_SONG_POINTER,
473  MIDI_EVENT_SONG_SELECT,
474  MIDI_EVENT_TUNE,
475  /* system realtime messages */
476  MIDI_EVENT_TIMING_CLOCK,
477  MIDI_EVENT_SONG_START,
478  MIDI_EVENT_SONG_CONTINUE,
479  MIDI_EVENT_SONG_STOP,
480  MIDI_EVENT_ACTIVE_SENSING,
481  MIDI_EVENT_SYSTEM_RESET,
482 };
483 record MidiChannelEvent
484 {
485  MidiChannelEventType event_type;
486  Int channel = SfiInt ("Channel", "", 0, 0, 99, 1, ":readwrite"); // FIXME: MAX_MIDI_CHANNEL
487  Num tick_stamp = SfiNum ("Time Stamp", "", 0, 0, SFI_MAXNUM, 0, STANDARD);
488  /* note (on/off/pressure) */
489  Real frequency = Freq ("Frequency", "", KAMMER_FREQ, ":readwrite");
490  Real velocity = SfiReal ("Velocity", "", 1, 0, 1.0, 0.1, ":readwrite");
491  /* control change */
492  Int control = SfiInt ("Control Number", "", 0, 0, 1024, 8, ":readwrite");
493  Real value = SfiReal ("Value", "", 0, -1, +1, 0.1, ":readwrite");
494  /* program change */
495  Int program = SfiInt ("Program", "", 0, 0, 0x7f, 0x10, ":readwrite");
496  /* channel pressure */
497  Real intensity = SfiReal ("Intensity", "", 0, 0, 1.0, 0.1, ":readwrite");
498  /* pitch bend */
499  Real pitch_bend = SfiReal ("Pitch Bend", "", 0, -1, +1, 0.1, ":readwrite");
500  /* song pointer */
501  Int song_pointer = SfiInt ("Song Pointer", "", 0, 0, 0x3fff, 0x80, ":readwrite");
502  /* song select */
503  Int song_number = SfiInt ("Song Number", "", 0, 0, 0x7f, 0x10, ":readwrite");
504 };
505 sequence NoteSeq {
506  Int notes = Note ("Note", "", KAMMER_NOTE, ":readwrite"); /* FIXME: s/notes/note/ for pspecs, but not the C API */
507 };
508 interface Item;
509 sequence ItemSeq {
510  Info blurb = ("A list of BSE items or derived types.");
511  Item items;
512 };
513 record PropertyCandidates {
514  Info blurb = ("A strcuture describing tentative property values.");
515  String label;
516  String tooltip;
517  ItemSeq items;
518  TypeSeq partitions = SfiSeq ("Type Partitions", "List of types which may logically partition the list of items by type discrimination", STANDARD);
519 };
520 record PartNote
521 {
522  Info blurb = "Part specific note representation";
523  Int id = SfiUInt ("ID", "", 0, ":readwrite");
524  Int channel = SfiInt ("Channel", "", 0, 0, MAXINT, 1, ":readwrite");
525  Int tick = SfiInt ("Tick", "", 0, 0, MAXINT, 1, ":readwrite");
526  Int duration = SfiInt ("Duration", "Duration in number of ticks", 0, 0, MAXINT, 1, ":readwrite");
527  Int note = Note ("Note", "", KAMMER_NOTE, ":readwrite");
528  Int fine_tune = SfiInt ("Fine Tune", "", 0, MIN_FINE_TUNE, MAX_FINE_TUNE, 1, ":readwrite");
529  Real velocity = SfiReal ("Velocity", "", 1, 0, 1.0, 0.1, ":readwrite");
530  Bool selected = SfiBool ("Selected", "", FALSE, ":readwrite");
531 };
532 sequence PartNoteSeq {
533  Info blurb = "A list of part notes";
534  PartNote pnotes;
535 };
536 record PartControl
537 {
538  Info blurb = "Part specific control event representation";
539  Int id = SfiUInt ("ID", "", 0, ":readwrite");
540  Int tick = SfiInt ("Tick", "", 0, 0, MAXINT, 1, ":readwrite");
541  MidiSignalType control_type;
542  Real value = SfiReal ("Value", "", 0, -1, +1, 0.1, ":readwrite");
543  Bool selected = SfiBool ("Selected", "", FALSE, ":readwrite");
544 };
545 sequence PartControlSeq {
546  Info blurb = "A list of part control events";
547  PartControl pcontrols;
548 };
549 record NoteDescription
550 {
551  MusicalTuningType musical_tuning;
552  Int note = Note ("Note", "", KAMMER_NOTE, ":readwrite");
553  Int octave = Octave ("Octave", "", KAMMER_OCTAVE, ":readwrite");
554  Real freq = Freq ("Frequency", "", KAMMER_FREQ, ":readwrite");
555  Int fine_tune = FineTune ("Fine Tune", "", ":readwrite");
556  Int semitone = SfiInt ("Semitone", "", 0, 0, 11, 1, ":readwrite");
557  Bool upshift;
558  Int letter = SfiInt ("Letter", "International abbreviation letter for this note", 64, 32, 126, 1, ":readwrite");
559  String name = String ("Name", "", "", ":readwrite");
560  /* constants */
561  Int max_fine_tune = SfiInt ("Max Fine Tune", "", MAX_FINE_TUNE, MAX_FINE_TUNE, MAX_FINE_TUNE, 0, ":readable");
562  Int kammer_note = SfiInt ("Kammer Note", "", KAMMER_NOTE, KAMMER_NOTE, KAMMER_NOTE, 0, ":readable");
563  Info blurb = "A note description provides all necessary details about a specific note. "
564  "Various procedures exist to retrieve a note description; given different "
565  "key values. The max_fine_tune and kammer_note fields are constants, which "
566  "are provided for compatibility reasons and will vanish in future APIs.";
567 };
568 record NoteSequence
569 {
570  Int offset = Note ("Note Offset", "Center/base note", KAMMER_NOTE, ":readwrite");
571  NoteSeq notes = SfiSeq ("Notes", "Sequence of notes", ":readwrite");
572 };
573 sequence PixelSeq {
574  Int pixels;
575 };
576 record Icon
577 {
578  Info blurb = "BSE icon representation.";
579  Int width = SfiInt ("Width", "Width in pixels or 0 for no icon", 0, 0, MAXINT, 1, ":readwrite");
580  Int height = SfiInt ("Height", "Height in pixels or 0 for no icon", 0, 0, MAXINT, 1, ":readwrite");
581  PixelSeq pixel_seq = SfiSeq ("Pixels", "Pixel array of width*height ARGB pixels", ":readwrite");
582 };
583 record Category
584 {
585  Int category_id = SfiInt ("Category ID", "", 1, 1, G_MAXINT, 1, ":readwrite");
586  String category;
587  Int mindex;
588  Int lindex;
589  String type;
590  Icon icon;
591 };
592 sequence CategorySeq {
593  Category cats;
594 };
595 record Dot
596 {
597  Real x;
598  Real y;
599 };
600 sequence DotSeq {
601  Dot dots;
602 };
603 /* BSE Part structures */
604 interface Part;
605 interface Track;
606 record PartLink {
607  Track track;
608  Int tick = SfiInt ("Tick", "", 0, 0, G_MAXINT, 384, STANDARD);
609  Part part;
610  Int duration = SfiInt ("Duration", "", 0, 0, G_MAXINT, 384, STANDARD);
611  // Int count; /* 1 + repetitions */
612 };
613 sequence PartLinkSeq {
614  PartLink plinks;
615 };
616 /* BSE Track structures */
617 record TrackPart {
618  Int tick = SfiInt ("Tick", "", 0, 0, G_MAXINT, 384, STANDARD);
619  Part part;
620  Int duration = SfiInt ("Duration", "", 0, 0, G_MAXINT, 384, STANDARD);
621 };
622 sequence TrackPartSeq {
623  TrackPart tparts;
624 };
625 /* BSE Song timing structure */
626 record SongTiming {
627  /* song position timing applies to */
628  Int tick = SfiInt ("Current tick", "", 0, 0, G_MAXINT, 384, STANDARD);
629  /* tempo */
630  Real bpm = SfiReal ("Beats per minute", "", 120, BSE_MIN_BPM, BSE_MAX_BPM, 10, STANDARD);
631  /* signature */
632  Int numerator = SfiInt ("Numerator", "Number of notes per measure", 4, 1, 256, 2, STANDARD);
633  Int denominator = SfiInt ("Denominator", "Type of notes counted per measure", 4, 1, 256, 2, STANDARD);
634  /* sequencer timing */
635  Int tpqn = SfiInt ("Ticks per quarter note", "", 384, 1, G_MAXINT, 12, STANDARD);
636  Int tpt = SfiInt ("Ticks per tact", "", 384, 1, G_MAXINT, 12, STANDARD);
637  /* playback timing */
638  Real stamp_ticks = SfiReal ("Ticks per stamp increment (valid only during playback)", "", 384, 1, G_MAXINT, 12, STANDARD);
639 };
640 record SampleFileInfo {
641  String file = SfiString ("Filename", "", "", STANDARD);
642  Int size = SfiInt ("File Size", "", 0, 0, G_MAXINT, 0, STANDARD);
643  Num mtime = SfiNum ("Modification Time", "", 0, 0, SFI_MAXNUM, 0, STANDARD);
644  String loader = SfiString ("Loader", "", "", STANDARD);
645  StringSeq waves = SfiSeq ("", "", STANDARD);
646  Int error = SfiInt ("BseErrorType", "", 0, 0, G_MAXINT, 0, STANDARD); // FIXME: use BseErrorType here
647 };
648 interface Janitor;
649 
650 // == BSE Global Config ==
651 Const DEFAULT_AUTHOR = "\357\277\271\357\277\272{{bse.idl/default-author}}\357\277\273";
652 Const DEFAULT_LICENSE = "\357\277\271\357\277\272{{bse.idl/default-license}}\357\277\273";
653 Const USER_DATA_PATH = "\357\277\271\357\277\272{{bse.idl/user-data-path}}\357\277\273";
654 Const DEFAULT_SAMPLE_PATH = USER_DATA_PATH "samples";
655 Const DEFAULT_EFFECTS_PATH = USER_DATA_PATH "effects";
656 Const DEFAULT_INSTRUMENTS_PATH = USER_DATA_PATH "instruments";
657 Const DEFAULT_SCRIPTS_PATH = USER_DATA_PATH "scripts";
658 Const DEFAULT_PLUGINS_PATH = USER_DATA_PATH "plugins";
659 
660 record GConfig {
661  group _("Synthesis Settings") {
662  Int synth_latency =
663  SfiInt (_("Latency [ms]"),
664  _("Processing duration between input and output of a single sample, smaller values increase CPU load"),
665  50, 1, 2000, 5, STANDARD);
666  Int synth_mixing_freq =
667  SfiInt (_("Synth Mixing Frequency"),
668  _("Synthesis mixing frequency, common values are: 22050, 44100, 48000"),
669  44100, 8000, 192000, 0, STANDARD);
670  Int synth_control_freq =
671  SfiInt (_("Synth Control Frequency"),
672  _("Frequency at which control values are evaluated, "
673  "should be much smaller than Synth Mixing Frequency to reduce CPU load"),
674  1000, 1, 192000, 0, STANDARD);
675  };
676  group _("MIDI") {
677  Bool invert_sustain = SfiBool (_("Invert Sustain Pedal"),
678  _("Invert the state of sustain (damper) pedal so on/off meanings are reversed"),
679  FALSE, STANDARD);
680  };
681  group _("Default Values") {
682  String author_default = SfiString (_("Default Author"), _("Default value for 'Author' fields"),
683  DEFAULT_AUTHOR, STANDARD);
684  String license_default = SfiString (_("Default License"), _("Default value for 'License' fields"),
685  DEFAULT_LICENSE, STANDARD);
686  };
687  group _("Search Paths") {
688  String sample_path = SfiString (_("Sample Path"),
689  _("Search path of directories, seperated by \";\", used to find audio samples."),
690  DEFAULT_SAMPLE_PATH, STANDARD ":searchpath");
691  String effect_path = SfiString (_("Effect Path"),
692  _("Search path of directories, seperated by \";\", used to find BSE effect files."),
693  DEFAULT_EFFECTS_PATH, STANDARD ":searchpath");
694  String instrument_path = SfiString (_("Instrument Path"),
695  _("Search path of directories, seperated by \";\", used to find BSE instrument files."),
696  DEFAULT_INSTRUMENTS_PATH, STANDARD ":searchpath");
697  String script_path = SfiString (_("Script Path"),
698  _("Search path of directories, seperated by \";\", used to find BSE scheme scripts."),
699  DEFAULT_SCRIPTS_PATH, STANDARD ":searchpath");
700  String plugin_path = SfiString (_("Plugin Path"),
701  _("Search path of directories, seperated by \";\", used to find BSE plugins. This path "
702  "is searched for in addition to the standard BSE plugin location on this system."),
703  DEFAULT_PLUGINS_PATH, STANDARD ":searchpath");
704  String ladspa_path = SfiString (_("LADSPA Path"),
705  _("Search path of directories, seperated by \";\", used to find LADSPA plugins. This "
706  "path is searched for in addition to the standard LADSPA location on this system. "
707  "LADSPA is the Linux Audio Developer's Simple Plugin API, more informations about "
708  "LADSPA plugins can be found at http://www.ladspa.org/."),
709  "", STANDARD ":searchpath");
710  };
711 };
712 
713 } // Bse
Definition: sficxx.hh:15
int width() const
int height() const