MuseScore/aeolus/messages.h
2013-04-22 17:18:03 +02:00

339 lines
6.4 KiB
C++

/*
Copyright (C) 2003-2008 Fons Adriaensen <fons@kokkinizita.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifndef __MESSAGES_H
#define __MESSAGES_H
#include "rankwave.h"
#include "asection.h"
#include "addsynth.h"
#include "global.h"
class ITC_mesg {
public:
ITC_mesg() {}
ITC_mesg(int) {};
};
enum
{
FM_SLAVE = 8,
FM_IFACE = 9,
FM_MODEL = 10,
FM_IMIDI = 11,
FM_AUDIO = 12,
FM_TXTIP = 13,
TO_SLAVE = 8,
TO_IFACE = 9,
TO_MODEL = 10,
TO_IMIDI = 11,
TO_AUDIO = 12,
EV_RLINE = 0,
EV_XWIN = 16,
EV_QMIDI = 24,
EV_SYNC = 30,
EV_EXIT = 31
};
enum
{
MT_AUDIO_INFO,
MT_AUDIO_SYNC,
MT_MIDI_INFO,
MT_NEW_DIVIS,
MT_CALC_RANK,
MT_LOAD_RANK,
MT_SAVE_RANK,
MT_IFC_INIT,
MT_IFC_READY,
MT_IFC_ELCLR, // must be in this order
MT_IFC_ELSET, //
MT_IFC_ELXOR, //
MT_IFC_ELATT,
MT_IFC_GRCLR,
MT_IFC_AUPAR,
MT_IFC_DIPAR,
MT_IFC_RETUNE,
MT_IFC_ANOFF,
MT_IFC_MCSET,
MT_IFC_MCGET,
MT_IFC_PRRCL,
MT_IFC_PRDEC,
MT_IFC_PRINC,
MT_IFC_PRSTO,
MT_IFC_PRINS,
MT_IFC_PRDEL,
MT_IFC_PRGET,
MT_IFC_EDIT,
MT_IFC_APPLY,
MT_IFC_SAVE,
MT_IFC_TXTIP
};
#define SRC_GUI_DRAG 100
#define SRC_GUI_DONE 101
#define SRC_MIDI_PAR 200
class M_midi_info : public ITC_mesg
{
public:
M_midi_info (void) : ITC_mesg (MT_MIDI_INFO) {}
int _client;
int _ipport;
uint16_t _chbits [16];
};
class M_new_divis : public ITC_mesg
{
public:
M_new_divis (void) : ITC_mesg (MT_NEW_DIVIS) {}
int _flags;
int _dmask;
int _asect;
float _swell;
float _tfreq;
float _tmodd;
};
class M_def_rank : public ITC_mesg
{
public:
M_def_rank (int type) : ITC_mesg (type) {}
int _divis;
int _rank;
int _group;
int _ifelm;
float _fsamp;
float _fbase;
float *_scale;
Addsynth *_sdef;
Rankwave *_wave;
const char *_path;
};
//---------------------------------------------------------
// M_ifc_init
//---------------------------------------------------------
class M_ifc_init : public ITC_mesg
{
public:
M_ifc_init () : ITC_mesg (MT_IFC_INIT) {}
const char *_stops;
const char *_waves;
const char *_instr;
const char *_appid;
int _client;
int _ipport;
int _nasect;
int _nkeybd;
int _ndivis;
int _ngroup;
int _ntempe;
struct {
const char *_label;
int _flags;
} _keybdd [NKEYBD];
struct {
const char *_label;
int _asect;
int _flags;
} _divisd [NDIVIS];
struct {
const char *_label;
int _nifelm;
struct {
const char *_label;
const char *_mnemo;
int _type;
} _ifelmd [32];
} _groupd [8];
struct {
const char *_label;
const char *_mnemo;
} _temped [16];
};
class M_ifc_ifelm : public ITC_mesg
{
public:
M_ifc_ifelm (int type, int g, int i) :
ITC_mesg (type),
_group (g),
_ifelm (i)
{}
int _group;
int _ifelm;
};
class M_ifc_aupar : public ITC_mesg
{
public:
M_ifc_aupar (int s, int a, int p, float v) :
ITC_mesg (MT_IFC_AUPAR),
_srcid (s),
_asect (a),
_parid (p),
_value (v)
{}
int _srcid;
int _asect;
int _parid;
float _value;
};
class M_ifc_dipar : public ITC_mesg
{
public:
M_ifc_dipar (int s, int d, int p, float v) :
ITC_mesg (MT_IFC_DIPAR),
_srcid (s),
_divis (d),
_parid (p),
_value (v)
{}
int _srcid;
int _divis;
int _parid;
float _value;
};
class M_ifc_retune : public ITC_mesg
{
public:
M_ifc_retune (float f, int t) :
ITC_mesg (MT_IFC_RETUNE),
_freq (f),
_temp (t)
{}
float _freq;
int _temp;
};
class M_ifc_anoff : public ITC_mesg
{
public:
M_ifc_anoff (int bits) :
ITC_mesg (MT_IFC_ANOFF),
_bits (bits)
{
}
int _bits;
};
class M_ifc_chconf : public ITC_mesg
{
public:
M_ifc_chconf (int type, int index, uint16_t *bits) :
ITC_mesg (type),
_index (index)
{
if (bits) memcpy (_bits, bits, 16 * sizeof (uint16_t));
else memset (_bits, 0, 16 * sizeof (uint16_t));
}
int _index;
uint16_t _bits [16];
};
class M_ifc_preset : public ITC_mesg
{
public:
M_ifc_preset (int type, int bank, int pres, int stat, uint32_t *bits) :
ITC_mesg (type),
_bank (bank),
_pres (pres),
_stat (stat)
{
if (bits) memcpy (_bits, bits, NGROUP * sizeof (uint32_t));
else memset (_bits, 0, NGROUP * sizeof (uint32_t));
}
int _bank;
int _pres;
int _stat;
uint32_t _bits [NGROUP];
};
class M_ifc_edit : public ITC_mesg
{
public:
M_ifc_edit (int type, int group, int ifelm, Addsynth *synth) :
ITC_mesg (type),
_group (group),
_ifelm (ifelm),
_synth (synth)
{}
int _group;
int _ifelm;
Addsynth *_synth;
};
class M_ifc_txtip : public ITC_mesg
{
public:
M_ifc_txtip (void) :
ITC_mesg (MT_IFC_TXTIP),
_line (0)
{}
char *_line;
};
#endif