blob: ffb9b07633877e2ee3c994905567c5967d6e6fc9 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
#ifndef __DRUMGIZMO_DRUMGIZMO_H__
#define __DRUMGIZMO_DRUMGIZMO_H__
#include <string>
#include <list>
#include "audiooutputengine.h"
#include "audioinputengine.h"
#include "events.h"
#include "audiofile.h"
#include "drumkit.h"
#include "drumkitloader.h"
#include "mutex.h"
#include "message.h"
#define MAX_NUM_CHANNELS 512
class DrumGizmo {
public:
DrumGizmo(AudioOutputEngine *outputengine,
AudioInputEngine *inputengine);
~DrumGizmo();
bool loadkit(std::string kitfile);
std::string drumkitfile();
bool init(bool preload = true);
void run();
bool run(size_t pos, sample_t *samples, size_t nsamples);
void stop();
void getSamples(int ch, int pos, sample_t *s, size_t sz);
bool isRunning() { return is_running; }
std::string configString();
bool setConfigString(std::string cfg);
std::string kitfile;
Message *receiveGUIMessage();
Message *peekGUIMessage();
void sendEngineMessage(Message *msg);
Message *receiveEngineMessage();
Message *peekEngineMessage();
void sendGUIMessage(Message *msg);
private:
void handleEngineEvents();
Mutex gui_message_mutex;
std::list<Message *> gui_message_queue;
Mutex engine_message_mutex;
std::list<Message *> engine_message_queue;
DrumKitLoader loader;
Mutex mutex;
bool is_running;
AudioOutputEngine *oe;
AudioInputEngine *ie;
std::list< Event* > activeevents[MAX_NUM_CHANNELS];
std::map<std::string, AudioFile *> audiofiles;
#ifdef TEST_DRUMGIZMO
public:
#endif
DrumKit kit;
};
#endif
|