LMMS
Loading...
Searching...
No Matches
Master.h
Go to the documentation of this file.
1/*
2 ZynAddSubFX - a software synthesizer
3
4 Master.h - It sends Midi Messages to Parts, receives samples from parts,
5 process them with system/insertion effects and mix them
6 Copyright (C) 2002-2005 Nasca Octavian Paul
7 Author: Nasca Octavian Paul
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of version 2 of the GNU General Public License
11 as published by the Free Software Foundation.
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 (version 2 or later) for more details.
17
18 You should have received a copy of the GNU General Public License (version 2)
19 along with this program; if not, write to the Free Software Foundation,
20 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21
22*/
23
24#ifndef MASTER_H
25#define MASTER_H
26#include "ThreadShims.h"
27
28#include "../globals.h"
29#include "Microtonal.h"
30
31#include "Bank.h"
32#include "Recorder.h"
33#include "Dump.h"
34#include "XMLwrapper.h"
35
37
41
42extern Dump dump;
43
50
51
54class Master
55{
56 public:
58 Master();
60 ~Master();
61
62 static Master &getInstance();
63 static void deleteInstance();
64
67 int saveXML(const char *filename);
68
70 void add2XML(XMLwrapper *xml);
71
72 void defaults();
73
74
77 int loadXML(const char *filename);
78 void applyparameters(bool lockmutex = true);
79
80 void getfromXML(XMLwrapper *xml);
81
84 int getalldata(char **data);
86 void putalldata(char *data, int size);
87
88 //Mutex control
93
94 //Midi IN
95 void noteOn(char chan, char note, char velocity);
96 void noteOff(char chan, char note);
97 void polyphonicAftertouch(char chan, char note, char velocity);
98 void setController(char chan, int type, int par);
99 void setProgram(char chan, unsigned int pgm);
100 //void NRPN...
101
102
103 void ShutUp();
105
106 void vuUpdate(const float *outl, const float *outr);
107
109 void AudioOut(float *outl, float *outr);
111 void GetAudioOutSamples(size_t nsamples,
112 unsigned samplerate,
113 float *outl,
114 float *outr);
115
116
117 void partonoff(int npart, int what);
118
121
122 //parameters
123
124 unsigned char Pvolume;
125 unsigned char Pkeyshift;
128
129 //parameters control
130 void setPvolume(char Pvolume_);
131 void setPkeyshift(char Pkeyshift_);
132 void setPsysefxvol(int Ppart, int Pefx, char Pvol);
133 void setPsysefxsend(int Pefxfrom, int Pefxto, char Pvol);
134
135 //effects
136 class EffectMgr * sysefx[NUM_SYS_EFX]; //system
137 class EffectMgr * insefx[NUM_INS_EFX]; //insertion
138// void swapcopyeffects(int what,int type,int neff1,int neff2);
139
140 //HDD recorder
142
143 //part that's apply the insertion effect; -1 to disable
145
146
147 //peaks for VU-meter
148 void vuresetpeaks();
149 //get VU-meter data
151
152 //peaks for part VU-meters
155 unsigned char fakepeakpart[NUM_MIDI_PARTS]; //this is used to compute the "peak" when the part is disabled
156
158 bool swaplr; //if L and R are swapped
159
160 //other objects
163
165 std::mutex mutex;
166 std::mutex vumutex;
167
168
169 private:
171 float volume;
175
176 //information relevent to generating plugin audio samples
177 float *bufl;
178 float *bufr;
180 size_t smps;
181};
182
183#endif
#define NUM_INS_EFX
Definition globals.h:125
#define NUM_MIDI_PARTS
Definition globals.h:99
#define NUM_SYS_EFX
Definition globals.h:119
lockset
Definition Master.h:38
@ MUTEX_UNLOCK
Definition Master.h:39
@ MUTEX_LOCK
Definition Master.h:39
@ MUTEX_TRYLOCK
Definition Master.h:39
CAdPlugDatabase::CRecord::RecordType type
Definition adplugdb.cpp:93
Definition Bank.h:34
Definition Controller.h:9
Definition Dump.h:32
Definition EffectMgr.h:44
Definition FFTwrapper.h:32
void AudioOut(float *outl, float *outr)
Definition Master.cpp:323
float * bufl
Definition Master.h:177
int getalldata(char **data)
Definition Master.cpp:668
float vuoutpeakpart[NUM_MIDI_PARTS]
Definition Master.h:154
~Master()
Definition Master.cpp:521
class Part * part[NUM_MIDI_PARTS]
Definition Master.h:120
void setPvolume(char Pvolume_)
Definition Master.cpp:540
bool mutexLock(lockset request)
Definition Master.cpp:111
vuData vu
Definition Master.h:170
vuData getVuData()
Definition Master.cpp:598
unsigned char Pkeyshift
Definition Master.h:125
class EffectMgr * sysefx[NUM_SYS_EFX]
Definition Master.h:136
float volume
Definition Master.h:171
off_t off
Definition Master.h:179
class EffectMgr * insefx[NUM_INS_EFX]
Definition Master.h:137
void ShutUp()
Definition Master.cpp:569
void add2XML(XMLwrapper *xml)
Definition Master.cpp:613
void setPkeyshift(char Pkeyshift_)
Definition Master.cpp:546
float * bufr
Definition Master.h:178
void setPsysefxvol(int Ppart, int Pefx, char Pvol)
Definition Master.cpp:553
void getfromXML(XMLwrapper *xml)
Definition Master.cpp:737
std::mutex mutex
Definition Master.h:165
void noteOff(char chan, char note)
Definition Master.cpp:162
void defaults()
Definition Master.cpp:79
int shutup
Definition Master.h:104
short int Pinsparts[NUM_INS_EFX]
Definition Master.h:144
void applyparameters(bool lockmutex=true)
Definition Master.cpp:607
int saveXML(const char *filename)
Definition Master.cpp:705
size_t smps
Definition Master.h:180
std::mutex vumutex
Definition Master.h:166
void vuresetpeaks()
Definition Master.cpp:587
bool swaplr
Definition Master.h:158
Bank bank
Definition Master.h:162
int keyshift
Definition Master.h:174
Master()
Definition Master.cpp:48
Recorder HDDRecorder
Definition Master.h:141
void setController(char chan, int type, int par)
Definition Master.cpp:188
float sysefxvol[NUM_SYS_EFX][NUM_MIDI_PARTS]
Definition Master.h:172
void putalldata(char *data, int size)
Definition Master.cpp:685
static Master & getInstance()
Definition Master.cpp:124
void GetAudioOutSamples(size_t nsamples, unsigned samplerate, float *outl, float *outr)
Definition Master.cpp:485
void setPsysefxsend(int Pefxfrom, int Pefxto, char Pvol)
Definition Master.cpp:559
void setProgram(char chan, unsigned int pgm)
Definition Master.cpp:232
void vuUpdate(const float *outl, const float *outr)
Definition Master.cpp:250
unsigned char Psysefxsend[NUM_SYS_EFX][NUM_SYS_EFX]
Definition Master.h:127
Microtonal microtonal
Definition Master.h:161
int loadXML(const char *filename)
Definition Master.cpp:720
static void deleteInstance()
Definition Master.cpp:132
float sysefxsend[NUM_SYS_EFX][NUM_SYS_EFX]
Definition Master.h:173
void noteOn(char chan, char note, char velocity)
Definition Master.cpp:144
unsigned char Pvolume
Definition Master.h:124
Controller ctl
Definition Master.h:157
class FFTwrapper * fft
Definition Master.h:164
unsigned char fakepeakpart[NUM_MIDI_PARTS]
Definition Master.h:155
void polyphonicAftertouch(char chan, char note, char velocity)
Definition Master.cpp:172
unsigned char Psysefxvol[NUM_SYS_EFX][NUM_MIDI_PARTS]
Definition Master.h:126
void partonoff(int npart, int what)
Definition Master.cpp:300
Definition Microtonal.h:37
Definition Part.h:45
Definition Recorder.h:30
static char filename[]
Definition features.c:5
JSAMPIMAGE data
Definition jpeglib.h:945
Dump dump
Definition Dump.cpp:27
Definition Master.h:44
float maxoutpeakr
Definition Master.h:46
float outpeakr
Definition Master.h:46
vuData(void)
Definition Master.cpp:41
float rmspeakr
Definition Master.h:47
float maxoutpeakl
Definition Master.h:46
float outpeakl
Definition Master.h:46
float rmspeakl
Definition Master.h:47
int clipped
Definition Master.h:48
ulg size
Definition extract.c:2350
zoff_t request
Definition extract.c:1037