BEAST - Free Software Audio Synthesizer and Tracker  0.9.2
bseapi.idl
Go to the documentation of this file.
1  // Licensed GNU LGPL v3 or later: http://www.gnu.org/licenses/lgpl.html -*-mode:c++;-*-
7 namespace Bse {
8 
9 // == Type Constants ==
10 Const MAXINT32 = +4294967295;
11 Const MAXINT31 = +2147483647;
12 Const MININT31 = -2147483648;
13 Const MAXFLOAT64 = 1.7976931348623157e+308;
14 
15 // == Enums ==
16 enum ErrorType {
17  ERROR_NONE = Enum (0, "", _("OK")),
18  ERROR_INTERNAL = Enum (1, "", _("Internal error (please report)")),
19  ERROR_UNKNOWN = Enum (2, "", _("Unknown error")),
20  ERROR_IO = Enum (3, "", _("Input/output error")),
21  ERROR_PERMS = Enum (4, "", _("Insufficient permissions")),
22  // file errors
23  ERROR_FILE_BUSY = Enum (5, "", _("Device or resource busy")),
24  ERROR_FILE_EXISTS = Enum (6, "", _("File exists already")),
25  ERROR_FILE_EOF = Enum (7, "", _("End of file")),
26  ERROR_FILE_EMPTY = Enum (8, "", _("File empty")),
27  ERROR_FILE_NOT_FOUND = Enum (9, "", _("No such file, device or directory")),
28  ERROR_FILE_IS_DIR = Enum (10, "", _("Is a directory")),
29  ERROR_FILE_OPEN_FAILED = Enum (11, "", _("Open failed")),
30  ERROR_FILE_SEEK_FAILED = Enum (12, "", _("Seek failed")),
31  ERROR_FILE_READ_FAILED = Enum (13, "", _("Read failed")),
32  ERROR_FILE_WRITE_FAILED = Enum (14, "", _("Write failed")),
33  // out of resource conditions
34  ERROR_MANY_FILES = Enum (15, "", _("Too many open files")),
35  ERROR_NO_FILES = Enum (16, "", _("Too many open files in system")),
36  ERROR_NO_SPACE = Enum (17, "", _("No space left on device")),
37  ERROR_NO_MEMORY = Enum (18, "", _("Out of memory")),
38  // content errors
39  ERROR_NO_HEADER = Enum (19, "", _("Failed to detect header")),
40  ERROR_NO_SEEK_INFO = Enum (20, "", _("Failed to retrieve seek information")),
41  ERROR_NO_DATA = Enum (21, "", _("No data available")),
42  ERROR_DATA_CORRUPT = Enum (22, "", _("Data corrupt")),
43  ERROR_WRONG_N_CHANNELS = Enum (23, "", _("Wrong number of channels")),
44  ERROR_FORMAT_INVALID = Enum (24, "", _("Invalid format")),
45  ERROR_FORMAT_UNKNOWN = Enum (25, "", _("Unknown format")),
46  ERROR_DATA_UNMATCHED = Enum (26, "", _("Requested data values unmatched")),
47  // miscellaneous errors
48  ERROR_TEMP = Enum (27, "", _("Temporary error")),
49  ERROR_WAVE_NOT_FOUND = Enum (28, "", _("No such wave")),
50  ERROR_CODEC_FAILURE = Enum (29, "", _("Codec failure")),
51  ERROR_UNIMPLEMENTED = Enum (30, "", _("Functionality not implemented")),
52  ERROR_INVALID_PROPERTY = Enum (31, "", _("Invalid object property")),
53  ERROR_INVALID_MIDI_CONTROL = Enum (32, "", _("Invalid MIDI control type")),
54  ERROR_PARSE_ERROR = Enum (33, "", _("Parsing error")),
55  ERROR_SPAWN = Enum (34, "", _("Failed to spawn child process")),
56  // Device errors
57  ERROR_DEVICE_NOT_AVAILABLE = Enum (35, "", _("No device (driver) available")),
58  ERROR_DEVICE_ASYNC = Enum (36, "", _("Device not async capable")),
59  ERROR_DEVICE_BUSY = Enum (37, "", _("Device busy")),
60  ERROR_DEVICE_FORMAT = Enum (38, "", _("Failed to configure device format")),
61  ERROR_DEVICE_BUFFER = Enum (39, "", _("Failed to configure device buffer")),
62  ERROR_DEVICE_LATENCY = Enum (40, "", _("Failed to configure device latency")),
63  ERROR_DEVICE_CHANNELS = Enum (41, "", _("Failed to configure number of device channels")),
64  ERROR_DEVICE_FREQUENCY = Enum (42, "", _("Failed to configure device frequency")),
65  ERROR_DEVICES_MISMATCH = Enum (43, "", _("Device configurations mismatch")),
66  // BseSource errors
67  ERROR_SOURCE_NO_SUCH_MODULE = Enum (44, "", _("No such synthesis module")),
68  ERROR_SOURCE_NO_SUCH_ICHANNEL = Enum (45, "", _("No such input channel")),
69  ERROR_SOURCE_NO_SUCH_OCHANNEL = Enum (46, "", _("No such output channel")),
70  ERROR_SOURCE_NO_SUCH_CONNECTION = Enum (47, "", _("Input/Output channels not connected")),
71  ERROR_SOURCE_PRIVATE_ICHANNEL = Enum (48, "", _("Input channel is private")),
72  ERROR_SOURCE_ICHANNEL_IN_USE = Enum (49, "", _("Input channel already in use")),
73  ERROR_SOURCE_CHANNELS_CONNECTED = Enum (50, "", _("Input/output channels already connected")),
74  ERROR_SOURCE_CONNECTION_INVALID = Enum (51, "", _("Invalid synthesis module connection")),
75  ERROR_SOURCE_PARENT_MISMATCH = Enum (52, "", _("Parent mismatch")),
76  ERROR_SOURCE_BAD_LOOPBACK = Enum (53, "", _("Bad loopback")),
77  ERROR_SOURCE_BUSY = Enum (54, "", _("Synthesis module currently busy")),
78  ERROR_SOURCE_TYPE_INVALID = Enum (55, "", _("Invalid synthsis module type")),
79  // BseProcedure errors
80  ERROR_PROC_NOT_FOUND = Enum (56, "", _("No such procedure")),
81  ERROR_PROC_BUSY = Enum (57, "", _("Procedure currently busy")),
82  ERROR_PROC_PARAM_INVAL = Enum (58, "", _("Procedure parameter invalid")),
83  ERROR_PROC_EXECUTION = Enum (59, "", _("Procedure execution failed")),
84  ERROR_PROC_ABORT = Enum (60, "", _("Procedure execution aborted")),
85  // various procedure errors
86  ERROR_NO_ENTRY = Enum (61, "", _("No such entry")),
87  ERROR_NO_EVENT = Enum (62, "", _("No such event")),
88  ERROR_NO_TARGET = Enum (63, "", _("No target")),
89  ERROR_NOT_OWNER = Enum (64, "", _("Ownership mismatch")),
90  ERROR_INVALID_OFFSET = Enum (65, "", _("Invalid offset")),
91  ERROR_INVALID_DURATION = Enum (66, "", _("Invalid duration")),
92  ERROR_INVALID_OVERLAP = Enum (67, "", _("Invalid overlap")),
93 };
94 
95 enum MidiSignalType {
96  // special case signals
97  MIDI_SIGNAL_PROGRAM = Enum (1, _("Program Change")), // 7bit
98  MIDI_SIGNAL_PRESSURE = Enum (2, _("Channel Pressure")), // 7bit
99  MIDI_SIGNAL_PITCH_BEND = Enum (3, _("Pitch Bend")), // 14bit
100  MIDI_SIGNAL_VELOCITY = Enum (4, _("Note Velocity")),
101  MIDI_SIGNAL_FINE_TUNE = Enum (5, _("Note Fine Tune")),
102  // 14bit, continuous controls
103  MIDI_SIGNAL_CONTINUOUS_0 = Enum (64, _("Bank Select")),
104  MIDI_SIGNAL_CONTINUOUS_1 = Enum (65, _("Modulation Depth")),
105  MIDI_SIGNAL_CONTINUOUS_2 = Enum (66, _("Breath Control")),
106  MIDI_SIGNAL_CONTINUOUS_3 = Enum (67, _("Continuous 3")),
107  MIDI_SIGNAL_CONTINUOUS_4 = Enum (68, _("Foot Controller")),
108  MIDI_SIGNAL_CONTINUOUS_5 = Enum (69, _("Portamento Time")),
109  MIDI_SIGNAL_CONTINUOUS_6 = Enum (70, _("Data Entry")),
110  MIDI_SIGNAL_CONTINUOUS_7 = Enum (71, _("Volume")),
111  MIDI_SIGNAL_CONTINUOUS_8 = Enum (72, _("Balance")),
112  MIDI_SIGNAL_CONTINUOUS_9 = Enum (73, _("Continuous 9")),
113  MIDI_SIGNAL_CONTINUOUS_10 = Enum (74, _("Panorama")),
114  MIDI_SIGNAL_CONTINUOUS_11 = Enum (75, _("Expression")),
115  MIDI_SIGNAL_CONTINUOUS_12 = Enum (76, _("Effect Control 1")),
116  MIDI_SIGNAL_CONTINUOUS_13 = Enum (77, _("Effect Control 2")),
117  MIDI_SIGNAL_CONTINUOUS_14 = Enum (78, _("Continuous 14")),
118  MIDI_SIGNAL_CONTINUOUS_15 = Enum (79, _("Continuous 15")),
119  MIDI_SIGNAL_CONTINUOUS_16 = Enum (80, _("General Purpose Controller 1")),
120  MIDI_SIGNAL_CONTINUOUS_17 = Enum (81, _("General Purpose Controller 2")),
121  MIDI_SIGNAL_CONTINUOUS_18 = Enum (82, _("General Purpose Controller 3")),
122  MIDI_SIGNAL_CONTINUOUS_19 = Enum (83, _("General Purpose Controller 4")),
123  MIDI_SIGNAL_CONTINUOUS_20 = Enum (84, _("Continuous 20")),
124  MIDI_SIGNAL_CONTINUOUS_21 = Enum (85, _("Continuous 21")),
125  MIDI_SIGNAL_CONTINUOUS_22 = Enum (86, _("Continuous 22")),
126  MIDI_SIGNAL_CONTINUOUS_23 = Enum (87, _("Continuous 23")),
127  MIDI_SIGNAL_CONTINUOUS_24 = Enum (88, _("Continuous 24")),
128  MIDI_SIGNAL_CONTINUOUS_25 = Enum (89, _("Continuous 25")),
129  MIDI_SIGNAL_CONTINUOUS_26 = Enum (90, _("Continuous 26")),
130  MIDI_SIGNAL_CONTINUOUS_27 = Enum (91, _("Continuous 27")),
131  MIDI_SIGNAL_CONTINUOUS_28 = Enum (92, _("Continuous 28")),
132  MIDI_SIGNAL_CONTINUOUS_29 = Enum (93, _("Continuous 29")),
133  MIDI_SIGNAL_CONTINUOUS_30 = Enum (94, _("Continuous 30")),
134  MIDI_SIGNAL_CONTINUOUS_31 = Enum (95, _("Continuous 31")),
135  // 14bit, special case signals
136  MIDI_SIGNAL_CONSTANT_HIGH = Enum (96, _("Constant HIGH")),
137  MIDI_SIGNAL_CONSTANT_CENTER = Enum (97, _("Constant CENTER")),
138  MIDI_SIGNAL_CONSTANT_LOW = Enum (98, _("Constant LOW")),
139  MIDI_SIGNAL_CONSTANT_NEGATIVE_CENTER = Enum (99, _("Constant Negative CENTER")),
140  MIDI_SIGNAL_CONSTANT_NEGATIVE_HIGH = Enum (100, _("Constant Negative HIGH")),
141  MIDI_SIGNAL_PARAMETER = Enum (101, _("Registered Parameter")),
142  MIDI_SIGNAL_NON_PARAMETER = Enum (102, _("Non-Registered Parameter")),
143  // 7bit, literal channel controls, MSB values
144  MIDI_SIGNAL_CONTROL_0 = Enum (128, _("Control 0 Bank Select MSB")),
145  MIDI_SIGNAL_CONTROL_1 = Enum (129, _("Control 1 Modulation Depth MSB")),
146  MIDI_SIGNAL_CONTROL_2 = Enum (130, _("Control 2 Breath Control MSB")),
147  MIDI_SIGNAL_CONTROL_3 = Enum (131, _("control-3")),
148  MIDI_SIGNAL_CONTROL_4 = Enum (132, _("Control 4 Foot Controller MSB")),
149  MIDI_SIGNAL_CONTROL_5 = Enum (133, _("Control 5 Portamento Time MSB")),
150  MIDI_SIGNAL_CONTROL_6 = Enum (134, _("Control 6 Data Entry MSB")),
151  MIDI_SIGNAL_CONTROL_7 = Enum (135, _("Control 7 Volume MSB")),
152  MIDI_SIGNAL_CONTROL_8 = Enum (136, _("Control 8 Balance MSB")),
153  MIDI_SIGNAL_CONTROL_9 = Enum (137, _("control-9")),
154  MIDI_SIGNAL_CONTROL_10 = Enum (138, _("Control 10 Panorama MSB")),
155  MIDI_SIGNAL_CONTROL_11 = Enum (139, _("Control 11 Expression MSB")),
156  MIDI_SIGNAL_CONTROL_12 = Enum (140, _("Control 12 Effect Control 1 MSB")),
157  MIDI_SIGNAL_CONTROL_13 = Enum (141, _("Control 13 Effect Control 2 MSB")),
158  MIDI_SIGNAL_CONTROL_14 = Enum (142, _("control-14")),
159  MIDI_SIGNAL_CONTROL_15 = Enum (143, _("control-15")),
160  MIDI_SIGNAL_CONTROL_16 = Enum (144, _("Control 16 General Purpose Controller 1 MSB")),
161  MIDI_SIGNAL_CONTROL_17 = Enum (145, _("Control 17 General Purpose Controller 2 MSB")),
162  MIDI_SIGNAL_CONTROL_18 = Enum (146, _("Control 18 General Purpose Controller 3 MSB")),
163  MIDI_SIGNAL_CONTROL_19 = Enum (147, _("Control 19 General Purpose Controller 4 MSB")),
164  MIDI_SIGNAL_CONTROL_20 = Enum (148, _("control-20")),
165  MIDI_SIGNAL_CONTROL_21 = Enum (149, _("control-21")),
166  MIDI_SIGNAL_CONTROL_22 = Enum (150, _("control-22")),
167  MIDI_SIGNAL_CONTROL_23 = Enum (151, _("control-23")),
168  MIDI_SIGNAL_CONTROL_24 = Enum (152, _("control-24")),
169  MIDI_SIGNAL_CONTROL_25 = Enum (153, _("control-25")),
170  MIDI_SIGNAL_CONTROL_26 = Enum (154, _("control-26")),
171  MIDI_SIGNAL_CONTROL_27 = Enum (155, _("control-27")),
172  MIDI_SIGNAL_CONTROL_28 = Enum (156, _("control-28")),
173  MIDI_SIGNAL_CONTROL_29 = Enum (157, _("control-29")),
174  MIDI_SIGNAL_CONTROL_30 = Enum (158, _("control-30")),
175  MIDI_SIGNAL_CONTROL_31 = Enum (159, _("control-31")),
176  // 7bit, literal channel controls, LSB values
177  MIDI_SIGNAL_CONTROL_32 = Enum (160, _("Control 32 Bank Select LSB")),
178  MIDI_SIGNAL_CONTROL_33 = Enum (161, _("Control 33 Modulation Depth LSB")),
179  MIDI_SIGNAL_CONTROL_34 = Enum (162, _("Control 34 Breath Control LSB")),
180  MIDI_SIGNAL_CONTROL_35 = Enum (163, _("control-35")),
181  MIDI_SIGNAL_CONTROL_36 = Enum (164, _("Control 36 Foot Controller LSB")),
182  MIDI_SIGNAL_CONTROL_37 = Enum (165, _("Control 37 Portamento Time LSB")),
183  MIDI_SIGNAL_CONTROL_38 = Enum (166, _("Control 38 Data Entry LSB")),
184  MIDI_SIGNAL_CONTROL_39 = Enum (167, _("Control 39 Volume LSB")),
185  MIDI_SIGNAL_CONTROL_40 = Enum (168, _("Control 40 Balance LSB")),
186  MIDI_SIGNAL_CONTROL_41 = Enum (169, _("control-41")),
187  MIDI_SIGNAL_CONTROL_42 = Enum (170, _("Control 42 Panorama LSB")),
188  MIDI_SIGNAL_CONTROL_43 = Enum (171, _("Control 43 Expression LSB")),
189  MIDI_SIGNAL_CONTROL_44 = Enum (172, _("Control 44 Effect Control 1 LSB")),
190  MIDI_SIGNAL_CONTROL_45 = Enum (173, _("Control 45 Effect Control 2 LSB")),
191  MIDI_SIGNAL_CONTROL_46 = Enum (174, _("control-46")),
192  MIDI_SIGNAL_CONTROL_47 = Enum (175, _("control-47")),
193  MIDI_SIGNAL_CONTROL_48 = Enum (176, _("Control 48 General Purpose Controller 1 LSB")),
194  MIDI_SIGNAL_CONTROL_49 = Enum (177, _("Control 49 General Purpose Controller 2 LSB")),
195  MIDI_SIGNAL_CONTROL_50 = Enum (178, _("Control 50 General Purpose Controller 3 LSB")),
196  MIDI_SIGNAL_CONTROL_51 = Enum (179, _("Control 51 General Purpose Controller 4 LSB")),
197  MIDI_SIGNAL_CONTROL_52 = Enum (180, _("control-52")),
198  MIDI_SIGNAL_CONTROL_53 = Enum (181, _("control-53")),
199  MIDI_SIGNAL_CONTROL_54 = Enum (182, _("control-54")),
200  MIDI_SIGNAL_CONTROL_55 = Enum (183, _("control-55")),
201  MIDI_SIGNAL_CONTROL_56 = Enum (184, _("control-56")),
202  MIDI_SIGNAL_CONTROL_57 = Enum (185, _("control-57")),
203  MIDI_SIGNAL_CONTROL_58 = Enum (186, _("control-58")),
204  MIDI_SIGNAL_CONTROL_59 = Enum (187, _("control-59")),
205  MIDI_SIGNAL_CONTROL_60 = Enum (188, _("control-60")),
206  MIDI_SIGNAL_CONTROL_61 = Enum (189, _("control-61")),
207  MIDI_SIGNAL_CONTROL_62 = Enum (190, _("control-62")),
208  MIDI_SIGNAL_CONTROL_63 = Enum (191, _("control-63")),
209  // 7bit, literal channel controls
210  MIDI_SIGNAL_CONTROL_64 = Enum (192, _("Control 64 Damper Pedal Switch (Sustain)")),
211  MIDI_SIGNAL_CONTROL_65 = Enum (193, _("Control 65 Portamento Switch")),
212  MIDI_SIGNAL_CONTROL_66 = Enum (194, _("Control 66 Sustenuto Switch")),
213  MIDI_SIGNAL_CONTROL_67 = Enum (195, _("Control 67 Soft Switch")),
214  MIDI_SIGNAL_CONTROL_68 = Enum (196, _("Control 68 Legato Pedal Switch")),
215  MIDI_SIGNAL_CONTROL_69 = Enum (197, _("Control 69 Hold Pedal Switch")),
216  MIDI_SIGNAL_CONTROL_70 = Enum (198, _("Control 70 Sound Variation")),
217  MIDI_SIGNAL_CONTROL_71 = Enum (199, _("Control 71 Filter Resonance (Timbre)")),
218  MIDI_SIGNAL_CONTROL_72 = Enum (200, _("Control 72 Sound Release Time")),
219  MIDI_SIGNAL_CONTROL_73 = Enum (201, _("Control 73 Sound Attack Time")),
220  MIDI_SIGNAL_CONTROL_74 = Enum (202, _("Control 74 Sound Brightness")),
221  MIDI_SIGNAL_CONTROL_75 = Enum (203, _("Control 75 Sound Decay Time")),
222  MIDI_SIGNAL_CONTROL_76 = Enum (204, _("Control 76 Vibrato Rate")),
223  MIDI_SIGNAL_CONTROL_77 = Enum (205, _("Control 77 Vibrato Depth")),
224  MIDI_SIGNAL_CONTROL_78 = Enum (206, _("Control 78 Vibrato Delay")),
225  MIDI_SIGNAL_CONTROL_79 = Enum (207, _("Control 79 Sound Control 10")),
226  MIDI_SIGNAL_CONTROL_80 = Enum (208, _("Control 80 General Purpose Switch 5")),
227  MIDI_SIGNAL_CONTROL_81 = Enum (209, _("Control 81 General Purpose Switch 6")),
228  MIDI_SIGNAL_CONTROL_82 = Enum (210, _("Control 82 General Purpose Switch 7")),
229  MIDI_SIGNAL_CONTROL_83 = Enum (211, _("Control 83 General Purpose Switch 8")),
230  MIDI_SIGNAL_CONTROL_84 = Enum (212, _("Control 84 Portamento Control (Note)")),
231  MIDI_SIGNAL_CONTROL_85 = Enum (213, _("control-85")),
232  MIDI_SIGNAL_CONTROL_86 = Enum (214, _("control-86")),
233  MIDI_SIGNAL_CONTROL_87 = Enum (215, _("control-87")),
234  MIDI_SIGNAL_CONTROL_88 = Enum (216, _("control-88")),
235  MIDI_SIGNAL_CONTROL_89 = Enum (217, _("control-89")),
236  MIDI_SIGNAL_CONTROL_90 = Enum (218, _("control-90")),
237  MIDI_SIGNAL_CONTROL_91 = Enum (219, _("Control 91 Reverb Depth")),
238  MIDI_SIGNAL_CONTROL_92 = Enum (220, _("Control 92 Tremolo Depth")),
239  MIDI_SIGNAL_CONTROL_93 = Enum (221, _("Control 93 Chorus Depth")),
240  MIDI_SIGNAL_CONTROL_94 = Enum (222, _("Control 93 Detune Depth")),
241  MIDI_SIGNAL_CONTROL_95 = Enum (223, _("Control 95 Phase Depth")),
242  MIDI_SIGNAL_CONTROL_96 = Enum (224, _("Control 96 Data Increment Trigger")),
243  MIDI_SIGNAL_CONTROL_97 = Enum (225, _("Control 97 Data Decrement Trigger")),
244  MIDI_SIGNAL_CONTROL_98 = Enum (226, _("Control 98 Non-Registered Parameter MSB")),
245  MIDI_SIGNAL_CONTROL_99 = Enum (227, _("Control 99 Non-Registered Parameter LSB")),
246  MIDI_SIGNAL_CONTROL_100 = Enum (228, _("Control 100 Registered Parameter MSB")),
247  MIDI_SIGNAL_CONTROL_101 = Enum (229, _("Control 101 Registered Parameter LSB")),
248  MIDI_SIGNAL_CONTROL_102 = Enum (230, _("control-102")),
249  MIDI_SIGNAL_CONTROL_103 = Enum (231, _("control-103")),
250  MIDI_SIGNAL_CONTROL_104 = Enum (232, _("control-104")),
251  MIDI_SIGNAL_CONTROL_105 = Enum (233, _("control-105")),
252  MIDI_SIGNAL_CONTROL_106 = Enum (234, _("control-106")),
253  MIDI_SIGNAL_CONTROL_107 = Enum (235, _("control-107")),
254  MIDI_SIGNAL_CONTROL_108 = Enum (236, _("control-108")),
255  MIDI_SIGNAL_CONTROL_109 = Enum (237, _("control-109")),
256  MIDI_SIGNAL_CONTROL_110 = Enum (238, _("control-110")),
257  MIDI_SIGNAL_CONTROL_111 = Enum (239, _("control-111")),
258  MIDI_SIGNAL_CONTROL_112 = Enum (240, _("control-112")),
259  MIDI_SIGNAL_CONTROL_113 = Enum (241, _("control-113")),
260  MIDI_SIGNAL_CONTROL_114 = Enum (242, _("control-114")),
261  MIDI_SIGNAL_CONTROL_115 = Enum (243, _("control-115")),
262  MIDI_SIGNAL_CONTROL_116 = Enum (244, _("control-116")),
263  MIDI_SIGNAL_CONTROL_117 = Enum (245, _("control-117")),
264  MIDI_SIGNAL_CONTROL_118 = Enum (246, _("control-118")),
265  MIDI_SIGNAL_CONTROL_119 = Enum (247, _("control-119")),
266  MIDI_SIGNAL_CONTROL_120 = Enum (248, _("Control 120 All Sound Off ITrigger")),
267  MIDI_SIGNAL_CONTROL_121 = Enum (249, _("Control 121 All Controllers Off ITrigger")),
268  MIDI_SIGNAL_CONTROL_122 = Enum (250, _("Control 122 Local Control Switch")),
269  MIDI_SIGNAL_CONTROL_123 = Enum (251, _("Control 123 All Notes Off ITrigger")),
270  MIDI_SIGNAL_CONTROL_124 = Enum (252, _("Control 124 Omni Mode Off ITrigger")),
271  MIDI_SIGNAL_CONTROL_125 = Enum (253, _("Control 125 Omni Mode On ITrigger")),
272  MIDI_SIGNAL_CONTROL_126 = Enum (254, _("Control 126 Monophonic Voices Mode")),
273  MIDI_SIGNAL_CONTROL_127 = Enum (255, _("Control 127 Polyphonic Mode On ITrigger")),
274 };
275 
276 // == Bse Constants ==
277 Const MIN_NOTE = 0;
278 Const MAX_NOTE = 131; // 123
279 Const NOTE_VOID = MAX_NOTE + 1;
280 Const KAMMER_NOTE = 69;
281 Const KAMMER_FREQ = 440.0;
282 Const KAMMER_OCTAVE = +1;
283 Const MIN_OCTAVE = -4;
284 Const MAX_OCTAVE = +6;
285 Const MIN_FINE_TUNE = -100;
286 Const MAX_FINE_TUNE = 100;
287 Const MIN_BPM = 1;
288 Const MAX_BPM = 1024;
289 Const MIN_TRANSPOSE = -72;
290 Const MAX_TRANSPOSE = +72;
291 Const GUI = "r:w:G";
292 Const STORAGE = "r:w:S";
293 Const STANDARD = STORAGE ":G";
294 Const NOTEHINTS = STANDARD ":note";
295 Const FINETUNEHINTS = STANDARD ":finetune";
296 Const VELOCITYHINTS = STANDARD ":velocity";
297 
299 interface TestObject {
300  int32 echo_test (String msg);
301  signal void echo_reply (String msg);
302 };
303 
305  ERROR = 1,
309 };
310 
312 record UserMessage {
319 };
320 
322 record SongTiming {
323  int32 tick = Range ("Current tick", "Song position timing applies to", STANDARD, 0, MAXINT31, 384, 0);
324  float64 bpm = Range ("BPM", "Beats per minute", STANDARD, MIN_BPM, MAX_BPM, 10, 120);
325  // Signature
326  int32 numerator = Range ("Numerator", "Number of notes per measure", STANDARD, 1, 256, 2, 4);
327  int32 denominator = Range ("Denominator", "Type of notes counted per measure", STANDARD, 1, 256, 2, 4);
328  // Sequencer Timing
329  int32 tpqn = Range ("TPQN", "Ticks per quarter note", STANDARD, 1, MAXINT31, 12, 384);
330  int32 tpt = Range ("TPT", "Ticks per tact", STANDARD, 1, MAXINT31, 12, 384);
331  // Playback Timing
332  float64 stamp_ticks = Range ("Tick Increment", "Ticks per stamp increment (useful only during playback)", STANDARD, 1, MAXINT31, 12, 384);
333 };
334 
335 // Forward declarations.
336 record PartLink;
337 sequence PartLinkSeq;
338 
340 interface Object {
341  String debug_name ();
342  int64 proxy_id ();
343 };
344 
346 interface Item : Object {
347  Item common_ancestor (Item other);
348 };
349 
351 record PartNote
352 {
353  int32 id = Num ("ID", "", 0, ":readwrite");
354  int32 channel = Range ("Channel", "", ":readwrite", 0, MAXINT31, 1);
355  int32 tick = Range ("Tick", "", ":readwrite", 0, MAXINT31, 1);
356  int32 duration = Range ("Duration", "Duration in number of ticks", ":readwrite", 0, MAXINT31, 1);
357  int32 note = Range ("Note", "", NOTEHINTS, MIN_NOTE, MAX_NOTE, 12, KAMMER_NOTE);
358  int32 fine_tune = Range ("Fine Tune", "", FINETUNEHINTS, MIN_FINE_TUNE, MAX_FINE_TUNE, 1);
359  float64 velocity = Range ("Velocity", "", VELOCITYHINTS, 0, 1.0, 0.1, 1);
360  bool selected = Bool ("Selected", "", ":readwrite", false);
361 };
362 
364 sequence PartNoteSeq {
365  PartNote part_notes;
366 };
367 
369 record PartControl {
370  int32 id = Num ("ID", "", ":readwrite");
371  int32 tick = Range ("Tick", "", ":readwrite", 0, MAXINT31, 1);
372  MidiSignalType control_type;
373  float64 value = Range ("Value", "", ":readwrite", -1, +1, 0.1);
374  bool selected = Bool ("Selected", "", ":readwrite");
375 };
376 
378 sequence PartControlSeq {
379  PartControl pcontrols;
380 };
381 
383 interface Part : Item {
384  PartControlSeq list_selected_controls (MidiSignalType control_type);
385  PartControlSeq list_controls (int32 tick, int32 duration, MidiSignalType control_type);
386  PartControlSeq get_channel_controls (int32 channel, int32 tick, int32 duration, MidiSignalType control_type);
387  PartControlSeq get_controls (int32 tick, MidiSignalType control_type);
388  SongTiming get_timing (int32 tick);
389  int32 get_max_note ();
390  int32 get_min_note ();
391  ErrorType change_control (int32 id, int32 tick, MidiSignalType control_type, float64 value);
392  ErrorType change_note (int32 id, int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity);
393  ErrorType delete_event (int32 id);
394  int32 insert_control (int32 tick, MidiSignalType control_type, float64 value);
395  int32 insert_note (int32 channel, int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity);
396  int32 insert_note_auto (int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity);
397  bool is_event_selected (int32 id);
398  void queue_controls (int32 tick, int32 duration);
399  void queue_notes (int32 tick, int32 duration, int32 min_note, int32 max_note);
400  void select_notes_exclusive (int32 tick, int32 duration, int32 min_note, int32 max_note);
401  void select_controls_exclusive (int32 tick, int32 duration, MidiSignalType control_type);
402  void select_notes (int32 tick, int32 duration, int32 min_note, int32 max_note);
403  void select_event (int32 id);
404  void select_controls (int32 tick, int32 duration, MidiSignalType control_type);
405  void deselect_notes (int32 tick, int32 duration, int32 min_note, int32 max_note);
406  void deselect_event (int32 id);
407  void deselect_controls (int32 tick, int32 duration, MidiSignalType control_type);
408  PartNoteSeq list_notes_crossing (int32 tick, int32 duration);
409  PartNoteSeq list_notes_within (int32 channel, int32 tick, int32 duration);
411  PartNoteSeq check_overlap (int32 tick, int32 duration, int32 note);
412  PartNoteSeq get_notes (int32 tick, int32 note);
413  PartLinkSeq list_links ();
414 
415  // signal void range_changed (int32 a, int32 b, int32 c, int32 d);
416  // signal void links_changed ();
417  // property int32 n_channels;
418  // property int32 last_tick;
419 };
420 
422 interface Source : Item {
423  Source ichannel_get_osource (int32 input_channel, int32 input_joint);
424 };
425 
427 interface ContextMerger : Source {
428 };
429 
431 interface Container : Source {
433 };
434 
436 interface Super : Container {
437 };
438 
440 interface SNet : Super {
441  bool supports_user_synths ();
442 };
443 
445 interface CSynth : SNet {
446 };
447 
449 interface SubSynth : Source {
450  // CSynth snet = Object ("Synthesizer", "Synthesis network to use as embedded sub network", STANDARD ":unprepared");
451  // String in_port_1 = String ("Input Port 1", "Output port name to interface from", STANDARD ":skip-default");
452  // String out_port_1 = String ("Output Port 1", "Input port name to interface to", STANDARD ":skip-default");
453  // String in_port_2 = String ("Input Port 2", "Output port name to interface from", STANDARD ":skip-default");
454  // String out_port_2 = String ("Output Port 2", "Input port name to interface to", STANDARD ":skip-default");
455  // String in_port_3 = String ("Input Port 3", "Output port name to interface from", STANDARD ":skip-default");
456  // String out_port_3 = String ("Output Port 3", "Input port name to interface to", STANDARD ":skip-default");
457  // String in_port_4 = String ("Input Port 4", "Output port name to interface from", STANDARD ":skip-default");
458  // String out_port_4 = String ("Output Port 4", "Input port name to interface to", STANDARD ":skip-default");
459  // String in_port_5 = String ("Input Port 5", "Output port name to interface from", STANDARD ":skip-default");
460  // String out_port_5 = String ("Output Port 5", "Input port name to interface to", STANDARD ":skip-default");
461  // String in_port_6 = String ("Input Port 6", "Output port name to interface from", STANDARD ":skip-default");
462  // String out_port_6 = String ("Output Port 6", "Input port name to interface to", STANDARD ":skip-default");
463  // String in_port_7 = String ("Input Port 7", "Output port name to interface from", STANDARD ":skip-default");
464  // String out_port_7 = String ("Output Port 7", "Input port name to interface to", STANDARD ":skip-default");
465  // String in_port_8 = String ("Input Port 8", "Output port name to interface from", STANDARD ":skip-default");
466  // String out_port_8 = String ("Output Port 8", "Input port name to interface to", STANDARD ":skip-default");
467 };
468 
470 interface Track : ContextMerger {
471  SongTiming get_timing (int32 tick);
472  int32 insert_part (int32 tick, Part part);
473  void remove_tick (int32 tick);
474 
475  // ItemSeq list_parts_uniq (); ///< List all parts contained in a track.
476  // TrackPartSeq list_parts (); ///< List parts scheduled in a track, sorted by tick.
477  // void remove_link (int32 id); ///< Remove a specific part link by ID from a track.
478  Part get_part (int32 tick);
479  int32 get_last_tick ();
480  ErrorType ensure_output ();
484 
485  // property bool muted; ///< _("Mute this track by ignoring it in the sequencer.")
486  // property CSynth snet; ///< _("Synthesis network to be used as instrument.")
487  // property Wave wave; ///< _("Wave to be used as instrument.")
488  // property int32 midi_channel; ///< _("Midi channel assigned to this track, 0 uses internal per-track channel.")
489  // property int32 n_voices; ///< _("Maximum number of voices for simultaneous playback.")
490  // property CSynth pnet; ///< _("Synthesis network to be used as postprocessor.")
491  // property ItemSeq outputs; ///< _("Mixer busses used as output for this track.")
492 };
493 
495 record PartLink {
496  Track track;
497  int32 tick = Range ("Tick", "", STANDARD, 0, MAXINT31, 384);
498  Part part;
499  int32 duration = Range ("Duration", "", STANDARD, 0, MAXINT31, 384);
500  // int32 count; // 1 + repetitions
501 };
502 
504 sequence PartLinkSeq {
505  PartLink plinks;
506 };
507 
509 interface Bus : SubSynth {
510  ErrorType ensure_output ();
511  // ErrorType connect_bus (Bus bus); ///< Add a bus to the input list of a bus.
512  // ErrorType connect_track (Track track); ///< Add a track to the input list of a bus.
513  // ErrorType disconnect_bus (Bus bus); ///< Remove a bus from the input list of a bus.
514  // ErrorType disconnect_track (Track track); ///< Remove a track from the input list of a bus.
515  // ItemSeq inputs = Object ("Input Signals", "Synthesis signals (from tracks and busses) used as bus input", GUI ":item-sequence");
516  // ItemSeq outputs = Object ("Output Signals", "Mixer busses used as output for synthesis signals", GUI ":item-sequence");
517  // CSynth snet = Object ("SNet", "Synthesis network used internally to implement effect stack", READWRITE ":skip-undo");
518  // bool mute = Bool ("Mute", "Mute: turn off the bus volume", STANDARD ":skip-default", FALSE);
519  // bool solo = Bool ("Solo", "Solo: mute all other busses", STANDARD ":skip-default", FALSE);
520  // bool sync = Bool ("Sync", "Synchronize left and right volume", STANDARD ":skip-default", TRUE);
521  // float64 left_volume = Num ("Left Volume", "Volume adjustment in decibel of left bus channel", STANDARD ":scale:db-volume");
522  // float64 right_volume = Num ("Right Volume", "Volume adjustment in decibel of right bus channel", STANDARD ":scale:db-volume");
523  // bool master_output = Bool ("Master Output", "", STORAGE ":skip-default", FALSE);
524 };
525 
527 interface Song : SNet {
528  SongTiming get_timing (int32 tick);
530  Bus create_bus ();
531  void remove_bus (Bus bus);
532  Part create_part ();
533  void remove_part (Part part);
534  Track create_track ();
535  void remove_track (Track track);
536  // Bus ensure_master_bus (); ///< Retrieve master output bus of a song, will create one if it doesn't exist.
537  // void ensure_track_links (); ///< Ensure that each part in a song is inserted into at least one track.
538  // Track find_track_for_part (Part part); ///< Find a track suitable for playing notes of a given part.
539  // Bus get_master_bus (); ///< Retrieve master output bus of a song if it exists.
540  // void synthesize_note (Track track, int32 duration, int32 note, int32 fine_tune, float64 velocity); ///< Synthesize a note on a song of an active project.
541  // signal void pointer_changed (int32 a);
542  // group _("Tuning") {
543  // MusicalTuningType musical_tuning = Enum ("Musical Tuning",
544  // "The tuning system which specifies the tones or pitches to be used. "
545  // "Due to the psychoacoustic properties of tones, various pitch combinations can "
546  // "sound 'natural' or 'pleasing' when used in combination. "
547  // "The musical tuning system defines the number and spacing of frequency values applied.",
548  // STANDARD ":unprepared:skip-default", BSE_MUSICAL_TUNING_12_TET);
549  // };
550  // group _("Timing") {
551  // int32 tpqn = Range ("Ticks", "Number of ticks per quarter note", STANDARD, 384, 384, 0, 384);
552  // int32 numerator = Range ("Numerator", "Measure numerator", STANDARD, 1, 256, 1, 4);
553  // int32 denominator = Range ("Denominator", "Measure denominator, must be a power of 2", STANDARD, 1, 256, 1, 4);
554  // float64 bpm = Range ("BPM", "Beats per minute", STANDARD, MIN_BPM, MAX_BPM, 10, 120);
555  // };
556  // group _("MIDI Instrument") {
557  // CSynth pnet = Object ("Postprocessor", "Synthesis network to be used as postprocessor", STANDARD);
558  // };
559  // bool auto_activate = Bool ("Auto Activate", "", STORAGE, TRUE);
560  // bool loop_enabled = Bool ("Loop Enabled", "", STORAGE, FALSE);
561  // int32 loop_left = Range ("Loop Left", "", STORAGE, -1, MAXINT31, 384, -1);
562  // int32 loop_right = Range ("Loop Right", "", STORAGE, -1, MAXINT31, 384, -1);
563  // int32 tick_pointer = Range ("Tick Pointer", "", STORAGE, -1, MAXINT31, 384, -1);
564  group _("Timing") {
565  float64 bpm = Range ("BPM", "Beats per minute", STANDARD ":scale", MIN_BPM, MAX_BPM, 10, 120);
566  };
567 };
568 
570 interface EditableSample : Item {
571 };
572 
574 interface Wave : Source {
575 };
576 
578 interface WaveRepo : Super {
579 };
580 
582 interface MidiNotifier : Item {
583 };
584 
586 interface MidiSynth : SNet {
587 };
588 
590 interface Project : Container {
591  void change_name (String name);
592  ErrorType play();
593  ErrorType activate();
594  //ProjectState get_state(); ///< Retrieve the current project activation/playback state.
595  bool can_play();
596  bool is_playing();
597  bool is_active ();
598  void start_playback();
599  void stop_playback();
600  void deactivate();
601  void stop();
602  void auto_deactivate (int32 msec_delay);
603  int32 undo_depth();
604  void undo();
605  int32 redo_depth();
606  void redo();
607  void clear_undo();
608  void clean_dirty();
609  bool is_dirty();
610  void inject_midi_control (int32 midi_channel, int32 midi_control, float64 control_value);
612  //Item find_item (String uname_path); ///< Find an item within a project, given its uname path.
613  //ItemSeq get_supers(); ///< Retrieve all Super type objects of this project.
616  //StringSeq list_uname_paths (String item_type);
618  //ItemSeq match_items_by_uname (String item_type, String uname);
624  //ErrorType store_bse (Super super, String file_name, bool self_contained);
625  ErrorType import_midi_file (String file_name);
626  ErrorType restore_from_file (String file_name);
627  //Song create_song (String name); ///< Create a song for this project.
628  //WaveRepo get_wave_repo (); ///< Retrieve the project's unique wave repository.
629  //DataPocket get_data_pocket (String name); ///< Retrieve a specifically named data pocket for this project.
630  //CSynth create_csynth (String name); ///< Create a synthsizer network for this project.
631  //MidiSynth create_midi_synth (String name); ///< Create a MIDI synthesizer network for this project.
632  //MidiNotifier get_midi_notifier(); ///< Retrieve the project's midi notifier object.
633  //void remove_snet (SNet snet); ///< Remove an existing synthesizer network from this project.
634 };
635 
637 interface PcmWriter : Item {
638 };
639 
644 interface Server : Object {
645  signal void user_message (UserMessage umsg);
647  Object from_proxy (int64 proxyid);
656  String get_demo_path ();
659  String get_version ();
660  void save_preferences ();
661  void register_ladspa_plugins();
662  void register_core_plugins();
663  void register_scripts();
664  bool preferences_locked();
665  int32 n_scripts();
666  bool can_load (String file_name);
667  void start_recording (String wave_file, float64 n_seconds);
668  Project create_project (String project_name);
669  void destroy_project (Project project);
670 };
671 
672 } // Bse
PartControlSeq list_selected_controls(MidiSignalType control_type)
List all currently selected control events of a specific type.
String get_version()
Retrieve BSE version.
Part get_part(int32 tick)
Get the part starting at a specific tick position.
Track create_track()
Create a new Track for a Song.
void register_core_plugins()
Register core plugins.
Const MIN_FINE_TUNE
Octave of MAX_NOTE.
Definition: bseapi.idl:285
Interface for Track and Part objects, as well as meta data for sequencing.
Definition: bseapi.idl:527
UserMessageType type
Severity classification for this message.
Definition: bseapi.idl:313
TestObject get_test_object()
Retrieve object for API, signal, etc tests.
void clear_undo()
Delete all recorded undo or redo steps.
void start_playback()
Start playback in an activated project.
void remove_bus(Bus bus)
Delete a mixer bus from a Song.
Interface for writing PCM wave data.
Definition: bseapi.idl:637
Item common_ancestor(Item other)
Find a common container (parent or grand-parent) of two items if any.
The Bse namespace contains all functions of the synthesis engine.
Definition: bstbseutils.cc:67
void select_notes_exclusive(int32 tick, int32 duration, int32 min_note, int32 max_note)
Select all notes within rectangle and deselect all others.
void stop_playback()
Stop project playback.
String get_sample_path()
Retrieve sample search path.
void queue_controls(int32 tick, int32 duration)
Queue updates for all control events and notes starting within the given range.
String get_custom_effect_dir()
Retrieve user specific effects directory.
bool preferences_locked()
Returns whether the bse-preferences property is currently locked against modifications or not...
ErrorType change_control(int32 id, int32 tick, MidiSignalType control_type, float64 value)
Change an existing control event within a part.
SongTiming get_timing(int32 tick)
Retrieve song timing information at a specific tick.
void queue_notes(int32 tick, int32 duration, int32 min_note, int32 max_note)
Queue updates for all notes starting within the given rectangle.
Const MIN_OCTAVE
Octave number for MIDI A'.
Definition: bseapi.idl:283
PartControlSeq get_channel_controls(int32 channel, int32 tick, int32 duration, MidiSignalType control_type)
Retrieve all control events of a specific type within range of a channel.
ErrorType delete_event(int32 id)
Delete an existing event from a part.
Const MAX_OCTAVE
Octave of MIN_NOTE.
Definition: bseapi.idl:284
Synthesizer module for embedding (rerouting input and output) of another synthesizer network (SNet)...
Definition: bseapi.idl:449
void select_controls(int32 tick, int32 duration, MidiSignalType control_type)
Select all control events within range.
String get_script_path()
Retrieve script search path.
bool is_playing()
Check whether a project is currently playing (song sequencing).
int32 get_last_tick()
Retrieve the last tick for this track.
Const KAMMER_FREQ
Kammer note, representing the kammer frequency's MIDI note value for A' or A4.
Definition: bseapi.idl:281
Interface serving as container for Wave objects.
Definition: bseapi.idl:578
bool supports_user_synths()
Check whether users may edit synthesis modules of this network.
Base interface type for containers of Item derived types.
Definition: bseapi.idl:431
String get_vorbis_version()
Retrieve BSE Vorbis handler version.
void remove_track(Track track)
Delete a Track from a Song.
Track find_any_track_for_part(Part part)
Find the first track that contains part, suitable to check for orphan parts.
String text3
Possibly (technical) details or machine error message.
Definition: bseapi.idl:317
int32 get_max_note()
Retrieve the maximum note supported in this part.
int32 insert_control(int32 tick, MidiSignalType control_type, float64 value)
Insert a new control event into a part.
void deselect_controls(int32 tick, int32 duration, MidiSignalType control_type)
Deselect all controls within given range.
Base interface type for objects that can be added to a container.
Definition: bseapi.idl:346
ErrorType ensure_output()
Ensure that a bus has an output connection.
signal void user_message(UserMessage umsg)
Notification signal for user messages from BSE.
Interface for effect stacks and per-track audio signal routing to the master output.
Definition: bseapi.idl:509
Source module for merging multiple synthesis contexts, used to implement polyphony.
Definition: bseapi.idl:427
void start_recording(String wave_file, float64 n_seconds)
Start recording to a WAV file.
ErrorType change_note(int32 id, int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity)
Change an existing note within a part.
signal void echo_reply(String msg)
Signal emitted in response to echo_test().
STL class.
Base interface type for Item managers.
Definition: bseapi.idl:436
String get_custom_instrument_dir()
Retrieve user specific instruments directory.
void register_scripts()
Register external scripts.
Data interface for containment of piano notes and MIDI effects.
Definition: bseapi.idl:383
A list of part control events.
Definition: bseapi.idl:378
Indicate a message about an error condition.
Definition: bseapi.idl:305
Base interface type for synthesis modules with input or output streams.
Definition: bseapi.idl:422
ErrorType import_midi_file(String file_name)
List uname paths for all items of a specified type within a project.
Part create_part()
Create a new Part in a Song.
Const KAMMER_OCTAVE
Pitch Standard, see also: https://en.wikipedia.org/wiki/A440_(pitch_standard)
Definition: bseapi.idl:282
void save_preferences()
Save the bse-preferences property to disk.
PartNoteSeq list_notes_crossing(int32 tick, int32 duration)
List all notes within or crossing a tick range.
void deselect_event(int32 id)
Deselect an existing event.
Indicate an informational message.
Definition: bseapi.idl:307
SongTiming get_timing(int32 tick)
Retrieve song timing information at a specific tick.
String title
Usually GUI window title.
Definition: bseapi.idl:314
Customizable synthesis (filter) network container.
Definition: bseapi.idl:445
void remove_part(Part part)
Delete a Part from a Song.
bool can_play()
Check whether project playback would makes sense.
void undo()
Undo a previous operation in a project.
Object to carry out IDL, API, signal, etc tests.
Definition: bseapi.idl:299
PartNoteSeq list_notes_within(int32 channel, int32 tick, int32 duration)
List all notes within a tick range.
String get_ladspa_path()
Retrieve ladspa search path.
Interface for sequencing information and links to Part objects.
Definition: bseapi.idl:470
bool is_dirty()
Check whether a project needs saving.
String text1
Primary message to the user, should be limited to 80-100 chars.
Definition: bseapi.idl:315
void destroy_project(Project project)
Destroy a previously created new project.
signal
PartControlSeq get_controls(int32 tick, MidiSignalType control_type)
Retrieve all control events of a specific type at specified tick.
Part specific note event representation.
Definition: bseapi.idl:351
int32 insert_note(int32 channel, int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity)
Insert a new note into a part.
void deselect_notes(int32 tick, int32 duration, int32 min_note, int32 max_note)
Deselect all notes within rectangle.
int32 redo_depth()
Get the number of times redo can be called on the project.
PartLinkSeq list_links()
List all places where parts are used (linked) from tracks, sorted by tick.
int32 insert_part(int32 tick, Part part)
Insert Part into Track at tick, returns the corresponding link id.
SongTiming get_timing(int32 tick)
Retrieve song timing information at a specific tick.
int32 get_min_note()
Retrieve the minimum note supported in this part.
void inject_midi_control(int32 midi_channel, int32 midi_control, float64 control_value)
Inject a MIDI control event into the project's MIDI receiver.
ErrorType restore_from_file(String file_name)
Load a project from file.
Fundamental base type for all BSE objects.
Definition: bseapi.idl:340
int64 proxy_id()
Retrieve the BseObject proxy ID for an Object.
UserMessageType
Definition: bseapi.idl:304
Indicate a debugging message (usually insignificant).
Definition: bseapi.idl:308
String get_plugin_path()
Retrieve plugin search path.
void clean_dirty()
Clear a project's dirty flags.
Object from_proxy(int64 proxyid)
Find an Object from its associated BseObject proxy id.
void remove_tick(int32 tick)
Remove Part at specified tick from a track.
String debug_name()
Object name useful for debugging output.
A list of part note events.
Definition: bseapi.idl:364
void select_event(int32 id)
Select an existing event.
int32 n_scripts()
Return the number of scripts currently running on this server.
String get_instrument_path()
Retrieve instrument search path.
Base interface type for all kinds of synthesis networks.
Definition: bseapi.idl:440
Indicate a message about a possibly harmful condition.
Definition: bseapi.idl:306
bool is_active()
Check whether a project is active (currently synthesizing).
PartNoteSeq check_overlap(int32 tick, int32 duration, int32 note)
Check whether a note would overlap with neighbours.
Part specific control event representation.
Definition: bseapi.idl:369
PartNoteSeq list_selected_notes()
List all currently selected notes.
Main Bse remote origin object.
Definition: bseapi.idl:644
bool can_load(String file_name)
Check whether a loader can be found for a wave file.
Interface for editable PCM wave samples.
Definition: bseapi.idl:570
int32 insert_note_auto(int32 tick, int32 duration, int32 note, int32 fine_tune, float64 velocity)
Insert a new note into a part with automatic channel selection.
Interface for PCM wave samples.
Definition: bseapi.idl:574
void auto_deactivate(int32 msec_delay)
Automatically deactivate a few milliseconds after playback stopped.
void change_name(String name)
Change a project name without recording undo steps.
Song timing configuration.
Definition: bseapi.idl:322
PartNoteSeq get_notes(int32 tick, int32 note)
Retrieve all notes at a specific frequency or crossing a tick.
String get_mp3_version()
Retrieve BSE MP3 handler version.
Source ichannel_get_osource(int32 input_channel, int32 input_joint)
Retrieve output module connected to a specific joint of an input channel.
Item lookup_item(String uname)
Find an immediate child of a container by name (unique per container child).
Bus create_bus()
Create a new mixer bus for a Song.
int32 echo_test(String msg)
Echo custom message to stdout.
Const KAMMER_NOTE
Value represents unparsable/unknown notes.
Definition: bseapi.idl:280
ErrorType play()
Activate a project and start project playback (an already playing project is first halted)...
void select_notes(int32 tick, int32 duration, int32 min_note, int32 max_note)
Select all notes within rectangle.
String text2
Explanatory (secondary) message no limitations recommended.
Definition: bseapi.idl:316
void stop()
Stop project playback and deactivate project.
Project create_project(String project_name)
Create a new project (name is modified to be unique if necessary.
void redo()
Redo a previously undone operation in a project.
String label
Message class label, used to enable/disable this type of message.
Definition: bseapi.idl:318
Sequence of PartLink records.
Definition: bseapi.idl:504
PartControlSeq list_controls(int32 tick, int32 duration, MidiSignalType control_type)
List all control events within a tick range.
ErrorType ensure_output()
Ensure the track has an output connection to a bus.
Source get_output_source()
Get the output module of a track.
Structure for submission of user interface messages from BSE.
Definition: bseapi.idl:312
int32 undo_depth()
Check whether a project can perform undo steps.
String get_effect_path()
Retrieve effect search path.
Projects support loading, saving, playback and act as containers for all other sound objects...
Definition: bseapi.idl:590
ErrorType activate()
Activate a project, precondition to start playback.
void select_controls_exclusive(int32 tick, int32 duration, MidiSignalType control_type)
Select all control events within range and deselect all others.
bool is_event_selected(int32 id)
Check whether an event is selected.
Interface for MIDI synthesis networks.
Definition: bseapi.idl:586
void register_ladspa_plugins()
Register LADSPA (Linux Audio Developer's Simple Plugin API) plugins.
void deactivate()
Deactivate the project, automatically stop playback.
String get_demo_path()
Retrieve demo search path.
Interface for MIDI event notification.
Definition: bseapi.idl:582
uname