18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-or-later */ 28c2ecf20Sopenharmony_ci#ifndef __OPL3_VOICE_H 38c2ecf20Sopenharmony_ci#define __OPL3_VOICE_H 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci/* 68c2ecf20Sopenharmony_ci * Copyright (c) 2000 Uros Bizjak <uros@kss-loka.si> 78c2ecf20Sopenharmony_ci */ 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ci#include <sound/opl3.h> 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci/* Prototypes for opl3_seq.c */ 128c2ecf20Sopenharmony_ciint snd_opl3_synth_use_inc(struct snd_opl3 * opl3); 138c2ecf20Sopenharmony_civoid snd_opl3_synth_use_dec(struct snd_opl3 * opl3); 148c2ecf20Sopenharmony_ciint snd_opl3_synth_setup(struct snd_opl3 * opl3); 158c2ecf20Sopenharmony_civoid snd_opl3_synth_cleanup(struct snd_opl3 * opl3); 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci/* Prototypes for opl3_midi.c */ 188c2ecf20Sopenharmony_civoid snd_opl3_note_on(void *p, int note, int vel, struct snd_midi_channel *chan); 198c2ecf20Sopenharmony_civoid snd_opl3_note_off(void *p, int note, int vel, struct snd_midi_channel *chan); 208c2ecf20Sopenharmony_civoid snd_opl3_key_press(void *p, int note, int vel, struct snd_midi_channel *chan); 218c2ecf20Sopenharmony_civoid snd_opl3_terminate_note(void *p, int note, struct snd_midi_channel *chan); 228c2ecf20Sopenharmony_civoid snd_opl3_control(void *p, int type, struct snd_midi_channel *chan); 238c2ecf20Sopenharmony_civoid snd_opl3_nrpn(void *p, struct snd_midi_channel *chan, struct snd_midi_channel_set *chset); 248c2ecf20Sopenharmony_civoid snd_opl3_sysex(void *p, unsigned char *buf, int len, int parsed, struct snd_midi_channel_set *chset); 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_civoid snd_opl3_calc_volume(unsigned char *reg, int vel, struct snd_midi_channel *chan); 278c2ecf20Sopenharmony_civoid snd_opl3_timer_func(struct timer_list *t); 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci/* Prototypes for opl3_drums.c */ 308c2ecf20Sopenharmony_civoid snd_opl3_load_drums(struct snd_opl3 *opl3); 318c2ecf20Sopenharmony_civoid snd_opl3_drum_switch(struct snd_opl3 *opl3, int note, int vel, int on_off, struct snd_midi_channel *chan); 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_ci/* Prototypes for opl3_oss.c */ 348c2ecf20Sopenharmony_ci#if IS_ENABLED(CONFIG_SND_SEQUENCER_OSS) 358c2ecf20Sopenharmony_civoid snd_opl3_init_seq_oss(struct snd_opl3 *opl3, char *name); 368c2ecf20Sopenharmony_civoid snd_opl3_free_seq_oss(struct snd_opl3 *opl3); 378c2ecf20Sopenharmony_ci#else 388c2ecf20Sopenharmony_ci#define snd_opl3_init_seq_oss(opl3, name) /* NOP */ 398c2ecf20Sopenharmony_ci#define snd_opl3_free_seq_oss(opl3) /* NOP */ 408c2ecf20Sopenharmony_ci#endif 418c2ecf20Sopenharmony_ci 428c2ecf20Sopenharmony_ciextern char snd_opl3_regmap[MAX_OPL2_VOICES][4]; 438c2ecf20Sopenharmony_ciextern bool use_internal_drums; 448c2ecf20Sopenharmony_ciextern const struct snd_midi_op opl3_ops; 458c2ecf20Sopenharmony_ci 468c2ecf20Sopenharmony_ci#endif 47