linux/include/sound/emux_synth.h

/* SPDX-License-Identifier: GPL-2.0-or-later */
#ifndef __SOUND_EMUX_SYNTH_H
#define __SOUND_EMUX_SYNTH_H

/*
 *  Defines for the Emu-series WaveTable chip
 *
 *  Copyright (C) 2000 Takashi Iwai <[email protected]>
 */

#include <sound/seq_kernel.h>
#include <sound/seq_device.h>
#include <sound/soundfont.h>
#include <sound/seq_midi_emul.h>
#include <sound/seq_oss.h>
#include <sound/emux_legacy.h>
#include <sound/seq_virmidi.h>

/*
 * compile flags
 */
#define SNDRV_EMUX_USE_RAW_EFFECT

struct snd_emux;
struct snd_emux_port;
struct snd_emux_voice;
struct snd_emux_effect_table;

/*
 * operators
 */
struct snd_emux_operators {};


/*
 * constant values
 */
#define SNDRV_EMUX_MAX_PORTS
#define SNDRV_EMUX_MAX_VOICES
#define SNDRV_EMUX_MAX_MULTI_VOICES

/*
 * flags
 */
#define SNDRV_EMUX_ACCEPT_ROM

/*
 * emuX wavetable
 */
struct snd_emux {};


/*
 * sequencer port information
 */
struct snd_emux_port {};

/* port_mode */
#define SNDRV_EMUX_PORT_MODE_MIDI
#define SNDRV_EMUX_PORT_MODE_OSS_SYNTH
#define SNDRV_EMUX_PORT_MODE_OSS_MIDI

/*
 * A structure to keep track of each hardware voice
 */
struct snd_emux_voice {};

/*
 * update flags (can be combined)
 */
#define SNDRV_EMUX_UPDATE_VOLUME
#define SNDRV_EMUX_UPDATE_PITCH
#define SNDRV_EMUX_UPDATE_PAN
#define SNDRV_EMUX_UPDATE_FMMOD
#define SNDRV_EMUX_UPDATE_TREMFREQ
#define SNDRV_EMUX_UPDATE_FM2FRQ2
#define SNDRV_EMUX_UPDATE_Q


#ifdef SNDRV_EMUX_USE_RAW_EFFECT
/*
 * effect table
 */
struct snd_emux_effect_table {};
#endif /* SNDRV_EMUX_USE_RAW_EFFECT */


/*
 * prototypes - interface to Emu10k1 and Emu8k routines
 */
int snd_emux_new(struct snd_emux **remu);
int snd_emux_register(struct snd_emux *emu, struct snd_card *card, int index, char *name);
int snd_emux_free(struct snd_emux *emu);

/*
 * exported functions
 */
void snd_emux_terminate_all(struct snd_emux *emu);
void snd_emux_lock_voice(struct snd_emux *emu, int voice);
void snd_emux_unlock_voice(struct snd_emux *emu, int voice);

#endif /* __SOUND_EMUX_SYNTH_H */