1 //=========================================================
2 //  MusE
3 //  Linux Music Editor
4 //  $Id: globaldefs.h,v 1.3.2.1 2009/05/03 04:14:00 terminator356 Exp $
5 //
6 //  (C) Copyright 2000 Werner Schweer (ws@seh.de)
7 //
8 //  This program is free software; you can redistribute it and/or
9 //  modify it under the terms of the GNU General Public License
10 //  as published by the Free Software Foundation; version 2 of
11 //  the License, or (at your option) any later version.
12 //
13 //  This program is distributed in the hope that it will be useful,
14 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
15 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 //  GNU General Public License for more details.
17 //
18 //  You should have received a copy of the GNU General Public License
19 //  along with this program; if not, write to the Free Software
20 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
21 //
22 //=========================================================
23 
24 #ifndef __GLOBALDEFS_H__
25 #define __GLOBALDEFS_H__
26 
27 namespace MusECore {
28 
29 // Midi Type
30 //    MT_GM  - General Midi
31 //    MT_GS  - Roland GS
32 //    MT_XG  - Yamaha XG
33 //    MT_GM2 - General Midi Level 2
34 
35 enum MType { MT_UNKNOWN=0, MT_GM, MT_GS, MT_XG, MT_GM2 };
36 
37 enum AutomationType {
38       AUTO_OFF, AUTO_READ, AUTO_TOUCH, AUTO_WRITE
39       };
40 
41 // Can be Or'd together.
42 enum PluginFeature {
43   PluginNoFeatures = 0x00,
44   PluginFixedBlockSize = 0x01,
45   PluginPowerOf2BlockSize = 0x02,
46   PluginNoInPlaceProcessing = 0x04,
47   PluginCoarseBlockSize = 0x08 };
48 typedef int PluginFeatures_t;
49 
50 enum VstPluginFlags
51 {
52   vstPluginNoFlags          = 0,
53   canSendVstEvents          = 1 << 0,
54   canSendVstMidiEvents      = 1 << 1,
55   canSendVstTimeInfo        = 1 << 2,
56   canReceiveVstEvents       = 1 << 3,
57   canReceiveVstMidiEvents   = 1 << 4,
58   canReceiveVstTimeInfo     = 1 << 5,
59   canProcessVstOffline      = 1 << 6,
60   canUseVstAsInsert         = 1 << 7,
61   canUseVstAsSend           = 1 << 8,
62   canMixVstDryWet           = 1 << 9,
63   canVstMidiProgramNames    = 1 << 10
64 };
65 typedef int VstPluginFlags_t;
66 
67 // Absolute max number of plugins in mixer rack (if we ever want to increase PipelineDepth).
68 // Used to determine the index where special blocks (dssi ladspa controls) appear in the list of controllers.
69 // The special block(s) must appear AFTER any rack plugins, so we need this variable to help us
70 //  leave some room in case we ever want to increase the number of rack plugins.
71 const int MAX_PLUGINS  = 8;
72 
73 // plugins in mixer rack, max up to MAX_PLUGINS
74 const int PipelineDepth = 8;
75 
76 // max audio channels
77 const int MAX_CHANNELS = 2;
78 
79 // max Number of Midi Ports
80 const int MIDI_PORTS   = 200;
81 
82 // Midi channels per Port
83 const int MUSE_MIDI_CHANNELS = 16;
84 
85 const double MIN_TEMPO_VAL = 20.0;
86 const double MAX_TEMPO_VAL = 400.0;
87 
88 } // namespace MusECore
89 
90 
91 namespace MusEGui {
92 
93 enum EditInstrumentTabType {
94   EditInstrumentPatches=0,
95   EditInstrumentDrumMaps=1,
96   EditInstrumentControllers=2,
97   EditInstrumentSysex=3,
98   EditInstrumentInitSeq=4 };
99 
100 enum class MidiEventColorMode {
101   blueEvents,
102   pitchColorEvents,
103   velocityColorEvents,
104   lastInList
105 };
106 
107 // The default amount of space before bar # 1 (or the start of a part).
108 const int DefaultCanvasXOrigin = -16;
109 
110 } // namespace MusEGui
111 
112 
113 #endif
114 
115