BEAST/BSE - Better Audio System and Sound Engine
0.8.2
|
00001 // Licensed GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl.html 00002 namespace Bse { 00003 using namespace Sfi; 00004 /* param options */ 00005 Const READWRITE = ":r:w:"; 00006 Const STORAGE = ":r:w:S:"; 00007 Const STANDARD = ":r:w:S:G:"; 00008 Const STANDARD_RDONLY = ":r:w:S:G:ro:"; 00009 Const GUI = ":r:w:G:"; 00010 Const GUI_RDONLY = ":r:w:G:ro:"; 00011 Const GUI_READABLE = ":r:G:"; 00012 /* extra options */ 00013 Const SKIP_DEFAULT = ":skip-default:"; 00014 Const SKIP_UNDO = ":skip-undo:"; 00015 Const DEFAULT = STANDARD; // FIXME: remove 00016 /* numeric constants */ 00017 Const MAXINT = +2147483647; 00018 Const MININT = -2147483648; 00019 Const MAXNUM = +9223372036854775807; 00020 Const MINNUM = -9223372036854775808; 00021 Const MINDB = -96; /* 32bit:-192 24bit:-144 16bit:-96 */ 00022 /* standard sequences */ 00023 sequence IntSeq { 00024 Int ints; 00025 }; 00026 sequence TypeSeq { 00027 String types; 00028 }; 00029 sequence StringSeq { 00030 String strings; 00031 }; 00032 sequence FloatSeq { 00033 Real values; 00034 }; 00035 /* musical tunings: http://en.wikipedia.org/wiki/Musical_tuning */ 00036 enum MusicalTuningType { 00037 /* Equal Temperament: http://en.wikipedia.org/wiki/Equal_temperament */ 00038 MUSICAL_TUNING_12_TET = Enum (1, _("12 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament 00039 _("The most common tuning system for modern Western music, " 00040 "is the twelve-tone equal temperament, abbreviated as 12-TET, " 00041 "which divides the octave into 12 equal parts.")), 00042 MUSICAL_TUNING_7_TET = Enum (_("7 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament 00043 _("A fairly common tuning system is the seven-tone equal temperament tuning system, " 00044 "abbreviated as 7-TET. It divides the octave into 7 equal parts using 171 cent steps.")), 00045 MUSICAL_TUNING_5_TET = Enum (_("5 Tone Equal Temperament"), // http://en.wikipedia.org/wiki/Equal_temperament 00046 _("A fairly common tuning system is the five-tone equal temperament tuning system, " 00047 "abbreviated as 5-TET. It divides the octave into 5 equal parts using 240 cent steps.")), 00048 /* Rational Intonation: http://en.wikipedia.org/wiki/Just_intonation */ 00049 MUSICAL_TUNING_DIATONIC_SCALE = Enum (_("Diatonic Scale"), // http://en.wikipedia.org/wiki/Diatonic_scale 00050 _("In music theory, a diatonic scale (also: heptatonia prima) is a seven-note " 00051 "musical scale comprising five whole-tone and two half-tone steps. " 00052 "The half tones are maximally separated, so between two half-tone steps " 00053 "there are either two or three whole tones, repeating per octave.")), // Werckmeister I 00054 MUSICAL_TUNING_INDIAN_SCALE = Enum (_("Indian Scale"), // http://en.wikipedia.org/wiki/Just_intonation#Indian_scales 00055 _("Diatonic scale used in Indian music with wolf interval at Dha, close to 3/2")), 00056 MUSICAL_TUNING_PYTHAGOREAN_TUNING= Enum (_("Pythagorean Tuning"), // http://en.wikipedia.org/wiki/Pythagorean_tuning 00057 _("Pythagorean tuning is the oldest way of tuning the 12-note chromatic scale, " 00058 "in which the frequency relationships of all intervals are based on the ratio 3:2. " 00059 "Its discovery is generally credited to Pythagoras.")), 00060 MUSICAL_TUNING_PENTATONIC_5_LIMIT= Enum (_("Pentatonic 5-limit"), // http://en.wikipedia.org/wiki/Pentatonic_scale 00061 _("Pentatonic scales are used in modern jazz and pop/rock contexts " 00062 "because they work exceedingly well over several chords diatonic " 00063 "to the same key, often better than the parent scale.")), 00064 MUSICAL_TUNING_PENTATONIC_BLUES = Enum (_("Pentatonic Blues"), // http://en.wikipedia.org/wiki/Pentatonic_scale 00065 _("The blues scale is the minor pentatonic with an additional augmented fourth, " 00066 "which is referred to as the \"blues note\".")), 00067 MUSICAL_TUNING_PENTATONIC_GOGO = Enum (_("Pentatonic Gogo"), // http://en.wikipedia.org/wiki/Pentatonic_scale 00068 _("The Pentatonic Gogo scale is an anhemitonic pentatonic scale used to tune the " 00069 "instruments of the Gogo people of Tanzania.")), 00070 /* Meantone Temperament: http://en.wikipedia.org/wiki/Meantone_temperament */ 00071 MUSICAL_TUNING_QUARTER_COMMA_MEANTONE = Enum (_("Quarter-Comma Meantone"), // http://en.wikipedia.org/wiki/Quarter-comma_meantone 00072 _("Quarter-comma meantone was the most common meantone temperament in the " 00073 "sixteenth and seventeenth centuries and sometimes used later.")), // Werckmeister II 00074 MUSICAL_TUNING_SILBERMANN_SORGE = Enum (_("Silbermann-Sorge Temperament"), // http://de.wikipedia.org/wiki/Silbermann-Sorge-Temperatur 00075 _("The Silbermann-Sorge temperament is a meantone temperament used for " 00076 "Baroque era organs by Gottfried Silbermann.")), 00077 /* Well Temperament: http://en.wikipedia.org/wiki/Well_temperament */ 00078 MUSICAL_TUNING_WERCKMEISTER_3 = Enum (_("Werckmeister III"), // http://en.wikipedia.org/wiki/Werckmeister_temperament 00079 _("This tuning uses mostly pure (perfect) fifths, as in Pythagorean tuning, but each " 00080 "of the fifths C-G, G-D, D-A and B-F# is made smaller, i.e. tempered by 1/4 comma. " 00081 "Werckmeister designated this tuning as particularly suited for playing chromatic music.")), 00082 MUSICAL_TUNING_WERCKMEISTER_4 = Enum (_("Werckmeister IV"), // http://en.wikipedia.org/wiki/Werckmeister_temperament 00083 _("In this tuning the fifths C-G, D-A, E-B, F#-C#, and Bb-F are tempered narrow by 1/3 comma, " 00084 "and the fifths G#-D# and Eb-Bb are widened by 1/3 comma. The other fifths are pure. " 00085 "Most of its intervals are close to sixth-comma meantone. " 00086 "Werckmeister designed this tuning for playing mainly diatonic music.")), 00087 MUSICAL_TUNING_WERCKMEISTER_5 = Enum (_("Werckmeister V"), // http://en.wikipedia.org/wiki/Werckmeister_temperament 00088 _("In this tuning the fifths D-A, A-E, F#-C#, C#-G#, and F-C are narrowed by 1/4 comma, " 00089 "and the fifth G#-D# is widened by 1/4 comma. The other fifths are pure. " 00090 "This temperament is closer to equal temperament than Werckmeister III or IV.")), 00091 MUSICAL_TUNING_WERCKMEISTER_6 = Enum (_("Werckmeister VI"), // http://en.wikipedia.org/wiki/Werckmeister_temperament 00092 _("This tuning is also known as Septenarius tuning is based on a division of the monochord " 00093 "length into 196 = 7 * 7 * 4 parts. " 00094 "The resulting scale has rational frequency relationships, but in practice involves pure " 00095 "and impure sounding fifths. " 00096 "Werckmeister described the Septenarius as a \"temperament which has nothing at all to do " 00097 "with the divisions of the comma, nevertheless in practice so correct that one can be really " 00098 "satisfied with it\".")), 00099 MUSICAL_TUNING_KIRNBERGER_3 = Enum (_("Kirnberger III"), // http://en.wikipedia.org/wiki/Johann_Philipp_Kirnberger_temperament 00100 _("Kirnberger's method of compensating for and closing the circle of fifths is to split the \"wolf\" " 00101 "interval known to those who have used meantone temperaments between four fifths instead, " 00102 "allowing for four 1/4-comma wolves to take their place. " 00103 "1/4-comma wolves are used extensively in meantone and are much easier to tune and to listen to. " 00104 "Therefore, only one third remains pure (between C and E).")), 00105 MUSICAL_TUNING_YOUNG = Enum (_("Young Temperament"), // http://en.wikipedia.org/wiki/Young_temperament 00106 _("Thomas Young devised a form of musical tuning to make the harmony most perfect in those keys which " 00107 "are the most frequently used (give better major thirds in those keys), but to not have any unplayable keys. " 00108 "This is attempted by tuning upwards from C a sequence of six pure fourths, " 00109 "as well as six equally imperfect fifths.")), 00110 }; 00111 /* various MIDI specific definitions */ 00112 enum MidiSignalType { 00113 /* special cased signals */ 00114 MIDI_SIGNAL_PROGRAM = Enum (1, _("Program Change")), /* 7bit */ 00115 MIDI_SIGNAL_PRESSURE = Enum (2, _("Channel Pressure")), /* 7bit */ 00116 MIDI_SIGNAL_PITCH_BEND = Enum (3, _("Pitch Bend")), /* 14bit */ 00117 MIDI_SIGNAL_VELOCITY = Enum (4, _("Note Velocity")), 00118 MIDI_SIGNAL_FINE_TUNE = Enum (5, _("Note Fine Tune")), 00119 /* 14bit, continuous controls */ 00120 MIDI_SIGNAL_CONTINUOUS_0 = Enum (64, _("Bank Select")), 00121 MIDI_SIGNAL_CONTINUOUS_1 = Enum (65, _("Modulation Depth")), 00122 MIDI_SIGNAL_CONTINUOUS_2 = Enum (66, _("Breath Control")), 00123 MIDI_SIGNAL_CONTINUOUS_3 = Enum (67, _("Continuous 3")), 00124 MIDI_SIGNAL_CONTINUOUS_4 = Enum (68, _("Foot Controller")), 00125 MIDI_SIGNAL_CONTINUOUS_5 = Enum (69, _("Portamento Time")), 00126 MIDI_SIGNAL_CONTINUOUS_6 = Enum (70, _("Data Entry")), 00127 MIDI_SIGNAL_CONTINUOUS_7 = Enum (71, _("Volume")), 00128 MIDI_SIGNAL_CONTINUOUS_8 = Enum (72, _("Balance")), 00129 MIDI_SIGNAL_CONTINUOUS_9 = Enum (73, _("Continuous 9")), 00130 MIDI_SIGNAL_CONTINUOUS_10 = Enum (74, _("Panorama")), 00131 MIDI_SIGNAL_CONTINUOUS_11 = Enum (75, _("Expression")), 00132 MIDI_SIGNAL_CONTINUOUS_12 = Enum (76, _("Effect Control 1")), 00133 MIDI_SIGNAL_CONTINUOUS_13 = Enum (77, _("Effect Control 2")), 00134 MIDI_SIGNAL_CONTINUOUS_14 = Enum (78, _("Continuous 14")), 00135 MIDI_SIGNAL_CONTINUOUS_15 = Enum (79, _("Continuous 15")), 00136 MIDI_SIGNAL_CONTINUOUS_16 = Enum (80, _("General Purpose Controller 1")), 00137 MIDI_SIGNAL_CONTINUOUS_17 = Enum (81, _("General Purpose Controller 2")), 00138 MIDI_SIGNAL_CONTINUOUS_18 = Enum (82, _("General Purpose Controller 3")), 00139 MIDI_SIGNAL_CONTINUOUS_19 = Enum (83, _("General Purpose Controller 4")), 00140 MIDI_SIGNAL_CONTINUOUS_20 = Enum (84, _("Continuous 20")), 00141 MIDI_SIGNAL_CONTINUOUS_21 = Enum (85, _("Continuous 21")), 00142 MIDI_SIGNAL_CONTINUOUS_22 = Enum (86, _("Continuous 22")), 00143 MIDI_SIGNAL_CONTINUOUS_23 = Enum (87, _("Continuous 23")), 00144 MIDI_SIGNAL_CONTINUOUS_24 = Enum (88, _("Continuous 24")), 00145 MIDI_SIGNAL_CONTINUOUS_25 = Enum (89, _("Continuous 25")), 00146 MIDI_SIGNAL_CONTINUOUS_26 = Enum (90, _("Continuous 26")), 00147 MIDI_SIGNAL_CONTINUOUS_27 = Enum (91, _("Continuous 27")), 00148 MIDI_SIGNAL_CONTINUOUS_28 = Enum (92, _("Continuous 28")), 00149 MIDI_SIGNAL_CONTINUOUS_29 = Enum (93, _("Continuous 29")), 00150 MIDI_SIGNAL_CONTINUOUS_30 = Enum (94, _("Continuous 30")), 00151 MIDI_SIGNAL_CONTINUOUS_31 = Enum (95, _("Continuous 31")), 00152 /* 14bit, special cased signals */ 00153 MIDI_SIGNAL_CONSTANT_HIGH = Enum (96, _("Constant HIGH")), 00154 MIDI_SIGNAL_CONSTANT_CENTER = Enum (97, _("Constant CENTER")), 00155 MIDI_SIGNAL_CONSTANT_LOW = Enum (98, _("Constant LOW")), 00156 MIDI_SIGNAL_CONSTANT_NEGATIVE_CENTER = Enum (99, _("Constant Negative CENTER")), 00157 MIDI_SIGNAL_CONSTANT_NEGATIVE_HIGH = Enum (100, _("Constant Negative HIGH")), 00158 MIDI_SIGNAL_PARAMETER = Enum (101, _("Registered Parameter")), 00159 MIDI_SIGNAL_NON_PARAMETER = Enum (102, _("Non-Registered Parameter")), 00160 /* 7bit, literal channel controls, MSB values */ 00161 MIDI_SIGNAL_CONTROL_0 = Enum (128, _("Control 0 Bank Select MSB")), 00162 MIDI_SIGNAL_CONTROL_1 = Enum (129, _("Control 1 Modulation Depth MSB")), 00163 MIDI_SIGNAL_CONTROL_2 = Enum (130, _("Control 2 Breath Control MSB")), 00164 MIDI_SIGNAL_CONTROL_3 = Enum (131, _("control-3")), 00165 MIDI_SIGNAL_CONTROL_4 = Enum (132, _("Control 4 Foot Controller MSB")), 00166 MIDI_SIGNAL_CONTROL_5 = Enum (133, _("Control 5 Portamento Time MSB")), 00167 MIDI_SIGNAL_CONTROL_6 = Enum (134, _("Control 6 Data Entry MSB")), 00168 MIDI_SIGNAL_CONTROL_7 = Enum (135, _("Control 7 Volume MSB")), 00169 MIDI_SIGNAL_CONTROL_8 = Enum (136, _("Control 8 Balance MSB")), 00170 MIDI_SIGNAL_CONTROL_9 = Enum (137, _("control-9")), 00171 MIDI_SIGNAL_CONTROL_10 = Enum (138, _("Control 10 Panorama MSB")), 00172 MIDI_SIGNAL_CONTROL_11 = Enum (139, _("Control 11 Expression MSB")), 00173 MIDI_SIGNAL_CONTROL_12 = Enum (140, _("Control 12 Effect Control 1 MSB")), 00174 MIDI_SIGNAL_CONTROL_13 = Enum (141, _("Control 13 Effect Control 2 MSB")), 00175 MIDI_SIGNAL_CONTROL_14 = Enum (142, _("control-14")), 00176 MIDI_SIGNAL_CONTROL_15 = Enum (143, _("control-15")), 00177 MIDI_SIGNAL_CONTROL_16 = Enum (144, _("Control 16 General Purpose Controller 1 MSB")), 00178 MIDI_SIGNAL_CONTROL_17 = Enum (145, _("Control 17 General Purpose Controller 2 MSB")), 00179 MIDI_SIGNAL_CONTROL_18 = Enum (146, _("Control 18 General Purpose Controller 3 MSB")), 00180 MIDI_SIGNAL_CONTROL_19 = Enum (147, _("Control 19 General Purpose Controller 4 MSB")), 00181 MIDI_SIGNAL_CONTROL_20 = Enum (148, _("control-20")), 00182 MIDI_SIGNAL_CONTROL_21 = Enum (149, _("control-21")), 00183 MIDI_SIGNAL_CONTROL_22 = Enum (150, _("control-22")), 00184 MIDI_SIGNAL_CONTROL_23 = Enum (151, _("control-23")), 00185 MIDI_SIGNAL_CONTROL_24 = Enum (152, _("control-24")), 00186 MIDI_SIGNAL_CONTROL_25 = Enum (153, _("control-25")), 00187 MIDI_SIGNAL_CONTROL_26 = Enum (154, _("control-26")), 00188 MIDI_SIGNAL_CONTROL_27 = Enum (155, _("control-27")), 00189 MIDI_SIGNAL_CONTROL_28 = Enum (156, _("control-28")), 00190 MIDI_SIGNAL_CONTROL_29 = Enum (157, _("control-29")), 00191 MIDI_SIGNAL_CONTROL_30 = Enum (158, _("control-30")), 00192 MIDI_SIGNAL_CONTROL_31 = Enum (159, _("control-31")), 00193 /* 7bit, literal channel controls, LSB values */ 00194 MIDI_SIGNAL_CONTROL_32 = Enum (160, _("Control 32 Bank Select LSB")), 00195 MIDI_SIGNAL_CONTROL_33 = Enum (161, _("Control 33 Modulation Depth LSB")), 00196 MIDI_SIGNAL_CONTROL_34 = Enum (162, _("Control 34 Breath Control LSB")), 00197 MIDI_SIGNAL_CONTROL_35 = Enum (163, _("control-35")), 00198 MIDI_SIGNAL_CONTROL_36 = Enum (164, _("Control 36 Foot Controller LSB")), 00199 MIDI_SIGNAL_CONTROL_37 = Enum (165, _("Control 37 Portamento Time LSB")), 00200 MIDI_SIGNAL_CONTROL_38 = Enum (166, _("Control 38 Data Entry LSB")), 00201 MIDI_SIGNAL_CONTROL_39 = Enum (167, _("Control 39 Volume LSB")), 00202 MIDI_SIGNAL_CONTROL_40 = Enum (168, _("Control 40 Balance LSB")), 00203 MIDI_SIGNAL_CONTROL_41 = Enum (169, _("control-41")), 00204 MIDI_SIGNAL_CONTROL_42 = Enum (170, _("Control 42 Panorama LSB")), 00205 MIDI_SIGNAL_CONTROL_43 = Enum (171, _("Control 43 Expression LSB")), 00206 MIDI_SIGNAL_CONTROL_44 = Enum (172, _("Control 44 Effect Control 1 LSB")), 00207 MIDI_SIGNAL_CONTROL_45 = Enum (173, _("Control 45 Effect Control 2 LSB")), 00208 MIDI_SIGNAL_CONTROL_46 = Enum (174, _("control-46")), 00209 MIDI_SIGNAL_CONTROL_47 = Enum (175, _("control-47")), 00210 MIDI_SIGNAL_CONTROL_48 = Enum (176, _("Control 48 General Purpose Controller 1 LSB")), 00211 MIDI_SIGNAL_CONTROL_49 = Enum (177, _("Control 49 General Purpose Controller 2 LSB")), 00212 MIDI_SIGNAL_CONTROL_50 = Enum (178, _("Control 50 General Purpose Controller 3 LSB")), 00213 MIDI_SIGNAL_CONTROL_51 = Enum (179, _("Control 51 General Purpose Controller 4 LSB")), 00214 MIDI_SIGNAL_CONTROL_52 = Enum (180, _("control-52")), 00215 MIDI_SIGNAL_CONTROL_53 = Enum (181, _("control-53")), 00216 MIDI_SIGNAL_CONTROL_54 = Enum (182, _("control-54")), 00217 MIDI_SIGNAL_CONTROL_55 = Enum (183, _("control-55")), 00218 MIDI_SIGNAL_CONTROL_56 = Enum (184, _("control-56")), 00219 MIDI_SIGNAL_CONTROL_57 = Enum (185, _("control-57")), 00220 MIDI_SIGNAL_CONTROL_58 = Enum (186, _("control-58")), 00221 MIDI_SIGNAL_CONTROL_59 = Enum (187, _("control-59")), 00222 MIDI_SIGNAL_CONTROL_60 = Enum (188, _("control-60")), 00223 MIDI_SIGNAL_CONTROL_61 = Enum (189, _("control-61")), 00224 MIDI_SIGNAL_CONTROL_62 = Enum (190, _("control-62")), 00225 MIDI_SIGNAL_CONTROL_63 = Enum (191, _("control-63")), 00226 /* 7bit, literal channel controls */ 00227 MIDI_SIGNAL_CONTROL_64 = Enum (192, _("Control 64 Damper Pedal Switch (Sustain)")), 00228 MIDI_SIGNAL_CONTROL_65 = Enum (193, _("Control 65 Portamento Switch")), 00229 MIDI_SIGNAL_CONTROL_66 = Enum (194, _("Control 66 Sustenuto Switch")), 00230 MIDI_SIGNAL_CONTROL_67 = Enum (195, _("Control 67 Soft Switch")), 00231 MIDI_SIGNAL_CONTROL_68 = Enum (196, _("Control 68 Legato Pedal Switch")), 00232 MIDI_SIGNAL_CONTROL_69 = Enum (197, _("Control 69 Hold Pedal Switch")), 00233 MIDI_SIGNAL_CONTROL_70 = Enum (198, _("Control 70 Sound Variation")), 00234 MIDI_SIGNAL_CONTROL_71 = Enum (199, _("Control 71 Filter Resonance (Timbre)")), 00235 MIDI_SIGNAL_CONTROL_72 = Enum (200, _("Control 72 Sound Release Time")), 00236 MIDI_SIGNAL_CONTROL_73 = Enum (201, _("Control 73 Sound Attack Time")), 00237 MIDI_SIGNAL_CONTROL_74 = Enum (202, _("Control 74 Sound Brightness")), 00238 MIDI_SIGNAL_CONTROL_75 = Enum (203, _("Control 75 Sound Decay Time")), 00239 MIDI_SIGNAL_CONTROL_76 = Enum (204, _("Control 76 Vibrato Rate")), 00240 MIDI_SIGNAL_CONTROL_77 = Enum (205, _("Control 77 Vibrato Depth")), 00241 MIDI_SIGNAL_CONTROL_78 = Enum (206, _("Control 78 Vibrato Delay")), 00242 MIDI_SIGNAL_CONTROL_79 = Enum (207, _("Control 79 Sound Control 10")), 00243 MIDI_SIGNAL_CONTROL_80 = Enum (208, _("Control 80 General Purpose Switch 5")), 00244 MIDI_SIGNAL_CONTROL_81 = Enum (209, _("Control 81 General Purpose Switch 6")), 00245 MIDI_SIGNAL_CONTROL_82 = Enum (210, _("Control 82 General Purpose Switch 7")), 00246 MIDI_SIGNAL_CONTROL_83 = Enum (211, _("Control 83 General Purpose Switch 8")), 00247 MIDI_SIGNAL_CONTROL_84 = Enum (212, _("Control 84 Portamento Control (Note)")), 00248 MIDI_SIGNAL_CONTROL_85 = Enum (213, _("control-85")), 00249 MIDI_SIGNAL_CONTROL_86 = Enum (214, _("control-86")), 00250 MIDI_SIGNAL_CONTROL_87 = Enum (215, _("control-87")), 00251 MIDI_SIGNAL_CONTROL_88 = Enum (216, _("control-88")), 00252 MIDI_SIGNAL_CONTROL_89 = Enum (217, _("control-89")), 00253 MIDI_SIGNAL_CONTROL_90 = Enum (218, _("control-90")), 00254 MIDI_SIGNAL_CONTROL_91 = Enum (219, _("Control 91 Reverb Depth")), 00255 MIDI_SIGNAL_CONTROL_92 = Enum (220, _("Control 92 Tremolo Depth")), 00256 MIDI_SIGNAL_CONTROL_93 = Enum (221, _("Control 93 Chorus Depth")), 00257 MIDI_SIGNAL_CONTROL_94 = Enum (222, _("Control 93 Detune Depth")), 00258 MIDI_SIGNAL_CONTROL_95 = Enum (223, _("Control 95 Phase Depth")), 00259 MIDI_SIGNAL_CONTROL_96 = Enum (224, _("Control 96 Data Increment Trigger")), 00260 MIDI_SIGNAL_CONTROL_97 = Enum (225, _("Control 97 Data Decrement Trigger")), 00261 MIDI_SIGNAL_CONTROL_98 = Enum (226, _("Control 98 Non-Registered Parameter MSB")), 00262 MIDI_SIGNAL_CONTROL_99 = Enum (227, _("Control 99 Non-Registered Parameter LSB")), 00263 MIDI_SIGNAL_CONTROL_100 = Enum (228, _("Control 100 Registered Parameter MSB")), 00264 MIDI_SIGNAL_CONTROL_101 = Enum (229, _("Control 101 Registered Parameter LSB")), 00265 MIDI_SIGNAL_CONTROL_102 = Enum (230, _("control-102")), 00266 MIDI_SIGNAL_CONTROL_103 = Enum (231, _("control-103")), 00267 MIDI_SIGNAL_CONTROL_104 = Enum (232, _("control-104")), 00268 MIDI_SIGNAL_CONTROL_105 = Enum (233, _("control-105")), 00269 MIDI_SIGNAL_CONTROL_106 = Enum (234, _("control-106")), 00270 MIDI_SIGNAL_CONTROL_107 = Enum (235, _("control-107")), 00271 MIDI_SIGNAL_CONTROL_108 = Enum (236, _("control-108")), 00272 MIDI_SIGNAL_CONTROL_109 = Enum (237, _("control-109")), 00273 MIDI_SIGNAL_CONTROL_110 = Enum (238, _("control-110")), 00274 MIDI_SIGNAL_CONTROL_111 = Enum (239, _("control-111")), 00275 MIDI_SIGNAL_CONTROL_112 = Enum (240, _("control-112")), 00276 MIDI_SIGNAL_CONTROL_113 = Enum (241, _("control-113")), 00277 MIDI_SIGNAL_CONTROL_114 = Enum (242, _("control-114")), 00278 MIDI_SIGNAL_CONTROL_115 = Enum (243, _("control-115")), 00279 MIDI_SIGNAL_CONTROL_116 = Enum (244, _("control-116")), 00280 MIDI_SIGNAL_CONTROL_117 = Enum (245, _("control-117")), 00281 MIDI_SIGNAL_CONTROL_118 = Enum (246, _("control-118")), 00282 MIDI_SIGNAL_CONTROL_119 = Enum (247, _("control-119")), 00283 MIDI_SIGNAL_CONTROL_120 = Enum (248, _("Control 120 All Sound Off ITrigger")), 00284 MIDI_SIGNAL_CONTROL_121 = Enum (249, _("Control 121 All Controllers Off ITrigger")), 00285 MIDI_SIGNAL_CONTROL_122 = Enum (250, _("Control 122 Local Control Switch")), 00286 MIDI_SIGNAL_CONTROL_123 = Enum (251, _("Control 123 All Notes Off ITrigger")), 00287 MIDI_SIGNAL_CONTROL_124 = Enum (252, _("Control 124 Omni Mode Off ITrigger")), 00288 MIDI_SIGNAL_CONTROL_125 = Enum (253, _("Control 125 Omni Mode On ITrigger")), 00289 MIDI_SIGNAL_CONTROL_126 = Enum (254, _("Control 126 Monophonic Voices Mode")), 00290 MIDI_SIGNAL_CONTROL_127 = Enum (255, _("Control 127 Polyphonic Mode On ITrigger")), 00291 }; 00292 enum MidiControlType { 00293 /* special cased signals */ 00294 MIDI_CONTROL_NONE = Enum (0, _("None")), 00295 /* 14bit, continuous controls */ 00296 MIDI_CONTROL_CONTINUOUS_0 = Enum (64, _("Bank Select"), _("Continuous MIDI Control #1 - Bank Select")), 00297 MIDI_CONTROL_CONTINUOUS_1 = Enum (65, _("Modulation Depth")), 00298 MIDI_CONTROL_CONTINUOUS_2 = Enum (66, _("Breath Control")), 00299 MIDI_CONTROL_CONTINUOUS_3 = Enum (67, _("Continuous 3")), 00300 MIDI_CONTROL_CONTINUOUS_4 = Enum (68, _("Foot Controller")), 00301 MIDI_CONTROL_CONTINUOUS_5 = Enum (69, _("Portamento Time")), 00302 MIDI_CONTROL_CONTINUOUS_6 = Enum (70, _("Data Entry")), 00303 MIDI_CONTROL_CONTINUOUS_7 = Enum (71, _("Volume")), 00304 MIDI_CONTROL_CONTINUOUS_8 = Enum (72, _("Balance")), 00305 MIDI_CONTROL_CONTINUOUS_9 = Enum (73, _("Continuous 9")), 00306 MIDI_CONTROL_CONTINUOUS_10 = Enum (74, _("Panorama")), 00307 MIDI_CONTROL_CONTINUOUS_11 = Enum (75, _("Expression")), 00308 MIDI_CONTROL_CONTINUOUS_12 = Enum (76, _("Effect Control 1")), 00309 MIDI_CONTROL_CONTINUOUS_13 = Enum (77, _("Effect Control 2")), 00310 MIDI_CONTROL_CONTINUOUS_14 = Enum (78, _("Continuous 14")), 00311 MIDI_CONTROL_CONTINUOUS_15 = Enum (79, _("Continuous 15")), 00312 MIDI_CONTROL_CONTINUOUS_16 = Enum (80, _("General Purpose Controller 1")), 00313 MIDI_CONTROL_CONTINUOUS_17 = Enum (81, _("General Purpose Controller 2")), 00314 MIDI_CONTROL_CONTINUOUS_18 = Enum (82, _("General Purpose Controller 3")), 00315 MIDI_CONTROL_CONTINUOUS_19 = Enum (83, _("General Purpose Controller 4")), 00316 MIDI_CONTROL_CONTINUOUS_20 = Enum (84, _("Continuous 20")), 00317 MIDI_CONTROL_CONTINUOUS_21 = Enum (85, _("Continuous 21")), 00318 MIDI_CONTROL_CONTINUOUS_22 = Enum (86, _("Continuous 22")), 00319 MIDI_CONTROL_CONTINUOUS_23 = Enum (87, _("Continuous 23")), 00320 MIDI_CONTROL_CONTINUOUS_24 = Enum (88, _("Continuous 24")), 00321 MIDI_CONTROL_CONTINUOUS_25 = Enum (89, _("Continuous 25")), 00322 MIDI_CONTROL_CONTINUOUS_26 = Enum (90, _("Continuous 26")), 00323 MIDI_CONTROL_CONTINUOUS_27 = Enum (91, _("Continuous 27")), 00324 MIDI_CONTROL_CONTINUOUS_28 = Enum (92, _("Continuous 28")), 00325 MIDI_CONTROL_CONTINUOUS_29 = Enum (93, _("Continuous 29")), 00326 MIDI_CONTROL_CONTINUOUS_30 = Enum (94, _("Continuous 30")), 00327 MIDI_CONTROL_CONTINUOUS_31 = Enum (95, _("Continuous 31")), 00328 /* 7bit, literal channel controls, MSB values */ 00329 MIDI_CONTROL_0 = Enum (128, _("Control 0 Bank Select MSB")), 00330 MIDI_CONTROL_1 = Enum (129, _("Control 1 Modulation Depth MSB")), 00331 MIDI_CONTROL_2 = Enum (130, _("Control 2 Breath Control MSB")), 00332 MIDI_CONTROL_3 = Enum (131, _("control-3")), 00333 MIDI_CONTROL_4 = Enum (132, _("Control 4 Foot Controller MSB")), 00334 MIDI_CONTROL_5 = Enum (133, _("Control 5 Portamento Time MSB")), 00335 MIDI_CONTROL_6 = Enum (134, _("Control 6 Data Entry MSB")), 00336 MIDI_CONTROL_7 = Enum (135, _("Control 7 Volume MSB")), 00337 MIDI_CONTROL_8 = Enum (136, _("Control 8 Balance MSB")), 00338 MIDI_CONTROL_9 = Enum (137, _("control-9")), 00339 MIDI_CONTROL_10 = Enum (138, _("Control 10 Panorama MSB")), 00340 MIDI_CONTROL_11 = Enum (139, _("Control 11 Expression MSB")), 00341 MIDI_CONTROL_12 = Enum (140, _("Control 12 Effect Control 1 MSB")), 00342 MIDI_CONTROL_13 = Enum (141, _("Control 13 Effect Control 2 MSB")), 00343 MIDI_CONTROL_14 = Enum (142, _("control-14")), 00344 MIDI_CONTROL_15 = Enum (143, _("control-15")), 00345 MIDI_CONTROL_16 = Enum (144, _("Control 16 General Purpose Controller 1 MSB")), 00346 MIDI_CONTROL_17 = Enum (145, _("Control 17 General Purpose Controller 2 MSB")), 00347 MIDI_CONTROL_18 = Enum (146, _("Control 18 General Purpose Controller 3 MSB")), 00348 MIDI_CONTROL_19 = Enum (147, _("Control 19 General Purpose Controller 4 MSB")), 00349 MIDI_CONTROL_20 = Enum (148, _("control-20")), 00350 MIDI_CONTROL_21 = Enum (149, _("control-21")), 00351 MIDI_CONTROL_22 = Enum (150, _("control-22")), 00352 MIDI_CONTROL_23 = Enum (151, _("control-23")), 00353 MIDI_CONTROL_24 = Enum (152, _("control-24")), 00354 MIDI_CONTROL_25 = Enum (153, _("control-25")), 00355 MIDI_CONTROL_26 = Enum (154, _("control-26")), 00356 MIDI_CONTROL_27 = Enum (155, _("control-27")), 00357 MIDI_CONTROL_28 = Enum (156, _("control-28")), 00358 MIDI_CONTROL_29 = Enum (157, _("control-29")), 00359 MIDI_CONTROL_30 = Enum (158, _("control-30")), 00360 MIDI_CONTROL_31 = Enum (159, _("control-31")), 00361 /* 7bit, literal channel controls, LSB values */ 00362 MIDI_CONTROL_32 = Enum (160, _("Control 32 Bank Select LSB")), 00363 MIDI_CONTROL_33 = Enum (161, _("Control 33 Modulation Depth LSB")), 00364 MIDI_CONTROL_34 = Enum (162, _("Control 34 Breath Control LSB")), 00365 MIDI_CONTROL_35 = Enum (163, _("control-35")), 00366 MIDI_CONTROL_36 = Enum (164, _("Control 36 Foot Controller LSB")), 00367 MIDI_CONTROL_37 = Enum (165, _("Control 37 Portamento Time LSB")), 00368 MIDI_CONTROL_38 = Enum (166, _("Control 38 Data Entry LSB")), 00369 MIDI_CONTROL_39 = Enum (167, _("Control 39 Volume LSB")), 00370 MIDI_CONTROL_40 = Enum (168, _("Control 40 Balance LSB")), 00371 MIDI_CONTROL_41 = Enum (169, _("control-41")), 00372 MIDI_CONTROL_42 = Enum (170, _("Control 42 Panorama LSB")), 00373 MIDI_CONTROL_43 = Enum (171, _("Control 43 Expression LSB")), 00374 MIDI_CONTROL_44 = Enum (172, _("Control 44 Effect Control 1 LSB")), 00375 MIDI_CONTROL_45 = Enum (173, _("Control 45 Effect Control 2 LSB")), 00376 MIDI_CONTROL_46 = Enum (174, _("control-46")), 00377 MIDI_CONTROL_47 = Enum (175, _("control-47")), 00378 MIDI_CONTROL_48 = Enum (176, _("Control 48 General Purpose Controller 1 LSB")), 00379 MIDI_CONTROL_49 = Enum (177, _("Control 49 General Purpose Controller 2 LSB")), 00380 MIDI_CONTROL_50 = Enum (178, _("Control 50 General Purpose Controller 3 LSB")), 00381 MIDI_CONTROL_51 = Enum (179, _("Control 51 General Purpose Controller 4 LSB")), 00382 MIDI_CONTROL_52 = Enum (180, _("control-52")), 00383 MIDI_CONTROL_53 = Enum (181, _("control-53")), 00384 MIDI_CONTROL_54 = Enum (182, _("control-54")), 00385 MIDI_CONTROL_55 = Enum (183, _("control-55")), 00386 MIDI_CONTROL_56 = Enum (184, _("control-56")), 00387 MIDI_CONTROL_57 = Enum (185, _("control-57")), 00388 MIDI_CONTROL_58 = Enum (186, _("control-58")), 00389 MIDI_CONTROL_59 = Enum (187, _("control-59")), 00390 MIDI_CONTROL_60 = Enum (188, _("control-60")), 00391 MIDI_CONTROL_61 = Enum (189, _("control-61")), 00392 MIDI_CONTROL_62 = Enum (190, _("control-62")), 00393 MIDI_CONTROL_63 = Enum (191, _("control-63")), 00394 /* 7bit, literal channel controls */ 00395 MIDI_CONTROL_64 = Enum (192, _("Control 64 Damper Pedal Switch (Sustain)")), 00396 MIDI_CONTROL_65 = Enum (193, _("Control 65 Portamento Switch")), 00397 MIDI_CONTROL_66 = Enum (194, _("Control 66 Sustenuto Switch")), 00398 MIDI_CONTROL_67 = Enum (195, _("Control 67 Soft Switch")), 00399 MIDI_CONTROL_68 = Enum (196, _("Control 68 Legato Pedal Switch")), 00400 MIDI_CONTROL_69 = Enum (197, _("Control 69 Hold Pedal Switch")), 00401 MIDI_CONTROL_70 = Enum (198, _("Control 70 Sound Variation")), 00402 MIDI_CONTROL_71 = Enum (199, _("Control 71 Filter Resonance (Timbre)")), 00403 MIDI_CONTROL_72 = Enum (200, _("Control 72 Sound Release Time")), 00404 MIDI_CONTROL_73 = Enum (201, _("Control 73 Sound Attack Time")), 00405 MIDI_CONTROL_74 = Enum (202, _("Control 74 Sound Brightness")), 00406 MIDI_CONTROL_75 = Enum (203, _("Control 75 Sound Decay Time")), 00407 MIDI_CONTROL_76 = Enum (204, _("Control 76 Vibrato Rate")), 00408 MIDI_CONTROL_77 = Enum (205, _("Control 77 Vibrato Depth")), 00409 MIDI_CONTROL_78 = Enum (206, _("Control 78 Vibrato Delay")), 00410 MIDI_CONTROL_79 = Enum (207, _("Control 79 Sound Control 10")), 00411 MIDI_CONTROL_80 = Enum (208, _("Control 80 General Purpose Switch 5")), 00412 MIDI_CONTROL_81 = Enum (209, _("Control 81 General Purpose Switch 6")), 00413 MIDI_CONTROL_82 = Enum (210, _("Control 82 General Purpose Switch 7")), 00414 MIDI_CONTROL_83 = Enum (211, _("Control 83 General Purpose Switch 8")), 00415 MIDI_CONTROL_84 = Enum (212, _("Control 84 Portamento Control (Note)")), 00416 MIDI_CONTROL_85 = Enum (213, _("control-85")), 00417 MIDI_CONTROL_86 = Enum (214, _("control-86")), 00418 MIDI_CONTROL_87 = Enum (215, _("control-87")), 00419 MIDI_CONTROL_88 = Enum (216, _("control-88")), 00420 MIDI_CONTROL_89 = Enum (217, _("control-89")), 00421 MIDI_CONTROL_90 = Enum (218, _("control-90")), 00422 MIDI_CONTROL_91 = Enum (219, _("Control 91 Reverb Depth")), 00423 MIDI_CONTROL_92 = Enum (220, _("Control 92 Tremolo Depth")), 00424 MIDI_CONTROL_93 = Enum (221, _("Control 93 Chorus Depth")), 00425 MIDI_CONTROL_94 = Enum (222, _("Control 93 Detune Depth")), 00426 MIDI_CONTROL_95 = Enum (223, _("Control 95 Phase Depth")), 00427 MIDI_CONTROL_96 = Enum (224, _("Control 96 Data Increment Trigger")), 00428 MIDI_CONTROL_97 = Enum (225, _("Control 97 Data Decrement Trigger")), 00429 MIDI_CONTROL_98 = Enum (226, _("Control 98 Non-Registered Parameter MSB")), 00430 MIDI_CONTROL_99 = Enum (227, _("Control 99 Non-Registered Parameter LSB")), 00431 MIDI_CONTROL_100 = Enum (228, _("Control 100 Registered Parameter MSB")), 00432 MIDI_CONTROL_101 = Enum (229, _("Control 101 Registered Parameter LSB")), 00433 MIDI_CONTROL_102 = Enum (230, _("control-102")), 00434 MIDI_CONTROL_103 = Enum (231, _("control-103")), 00435 MIDI_CONTROL_104 = Enum (232, _("control-104")), 00436 MIDI_CONTROL_105 = Enum (233, _("control-105")), 00437 MIDI_CONTROL_106 = Enum (234, _("control-106")), 00438 MIDI_CONTROL_107 = Enum (235, _("control-107")), 00439 MIDI_CONTROL_108 = Enum (236, _("control-108")), 00440 MIDI_CONTROL_109 = Enum (237, _("control-109")), 00441 MIDI_CONTROL_110 = Enum (238, _("control-110")), 00442 MIDI_CONTROL_111 = Enum (239, _("control-111")), 00443 MIDI_CONTROL_112 = Enum (240, _("control-112")), 00444 MIDI_CONTROL_113 = Enum (241, _("control-113")), 00445 MIDI_CONTROL_114 = Enum (242, _("control-114")), 00446 MIDI_CONTROL_115 = Enum (243, _("control-115")), 00447 MIDI_CONTROL_116 = Enum (244, _("control-116")), 00448 MIDI_CONTROL_117 = Enum (245, _("control-117")), 00449 MIDI_CONTROL_118 = Enum (246, _("control-118")), 00450 MIDI_CONTROL_119 = Enum (247, _("control-119")), 00451 MIDI_CONTROL_120 = Enum (248, _("Control 120 All Sound Off ITrigger")), 00452 MIDI_CONTROL_121 = Enum (249, _("Control 121 All Controllers Off ITrigger")), 00453 MIDI_CONTROL_122 = Enum (250, _("Control 122 Local Control Switch")), 00454 MIDI_CONTROL_123 = Enum (251, _("Control 123 All Notes Off ITrigger")), 00455 MIDI_CONTROL_124 = Enum (252, _("Control 124 Omni Mode Off ITrigger")), 00456 MIDI_CONTROL_125 = Enum (253, _("Control 125 Omni Mode On ITrigger")), 00457 MIDI_CONTROL_126 = Enum (254, _("Control 126 Monophonic Voices Mode")), 00458 MIDI_CONTROL_127 = Enum (255, _("Control 127 Polyphonic Mode On ITrigger")), 00459 }; 00460 enum MidiChannelEventType { 00461 MIDI_EVENT_NONE = 0, 00462 /* channel voice messages */ 00463 MIDI_EVENT_NOTE_OFF, 00464 MIDI_EVENT_NOTE_ON, 00465 MIDI_EVENT_KEY_PRESSURE, 00466 MIDI_EVENT_CONTROL_CHANGE, 00467 MIDI_EVENT_PROGRAM_CHANGE, 00468 MIDI_EVENT_CHANNEL_PRESSURE, 00469 MIDI_EVENT_PITCH_BEND, 00470 /* system common messages */ 00471 MIDI_EVENT_SYS_EX, 00472 MIDI_EVENT_SONG_POINTER, 00473 MIDI_EVENT_SONG_SELECT, 00474 MIDI_EVENT_TUNE, 00475 /* system realtime messages */ 00476 MIDI_EVENT_TIMING_CLOCK, 00477 MIDI_EVENT_SONG_START, 00478 MIDI_EVENT_SONG_CONTINUE, 00479 MIDI_EVENT_SONG_STOP, 00480 MIDI_EVENT_ACTIVE_SENSING, 00481 MIDI_EVENT_SYSTEM_RESET, 00482 }; 00483 record MidiChannelEvent 00484 { 00485 MidiChannelEventType event_type; 00486 Int channel = SfiInt ("Channel", "", 0, 0, 99, 1, ":readwrite"); // FIXME: MAX_MIDI_CHANNEL 00487 Num tick_stamp = SfiNum ("Time Stamp", "", 0, 0, SFI_MAXNUM, 0, STANDARD); 00488 /* note (on/off/pressure) */ 00489 Real frequency = Freq ("Frequency", "", KAMMER_FREQ, ":readwrite"); 00490 Real velocity = SfiReal ("Velocity", "", 1, 0, 1.0, 0.1, ":readwrite"); 00491 /* control change */ 00492 Int control = SfiInt ("Control Number", "", 0, 0, 1024, 8, ":readwrite"); 00493 Real value = SfiReal ("Value", "", 0, -1, +1, 0.1, ":readwrite"); 00494 /* program change */ 00495 Int program = SfiInt ("Program", "", 0, 0, 0x7f, 0x10, ":readwrite"); 00496 /* channel pressure */ 00497 Real intensity = SfiReal ("Intensity", "", 0, 0, 1.0, 0.1, ":readwrite"); 00498 /* pitch bend */ 00499 Real pitch_bend = SfiReal ("Pitch Bend", "", 0, -1, +1, 0.1, ":readwrite"); 00500 /* song pointer */ 00501 Int song_pointer = SfiInt ("Song Pointer", "", 0, 0, 0x3fff, 0x80, ":readwrite"); 00502 /* song select */ 00503 Int song_number = SfiInt ("Song Number", "", 0, 0, 0x7f, 0x10, ":readwrite"); 00504 }; 00505 sequence NoteSeq { 00506 Int notes = Note ("Note", "", KAMMER_NOTE, ":readwrite"); /* FIXME: s/notes/note/ for pspecs, but not the C API */ 00507 }; 00508 interface Item; 00509 sequence ItemSeq { 00510 Info blurb = ("A list of BSE items or derived types."); 00511 Item items; 00512 }; 00513 record PropertyCandidates { 00514 Info blurb = ("A strcuture describing tentative property values."); 00515 String label; 00516 String tooltip; 00517 ItemSeq items; 00518 TypeSeq partitions = SfiSeq ("Type Partitions", "List of types which may logically partition the list of items by type discrimination", STANDARD); 00519 }; 00520 record PartNote 00521 { 00522 Info blurb = "Part specific note representation"; 00523 Int id = SfiUInt ("ID", "", 0, ":readwrite"); 00524 Int channel = SfiInt ("Channel", "", 0, 0, MAXINT, 1, ":readwrite"); 00525 Int tick = SfiInt ("Tick", "", 0, 0, MAXINT, 1, ":readwrite"); 00526 Int duration = SfiInt ("Duration", "Duration in number of ticks", 0, 0, MAXINT, 1, ":readwrite"); 00527 Int note = Note ("Note", "", KAMMER_NOTE, ":readwrite"); 00528 Int fine_tune = SfiInt ("Fine Tune", "", 0, MIN_FINE_TUNE, MAX_FINE_TUNE, 1, ":readwrite"); 00529 Real velocity = SfiReal ("Velocity", "", 1, 0, 1.0, 0.1, ":readwrite"); 00530 Bool selected = SfiBool ("Selected", "", FALSE, ":readwrite"); 00531 }; 00532 sequence PartNoteSeq { 00533 Info blurb = "A list of part notes"; 00534 PartNote pnotes; 00535 }; 00536 record PartControl 00537 { 00538 Info blurb = "Part specific control event representation"; 00539 Int id = SfiUInt ("ID", "", 0, ":readwrite"); 00540 Int tick = SfiInt ("Tick", "", 0, 0, MAXINT, 1, ":readwrite"); 00541 MidiSignalType control_type; 00542 Real value = SfiReal ("Value", "", 0, -1, +1, 0.1, ":readwrite"); 00543 Bool selected = SfiBool ("Selected", "", FALSE, ":readwrite"); 00544 }; 00545 sequence PartControlSeq { 00546 Info blurb = "A list of part control events"; 00547 PartControl pcontrols; 00548 }; 00549 record NoteDescription 00550 { 00551 MusicalTuningType musical_tuning; 00552 Int note = Note ("Note", "", KAMMER_NOTE, ":readwrite"); 00553 Int octave = Octave ("Octave", "", KAMMER_OCTAVE, ":readwrite"); 00554 Real freq = Freq ("Frequency", "", KAMMER_FREQ, ":readwrite"); 00555 Int fine_tune = FineTune ("Fine Tune", "", ":readwrite"); 00556 Int semitone = SfiInt ("Semitone", "", 0, 0, 11, 1, ":readwrite"); 00557 Bool upshift; 00558 Int letter = SfiInt ("Letter", "International abbreviation letter for this note", 64, 32, 126, 1, ":readwrite"); 00559 String name = String ("Name", "", "", ":readwrite"); 00560 /* constants */ 00561 Int max_fine_tune = SfiInt ("Max Fine Tune", "", MAX_FINE_TUNE, MAX_FINE_TUNE, MAX_FINE_TUNE, 0, ":readable"); 00562 Int kammer_note = SfiInt ("Kammer Note", "", KAMMER_NOTE, KAMMER_NOTE, KAMMER_NOTE, 0, ":readable"); 00563 Info blurb = "A note description provides all necessary details about a specific note. " 00564 "Various procedures exist to retrieve a note description; given different " 00565 "key values. The max_fine_tune and kammer_note fields are constants, which " 00566 "are provided for compatibility reasons and will vanish in future APIs."; 00567 }; 00568 record NoteSequence 00569 { 00570 Int offset = Note ("Note Offset", "Center/base note", KAMMER_NOTE, ":readwrite"); 00571 NoteSeq notes = SfiSeq ("Notes", "Sequence of notes", ":readwrite"); 00572 }; 00573 sequence PixelSeq { 00574 Int pixels; 00575 }; 00576 record Icon 00577 { 00578 Info blurb = "BSE icon representation."; 00579 Int width = SfiInt ("Width", "Width in pixels or 0 for no icon", 0, 0, MAXINT, 1, ":readwrite"); 00580 Int height = SfiInt ("Height", "Height in pixels or 0 for no icon", 0, 0, MAXINT, 1, ":readwrite"); 00581 PixelSeq pixel_seq = SfiSeq ("Pixels", "Pixel array of width*height ARGB pixels", ":readwrite"); 00582 }; 00583 record Category 00584 { 00585 Int category_id = SfiInt ("Category ID", "", 1, 1, G_MAXINT, 1, ":readwrite"); 00586 String category; 00587 Int mindex; 00588 Int lindex; 00589 String type; 00590 Icon icon; 00591 }; 00592 sequence CategorySeq { 00593 Category cats; 00594 }; 00595 record Dot 00596 { 00597 Real x; 00598 Real y; 00599 }; 00600 sequence DotSeq { 00601 Dot dots; 00602 }; 00603 /* BSE Part structures */ 00604 interface Part; 00605 interface Track; 00606 record PartLink { 00607 Track track; 00608 Int tick = SfiInt ("Tick", "", 0, 0, G_MAXINT, 384, STANDARD); 00609 Part part; 00610 Int duration = SfiInt ("Duration", "", 0, 0, G_MAXINT, 384, STANDARD); 00611 // Int count; /* 1 + repetitions */ 00612 }; 00613 sequence PartLinkSeq { 00614 PartLink plinks; 00615 }; 00616 /* BSE Track structures */ 00617 record TrackPart { 00618 Int tick = SfiInt ("Tick", "", 0, 0, G_MAXINT, 384, STANDARD); 00619 Part part; 00620 Int duration = SfiInt ("Duration", "", 0, 0, G_MAXINT, 384, STANDARD); 00621 }; 00622 sequence TrackPartSeq { 00623 TrackPart tparts; 00624 }; 00625 /* BSE Song timing structure */ 00626 record SongTiming { 00627 /* song position timing applies to */ 00628 Int tick = SfiInt ("Current tick", "", 0, 0, G_MAXINT, 384, STANDARD); 00629 /* tempo */ 00630 Real bpm = SfiReal ("Beats per minute", "", 120, BSE_MIN_BPM, BSE_MAX_BPM, 10, STANDARD); 00631 /* signature */ 00632 Int numerator = SfiInt ("Numerator", "Number of notes per measure", 4, 1, 256, 2, STANDARD); 00633 Int denominator = SfiInt ("Denominator", "Type of notes counted per measure", 4, 1, 256, 2, STANDARD); 00634 /* sequencer timing */ 00635 Int tpqn = SfiInt ("Ticks per quarter note", "", 384, 1, G_MAXINT, 12, STANDARD); 00636 Int tpt = SfiInt ("Ticks per tact", "", 384, 1, G_MAXINT, 12, STANDARD); 00637 /* playback timing */ 00638 Real stamp_ticks = SfiReal ("Ticks per stamp increment (valid only during playback)", "", 384, 1, G_MAXINT, 12, STANDARD); 00639 }; 00640 record SampleFileInfo { 00641 String file = SfiString ("Filename", "", "", STANDARD); 00642 Int size = SfiInt ("File Size", "", 0, 0, G_MAXINT, 0, STANDARD); 00643 Num mtime = SfiNum ("Modification Time", "", 0, 0, SFI_MAXNUM, 0, STANDARD); 00644 String loader = SfiString ("Loader", "", "", STANDARD); 00645 StringSeq waves = SfiSeq ("", "", STANDARD); 00646 Int error = SfiInt ("BseErrorType", "", 0, 0, G_MAXINT, 0, STANDARD); // FIXME: use BseErrorType here 00647 }; 00648 interface Janitor; 00649 00650 // == BSE Global Config == 00651 Const DEFAULT_AUTHOR = "\357\277\271\357\277\272{{bse.idl/default-author}}\357\277\273"; 00652 Const DEFAULT_LICENSE = "\357\277\271\357\277\272{{bse.idl/default-license}}\357\277\273"; 00653 Const USER_DATA_PATH = "\357\277\271\357\277\272{{bse.idl/user-data-path}}\357\277\273"; 00654 Const DEFAULT_SAMPLE_PATH = USER_DATA_PATH "samples"; 00655 Const DEFAULT_EFFECTS_PATH = USER_DATA_PATH "effects"; 00656 Const DEFAULT_INSTRUMENTS_PATH = USER_DATA_PATH "instruments"; 00657 Const DEFAULT_SCRIPTS_PATH = USER_DATA_PATH "scripts"; 00658 Const DEFAULT_PLUGINS_PATH = USER_DATA_PATH "plugins"; 00659 00660 record GConfig { 00661 group _("Synthesis Settings") { 00662 Int synth_latency = 00663 SfiInt (_("Latency [ms]"), 00664 _("Processing duration between input and output of a single sample, smaller values increase CPU load"), 00665 50, 1, 2000, 5, STANDARD); 00666 Int synth_mixing_freq = 00667 SfiInt (_("Synth Mixing Frequency"), 00668 _("Synthesis mixing frequency, common values are: 22050, 44100, 48000"), 00669 44100, 8000, 192000, 0, STANDARD); 00670 Int synth_control_freq = 00671 SfiInt (_("Synth Control Frequency"), 00672 _("Frequency at which control values are evaluated, " 00673 "should be much smaller than Synth Mixing Frequency to reduce CPU load"), 00674 1000, 1, 192000, 0, STANDARD); 00675 }; 00676 group _("MIDI") { 00677 Bool invert_sustain = SfiBool (_("Invert Sustain Pedal"), 00678 _("Invert the state of sustain (damper) pedal so on/off meanings are reversed"), 00679 FALSE, STANDARD); 00680 }; 00681 group _("Default Values") { 00682 String author_default = SfiString (_("Default Author"), _("Default value for 'Author' fields"), 00683 DEFAULT_AUTHOR, STANDARD); 00684 String license_default = SfiString (_("Default License"), _("Default value for 'License' fields"), 00685 DEFAULT_LICENSE, STANDARD); 00686 }; 00687 group _("Search Paths") { 00688 String sample_path = SfiString (_("Sample Path"), 00689 _("Search path of directories, seperated by \";\", used to find audio samples."), 00690 DEFAULT_SAMPLE_PATH, STANDARD ":searchpath"); 00691 String effect_path = SfiString (_("Effect Path"), 00692 _("Search path of directories, seperated by \";\", used to find BSE effect files."), 00693 DEFAULT_EFFECTS_PATH, STANDARD ":searchpath"); 00694 String instrument_path = SfiString (_("Instrument Path"), 00695 _("Search path of directories, seperated by \";\", used to find BSE instrument files."), 00696 DEFAULT_INSTRUMENTS_PATH, STANDARD ":searchpath"); 00697 String script_path = SfiString (_("Script Path"), 00698 _("Search path of directories, seperated by \";\", used to find BSE scheme scripts."), 00699 DEFAULT_SCRIPTS_PATH, STANDARD ":searchpath"); 00700 String plugin_path = SfiString (_("Plugin Path"), 00701 _("Search path of directories, seperated by \";\", used to find BSE plugins. This path " 00702 "is searched for in addition to the standard BSE plugin location on this system."), 00703 DEFAULT_PLUGINS_PATH, STANDARD ":searchpath"); 00704 String ladspa_path = SfiString (_("LADSPA Path"), 00705 _("Search path of directories, seperated by \";\", used to find LADSPA plugins. This " 00706 "path is searched for in addition to the standard LADSPA location on this system. " 00707 "LADSPA is the Linux Audio Developer's Simple Plugin API, more informations about " 00708 "LADSPA plugins can be found at http://www.ladspa.org/."), 00709 "", STANDARD ":searchpath"); 00710 }; 00711 }; 00712 00713 } // Bse