2
* Advanced Linux Sound Architecture
4
* FM (OPL2/3) Instrument Format
5
* Copyright (c) 2000 Uros Bizjak <uros@kss-loka.si>
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License as published by
10
* the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
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 for more details.
18
* You should have received a copy of the GNU General Public License
19
* along with this program; if not, write to the Free Software
20
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
24
#ifndef __SOUND_AINSTR_FM_H
25
#define __SOUND_AINSTR_FM_H
29
#include <asm/types.h>
30
#include <asm/byteorder.h>
35
* share types (share ID 1)
38
#define FM_SHARE_FILE 0
44
typedef struct fm_operator {
46
unsigned char ksl_level;
47
unsigned char attack_decay;
48
unsigned char sustain_release;
49
unsigned char wave_select;
56
#define FM_PATCH_OPL2 0x01 /* OPL2 2 operators FM instrument */
57
#define FM_PATCH_OPL3 0x02 /* OPL3 4 operators FM instrument */
60
unsigned int share_id[4]; /* share id - zero = no sharing */
61
unsigned char type; /* instrument type */
64
unsigned char feedback_connection[2];
66
unsigned char echo_delay;
67
unsigned char echo_atten;
68
unsigned char chorus_spread;
70
unsigned char fix_dur;
72
unsigned char fix_key;
77
* Kernel <-> user space
78
* Hardware (CPU) independent section
83
* fm_xinstrument FM_STRU_INSTR
87
#define FM_STRU_INSTR __cpu_to_be32(('I'<<24)|('N'<<16)|('S'<<8)|'T')
93
typedef struct fm_xoperator {
105
typedef struct fm_xinstrument {
106
__u32 stype; /* structure type */
108
__u32 share_id[4]; /* share id - zero = no sharing */
109
__u8 type; /* instrument type */
111
fm_xoperator_t op[4]; /* fm operators */
112
__u8 feedback_connection[2];
125
#include "seq_instr.h"
127
extern char *snd_seq_fm_id;
129
int snd_seq_fm_init(snd_seq_kinstr_ops_t * ops,
130
snd_seq_kinstr_ops_t * next);
134
#endif /* __SOUND_AINSTR_FM_H */