BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
bsebasics.idl
Go to the documentation of this file.
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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines