source: roaraudio/roard/include/ssynth.h @ 5192:4237437ca526

Last change on this file since 5192:4237437ca526 was 5192:4237437ca526, checked in by phi, 13 years ago

declare some stuff 'extern', this saves like 5.3KB of diskspace in plugin files and make them more resistant against changes in roard

File size: 2.5 KB
Line 
1//ssynth.h:
2
3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2009-2011
5 *
6 *  This file is part of roard a part of RoarAudio,
7 *  a cross-platform sound system for both, home and professional use.
8 *  See README for details.
9 *
10 *  This file is free software; you can redistribute it and/or modify
11 *  it under the terms of the GNU General Public License version 3
12 *  as published by the Free Software Foundation.
13 *
14 *  RoarAudio is distributed in the hope that it will be useful,
15 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17 *  GNU General Public License for more details.
18 *
19 *  You should have received a copy of the GNU General Public License
20 *  along with this software; see the file COPYING.  If not, write to
21 *  the Free Software Foundation, 51 Franklin Street, Fifth Floor,
22 *  Boston, MA 02110-1301, USA.
23 *
24 */
25
26#ifndef _SSYNTH_H_
27#define _SSYNTH_H_
28
29#include <roaraudio.h>
30
31// we relay on the MIDI subsystem
32#if defined(ROAR_WITHOUT_DCOMP_MIDI) && !defined(ROAR_WITHOUT_DCOMP_SSYNTH)
33#define ROAR_WITHOUT_DCOMP_SSYNTH
34#endif
35
36#ifndef ROAR_WITHOUT_DCOMP_SSYNTH
37
38#define SSYNTH_NOTES_MAX            16
39
40#define SSYNTH_STAGE_NONE            0
41#define SSYNTH_STAGE_UNUSED          SSYNTH_STAGE_NONE
42#define SSYNTH_STAGE_KEYSTROKE       1
43#define SSYNTH_STAGE_MIDSECTION      2
44#define SSYNTH_STAGE_KEYRELEASE      3
45
46#define SSYNTH_POLY_KEYDOWN          0
47#define SSYNTH_POLY_KEYUP            1
48#define SSYNTH_POLY_POLYMAX          2
49
50#define SSYNTH_POLY_COEFF            4
51
52extern float ssynth_polys[SSYNTH_POLY_POLYMAX][SSYNTH_POLY_COEFF];
53
54struct {
55 int enable;
56} ssynth_conf;
57
58extern struct ssynth_state {
59 int stream;
60 struct {
61  int stage;
62  char vv_down, vv_up;
63  struct roar_note_octave   note;
64  struct roar_synth_state   synth;
65  struct roar_fader_state   fader;
66  struct roar_buffer      * buf;
67 } notes[SSYNTH_NOTES_MAX];
68} g_ssynth;
69
70int ssynth_init_config(void);
71
72int ssynth_init (void);
73int ssynth_free (void);
74
75int ssynth_update (void);
76
77int ssynth_note_new(struct roar_note_octave * note, char vv);
78int ssynth_note_free(int id);
79int ssynth_note_find(struct roar_note_octave * note);
80
81int ssynth_note_set_stage(int id, int stage);
82
83int ssynth_note_render   (int id, void * data);
84
85int ssynth_note_on       (struct roar_note_octave * note, char vv);
86int ssynth_note_off      (struct roar_note_octave * note, char vv);
87
88int ssynth_eval_message (struct midi_message * mes);
89
90#endif
91
92#endif
93
94//ll
Note: See TracBrowser for help on using the repository browser.