source: roaraudio/roard/include/midi.h @ 1918:7ce15e2fdc76

Last change on this file since 1918:7ce15e2fdc76 was 1892:d796cfcc4f1a, checked in by phi, 15 years ago

added some important controler codes

File size: 3.5 KB
RevLine 
[169]1//midi.h:
2
[668]3/*
4 *      Copyright (C) Philipp 'ph3-der-loewe' Schafft - 2008
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, 675 Mass Ave, Cambridge, MA 02139, USA.
22 *
23 */
24
[169]25#ifndef _MIDI_H_
26#define _MIDI_H_
27
28#include <roaraudio.h>
29
[188]30#ifdef __linux__
31#include <sys/ioctl.h>
32#include <linux/kd.h>
33#endif
34
[189]35#define MIDI_CB_NOOVERRIDE 0
36#define MIDI_CB_OVERRIDE   1
37
[1848]38#define MIDI_RATE    31250
39
[1852]40// standard MIDI commands:
41#define MIDI_TYPE_NOTE_ON       0x80
42#define MIDI_TYPE_NOTE_OFF      0x90
43#define MIDI_TYPE_PA            0xA0
44#define MIDI_TYPE_CONTROLER     0xB0
45#define MIDI_TYPE_PROGRAM       0xC0
[1864]46#define MIDI_TYPE_MA            0xD0
[1852]47#define MIDI_TYPE_PB            0xE0
48#define MIDI_TYPE_SYSEX         0xF0
49#define MIDI_TYPE_CLOCK_TICK    0xF8
50#define MIDI_TYPE_CLOCK_START   0xFA
51#define MIDI_TYPE_CLOCK_STOP    0xFC
52
53// RoarAudio MIDI Commands:
54#define MIDI_TYPE_NONE          0x00
55#define MIDI_TYPE_RAW_PASS      0x10
56#define MIDI_TYPE_RAW_NOPASS    0x20
57
[1892]58// controller events:
59#define MIDI_CCE_MAIN_VOL        7
60#define MIDI_CCE_BALANCE         8
61#define MIDI_CCE_PANORAMA       10
62#define MIDI_CCE_LOCAL_CONTR   122
63#define MIDI_CCE_ALL_NOTE_OFF  123
64
65
[1852]66#define MIDI_MES_BUFSIZE        4
[1858]67#define MIDI_READ_SIZE          256 /* this should be big enoth in both cfreq=20..100Hz mode */
[1852]68
69#define MIDI_MFLAG_FREE_DP     (1<<0)
70
71struct midi_message {
72 unsigned char   type;
73 unsigned char   channel;
74 unsigned char   flags;
75 unsigned char   kk;
76 unsigned char   vv;
77 size_t          datalen;
78 unsigned char * dataptr;
79 union {
80  unsigned char           ldata[MIDI_MES_BUFSIZE];
81  struct roar_note_octave note;
82 }               d;
83};
84
[1863]85struct {
86 struct roar_buffer * buf;
87} g_midi_mess;
[1852]88
[1853]89struct {
90 int      console;
91 int      stream;
92 uint32_t stoptime;
93 int      playing;
94} g_midi_cb;
[1848]95
[1850]96struct {
97 int stream;
98 uint_least32_t bph; // beats per hour
[1852]99 uint_least32_t spt; // samples per tick
100 uint32_t       nt;  // time of next tick
[1850]101} g_midi_clock;
[192]102
[1858]103
104// general midi interface:
[185]105int midi_init (void);
106int midi_free (void);
107
[1841]108int midi_update(void);
[1855]109int midi_reinit(void);
[1841]110
[1858]111// streams:
[1841]112int midi_check_stream  (int id);
113int midi_send_stream   (int id);
114
[1858]115int midi_conv_midi2mes (int id);
116int midi_conv_mes2midi (int id);
117
[1863]118int midi_new_bufmes    (struct roar_buffer ** buf, struct midi_message ** mes);
[1866]119int midi_add_buf       (int id, struct roar_buffer * buf);
[1863]120
[1858]121// bridges:
[1848]122int midi_check_bridge  (int id);
123
[1858]124// clock:
[1848]125int midi_clock_init (void);
[1852]126int midi_clock_set_bph (uint_least32_t bph);
127int midi_clock_tick (void);
[1848]128
[185]129// cb = console beep
[1843]130int midi_cb_init(void);
131int midi_cb_free(void);
[185]132int midi_cb_play(float t, float freq, int override);
[190]133int midi_cb_update (void);
[185]134int midi_cb_start(float freq);
135int midi_cb_stop (void);
[1882]136int midi_cb_readbuf(void);
[185]137
[1848]138// dummys:
139int     midi_vio_set_dummy(int stream);
140int     midi_vio_ok(struct roar_vio_calls * vio, ...);
141
[169]142#endif
143
144//ll
Note: See TracBrowser for help on using the repository browser.