Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/sound/synth/emux/emux_voice.h
29266 views
1
/* SPDX-License-Identifier: GPL-2.0-or-later */
2
#ifndef __EMUX_VOICE_H
3
#define __EMUX_VOICE_H
4
5
/*
6
* A structure to keep track of each hardware voice
7
*
8
* Copyright (C) 1999 Steve Ratcliffe
9
* Copyright (c) 1999-2000 Takashi Iwai <[email protected]>
10
*/
11
12
#include <linux/wait.h>
13
#include <linux/sched.h>
14
#include <sound/core.h>
15
#include <sound/emux_synth.h>
16
17
/* Prototypes for emux_seq.c */
18
int snd_emux_init_seq(struct snd_emux *emu, struct snd_card *card, int index);
19
void snd_emux_detach_seq(struct snd_emux *emu);
20
struct snd_emux_port *snd_emux_create_port(struct snd_emux *emu, char *name,
21
int max_channels, int type,
22
struct snd_seq_port_callback *callback);
23
void snd_emux_reset_port(struct snd_emux_port *port);
24
int snd_emux_event_input(struct snd_seq_event *ev, int direct, void *private,
25
int atomic, int hop);
26
int snd_emux_inc_count(struct snd_emux *emu);
27
void snd_emux_dec_count(struct snd_emux *emu);
28
int snd_emux_init_virmidi(struct snd_emux *emu, struct snd_card *card);
29
int snd_emux_delete_virmidi(struct snd_emux *emu);
30
31
/* Prototypes for emux_synth.c */
32
void snd_emux_init_voices(struct snd_emux *emu);
33
34
void snd_emux_note_on(void *p, int note, int vel, struct snd_midi_channel *chan);
35
void snd_emux_note_off(void *p, int note, int vel, struct snd_midi_channel *chan);
36
void snd_emux_key_press(void *p, int note, int vel, struct snd_midi_channel *chan);
37
void snd_emux_terminate_note(void *p, int note, struct snd_midi_channel *chan);
38
void snd_emux_control(void *p, int type, struct snd_midi_channel *chan);
39
40
void snd_emux_sounds_off_all(struct snd_emux_port *port);
41
void snd_emux_update_channel(struct snd_emux_port *port,
42
struct snd_midi_channel *chan, int update);
43
void snd_emux_update_port(struct snd_emux_port *port, int update);
44
45
void snd_emux_timer_callback(struct timer_list *t);
46
47
/* emux_effect.c */
48
#ifdef SNDRV_EMUX_USE_RAW_EFFECT
49
void snd_emux_create_effect(struct snd_emux_port *p);
50
void snd_emux_delete_effect(struct snd_emux_port *p);
51
void snd_emux_clear_effect(struct snd_emux_port *p);
52
void snd_emux_setup_effect(struct snd_emux_voice *vp);
53
void snd_emux_send_effect_oss(struct snd_emux_port *port,
54
struct snd_midi_channel *chan, int type, int val);
55
void snd_emux_send_effect(struct snd_emux_port *port,
56
struct snd_midi_channel *chan, int type, int val, int mode);
57
#endif
58
59
/* emux_nrpn.c */
60
void snd_emux_sysex(void *private_data, unsigned char *buf, int len,
61
int parsed, struct snd_midi_channel_set *chset);
62
int snd_emux_xg_control(struct snd_emux_port *port,
63
struct snd_midi_channel *chan, int param);
64
void snd_emux_nrpn(void *private_data, struct snd_midi_channel *chan,
65
struct snd_midi_channel_set *chset);
66
67
/* emux_oss.c */
68
void snd_emux_init_seq_oss(struct snd_emux *emu);
69
void snd_emux_detach_seq_oss(struct snd_emux *emu);
70
71
/* emux_proc.c */
72
#ifdef CONFIG_SND_PROC_FS
73
void snd_emux_proc_init(struct snd_emux *emu, struct snd_card *card, int device);
74
void snd_emux_proc_free(struct snd_emux *emu);
75
#else
76
static inline void snd_emux_proc_init(struct snd_emux *emu,
77
struct snd_card *card, int device) {}
78
static inline void snd_emux_proc_free(struct snd_emux *emu) {}
79
#endif
80
81
#define STATE_IS_PLAYING(s) ((s) & SNDRV_EMUX_ST_ON)
82
83
/* emux_hwdep.c */
84
int snd_emux_init_hwdep(struct snd_emux *emu);
85
void snd_emux_delete_hwdep(struct snd_emux *emu);
86
87
#endif
88
89