0001
0002 #ifndef __OPL3_VOICE_H
0003 #define __OPL3_VOICE_H
0004
0005
0006
0007
0008
0009 #include <sound/opl3.h>
0010
0011
0012 int snd_opl3_synth_use_inc(struct snd_opl3 * opl3);
0013 void snd_opl3_synth_use_dec(struct snd_opl3 * opl3);
0014 int snd_opl3_synth_setup(struct snd_opl3 * opl3);
0015 void snd_opl3_synth_cleanup(struct snd_opl3 * opl3);
0016
0017
0018 void snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan);
0019 void snd_opl3_note_off(void *p, int note, int vel, struct snd_midi_channel *chan);
0020 void snd_opl3_key_press(void *p, int note, int vel, struct snd_midi_channel *chan);
0021 void snd_opl3_terminate_note(void *p, int note, struct snd_midi_channel *chan);
0022 void snd_opl3_control(void *p, int type, struct snd_midi_channel *chan);
0023 void snd_opl3_nrpn(void *p, struct snd_midi_channel *chan, struct snd_midi_channel_set *chset);
0024 void snd_opl3_sysex(void *p, unsigned char *buf, int len, int parsed, struct snd_midi_channel_set *chset);
0025
0026 void snd_opl3_calc_volume(unsigned char *reg, int vel, struct snd_midi_channel *chan);
0027 void snd_opl3_timer_func(struct timer_list *t);
0028
0029
0030 void snd_opl3_load_drums(struct snd_opl3 *opl3);
0031 void snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int vel, int on_off, struct snd_midi_channel *chan);
0032
0033
0034 #if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS)
0035 void snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name);
0036 void snd_opl3_free_seq_oss(struct snd_opl3 *opl3);
0037 #else
0038 #define snd_opl3_init_seq_oss(opl3, name)
0039 #define snd_opl3_free_seq_oss(opl3)
0040 #endif
0041
0042 extern char snd_opl3_regmap[MAX_OPL2_VOICES][4];
0043 extern bool use_internal_drums;
0044 extern const struct snd_midi_op opl3_ops;
0045
0046 #endif