/[svn]/linuxsampler/trunk/src/common/global.h
ViewVC logotype

Contents of /linuxsampler/trunk/src/common/global.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 738 - (show annotations) (download) (as text)
Tue Aug 16 17:14:25 2005 UTC (18 years, 8 months ago) by schoenebeck
File MIME type: text/x-c++hdr
File size: 5214 byte(s)
* extensive synthesis optimization: reimplementation of EGs and LFO(s),
  removed synthesis parameter prerendering and the synthesis parameter
  matrix in general, splitting each audio fragment into subfragments now
  where each subfragment uses constant synthesis parameters
  (everything's still very buggy ATM)

1 /***************************************************************************
2 * *
3 * LinuxSampler - modular, streaming capable sampler *
4 * *
5 * Copyright (C) 2003, 2004 by Benno Senoner and Christian Schoenebeck *
6 * Copyright (C) 2005 Christian Schoenebeck *
7 * *
8 * This program is free software; you can redistribute it and/or modify *
9 * it under the terms of the GNU General Public License as published by *
10 * the Free Software Foundation; either version 2 of the License, or *
11 * (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., 59 Temple Place, Suite 330, Boston, *
21 * MA 02111-1307 USA *
22 ***************************************************************************/
23
24 // All application global declarations are defined here.
25
26 #ifndef __GLOBAL_H__
27 #define __GLOBAL_H__
28
29 #include <stdlib.h>
30 #include <stdint.h>
31 #include <stdio.h>
32
33 #include <string>
34 #include <sstream>
35
36 #ifdef HAVE_CONFIG_H
37 # include <config.h>
38 #endif
39
40 // Make sure all mandatory configuration macros are defined.
41 // We don't care about optional configuration macros though.
42 #ifndef CONFIG_MAX_PITCH
43 # error "Configuration macro CONFIG_MAX_PITCH not defined!"
44 #endif // CONFIG_MAX_PITCH
45 #ifndef CONFIG_MAX_EVENTS_PER_FRAGMENT
46 # error "Configuration macro CONFIG_MAX_EVENTS_PER_FRAGMENT not defined!"
47 #endif // CONFIG_MAX_EVENTS_PER_FRAGMENT
48 #ifndef CONFIG_EG_BOTTOM
49 # error "Configuration macro CONFIG_EG_BOTTOM not defined!"
50 #endif // CONFIG_EG_BOTTOM
51 #ifndef CONFIG_EG_MIN_RELEASE_TIME
52 # error "Configuration macro CONFIG_EG_MIN_RELEASE_TIME not defined!"
53 #endif // CONFIG_EG_MIN_RELEASE_TIME
54 #ifndef CONFIG_REFILL_STREAMS_PER_RUN
55 # error "Configuration macro CONFIG_REFILL_STREAMS_PER_RUN not defined!"
56 #endif // CONFIG_REFILL_STREAMS_PER_RUN
57 #ifndef CONFIG_STREAM_MIN_REFILL_SIZE
58 # error "Configuration macro CONFIG_STREAM_MIN_REFILL_SIZE not defined!"
59 #endif // CONFIG_STREAM_MIN_REFILL_SIZE
60 #ifndef CONFIG_STREAM_MAX_REFILL_SIZE
61 # error "Configuration macro CONFIG_STREAM_MAX_REFILL_SIZE not defined!"
62 #endif // CONFIG_STREAM_MAX_REFILL_SIZE
63 #ifndef CONFIG_STREAM_BUFFER_SIZE
64 # error "Configuration macro CONFIG_STREAM_BUFFER_SIZE not defined!"
65 #endif // CONFIG_STREAM_BUFFER_SIZE
66 #ifndef CONFIG_MAX_STREAMS
67 # error "Configuration macro CONFIG_MAX_STREAMS not defined!"
68 #endif // CONFIG_MAX_STREAMS
69 #ifndef CONFIG_MAX_VOICES
70 # error "Configuration macro CONFIG_MAX_VOICES not defined!"
71 #endif // CONFIG_MAX_VOICES
72 #ifndef CONFIG_DEFAULT_SUBFRAGMENT_SIZE
73 # error "Configuration macro CONFIG_DEFAULT_SUBFRAGMENT_SIZE not defined!"
74 #endif // CONFIG_DEFAULT_SUBFRAGMENT_SIZE
75 #ifndef CONFIG_VOICE_STEAL_ALGO
76 # error "Configuration macro CONFIG_VOICE_STEAL_ALGO not defined!"
77 #endif // CONFIG_VOICE_STEAL_ALGO
78 #ifndef CONFIG_SYSEX_BUFFER_SIZE
79 # error "Configuration macro CONFIG_SYSEX_BUFFER_SIZE not defined!"
80 #endif // CONFIG_SYSEX_BUFFER_SIZE
81 #ifndef CONFIG_FILTER_CUTOFF_MIN
82 # error "Configuration macro CONFIG_FILTER_CUTOFF_MIN not defined!"
83 #endif // CONFIG_FILTER_CUTOFF_MIN
84 #ifndef CONFIG_FILTER_CUTOFF_MAX
85 # error "Configuration macro CONFIG_FILTER_CUTOFF_MAX not defined!"
86 #endif // CONFIG_FILTER_CUTOFF_MAX
87
88 #if CONFIG_DEBUG_LEVEL > 0
89 # define dmsg(debuglevel,x) if (CONFIG_DEBUG_LEVEL >= debuglevel) {printf x; fflush(stdout);}
90 #else
91 # define dmsg(debuglevel,x)
92 #endif // CONFIG_DEBUG_LEVEL > 0
93
94 #define EMMS __asm__ __volatile__ ("emms" ::: "st", "st(1)", "st(2)", "st(3)", "st(4)", "st(5)", "st(6)", "st(7)", "mm0", "mm1", "mm2", "mm3", "mm4", "mm5", "mm6", "mm7")
95
96 /// defines globally the bit depth of used samples
97 typedef int16_t sample_t;
98
99 typedef std::string String;
100
101 /**
102 * Whether a function / method call was successful, or if warnings or even an
103 * error occured.
104 */
105 enum result_type_t {
106 result_type_success,
107 result_type_warning,
108 result_type_error
109 };
110
111 /**
112 * Used whenever a detailed description of the result of a function / method
113 * call is needed.
114 */
115 struct result_t {
116 result_type_t type; ///< success, warning or error
117 int code; ///< warning or error code
118 String message; ///< detailed warning or error message
119 };
120
121 template<class T> inline String ToString(T o) {
122 std::stringstream ss;
123 ss << o;
124 return ss.str();
125 }
126
127 #endif // __GLOBAL_H__

  ViewVC Help
Powered by ViewVC