include/uapi/linux/soundcard.h
Source file repositories/reference/linux-study-clean/include/uapi/linux/soundcard.h
File Facts
- System
- Linux kernel
- Corpus path
include/uapi/linux/soundcard.h- Extension
.h- Size
- 46180 bytes
- Lines
- 1283
- Domain
- Core OS
- Bucket
- Core Kernel Interface
- Inferred role
- Core OS: implementation source
- Status
- source implementation candidate
Why This File Exists
Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Core operating-system implementation surface: boot, tasks, memory, VFS, syscall-facing interfaces, synchronization, credentials, and isolation.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
linux/ioctl.hendian.hlinux/patchkey.h
Detected Declarations
struct patch_infostruct sysex_infostruct sbi_instrumentstruct synth_infostruct sound_timer_infostruct midi_infofunction _CHN_COMMONfunction SEQ_CONTROL
Annotated Snippet
struct patch_info {
unsigned short key; /* Use WAVE_PATCH here */
#define WAVE_PATCH _PATCHKEY(0x04)
#define GUS_PATCH WAVE_PATCH
#define WAVEFRONT_PATCH _PATCHKEY(0x06)
short device_no; /* Synthesizer number */
short instr_no; /* Midi pgm# */
unsigned int mode;
/*
* The least significant byte has the same format than the GUS .PAT
* files
*/
#define WAVE_16_BITS 0x01 /* bit 0 = 8 or 16 bit wave data. */
#define WAVE_UNSIGNED 0x02 /* bit 1 = Signed - Unsigned data. */
#define WAVE_LOOPING 0x04 /* bit 2 = looping enabled-1. */
#define WAVE_BIDIR_LOOP 0x08 /* bit 3 = Set is bidirectional looping. */
#define WAVE_LOOP_BACK 0x10 /* bit 4 = Set is looping backward. */
#define WAVE_SUSTAIN_ON 0x20 /* bit 5 = Turn sustaining on. (Env. pts. 3)*/
#define WAVE_ENVELOPES 0x40 /* bit 6 = Enable envelopes - 1 */
#define WAVE_FAST_RELEASE 0x80 /* bit 7 = Shut off immediately after note off */
/* (use the env_rate/env_offs fields). */
/* Linux specific bits */
#define WAVE_VIBRATO 0x00010000 /* The vibrato info is valid */
#define WAVE_TREMOLO 0x00020000 /* The tremolo info is valid */
#define WAVE_SCALE 0x00040000 /* The scaling info is valid */
#define WAVE_FRACTIONS 0x00080000 /* Fraction information is valid */
/* Reserved bits */
#define WAVE_ROM 0x40000000 /* For future use */
#define WAVE_MULAW 0x20000000 /* For future use */
/* Other bits must be zeroed */
int len; /* Size of the wave data in bytes */
int loop_start, loop_end; /* Byte offsets from the beginning */
/*
* The base_freq and base_note fields are used when computing the
* playback speed for a note. The base_note defines the tone frequency
* which is heard if the sample is played using the base_freq as the
* playback speed.
*
* The low_note and high_note fields define the minimum and maximum note
* frequencies for which this sample is valid. It is possible to define
* more than one samples for an instrument number at the same time. The
* low_note and high_note fields are used to select the most suitable one.
*
* The fields base_note, high_note and low_note should contain
* the note frequency multiplied by 1000. For example value for the
* middle A is 440*1000.
*/
unsigned int base_freq;
unsigned int base_note;
unsigned int high_note;
unsigned int low_note;
int panning; /* -128=left, 127=right */
int detuning;
/* New fields introduced in version 1.99.5 */
/* Envelope. Enabled by mode bit WAVE_ENVELOPES */
unsigned char env_rate[ 6 ]; /* GUS HW ramping rate */
unsigned char env_offset[ 6 ]; /* 255 == 100% */
/*
* The tremolo, vibrato and scale info are not supported yet.
* Enable by setting the mode bits WAVE_TREMOLO, WAVE_VIBRATO or
* WAVE_SCALE
*/
unsigned char tremolo_sweep;
unsigned char tremolo_rate;
unsigned char tremolo_depth;
unsigned char vibrato_sweep;
unsigned char vibrato_rate;
unsigned char vibrato_depth;
int scale_frequency;
unsigned int scale_factor; /* from 0 to 2048 or 0 to 2 */
int volume;
int fractions;
int reserved1;
int spare[2];
char data[1]; /* The waveform data starts here */
};
struct sysex_info {
Annotation
- Immediate include surface: `linux/ioctl.h`, `endian.h`, `linux/patchkey.h`.
- Detected declarations: `struct patch_info`, `struct sysex_info`, `struct sbi_instrument`, `struct synth_info`, `struct sound_timer_info`, `struct midi_info`, `function _CHN_COMMON`, `function SEQ_CONTROL`.
- Atlas domain: Core OS / Core Kernel Interface.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.