~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/include/uapi/sound/asound_fm.h

Version: ~ [ linux-5.18 ] ~ [ linux-5.17.9 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.41 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.117 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.195 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.244 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.280 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.315 ] ~ [ linux-4.8.17 ] ~ [ linux-4.7.10 ] ~ [ linux-4.6.7 ] ~ [ linux-4.5.7 ] ~ [ linux-4.4.302 ] ~ [ linux-4.3.6 ] ~ [ linux-4.2.8 ] ~ [ linux-4.1.52 ] ~ [ linux-4.0.9 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.9 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 /* SPDX-License-Identifier: GPL-2.0+ WITH Linux-syscall-note */
  2 #ifndef __SOUND_ASOUND_FM_H
  3 #define __SOUND_ASOUND_FM_H
  4 
  5 /*
  6  *  Advanced Linux Sound Architecture - ALSA
  7  *
  8  *  Interface file between ALSA driver & user space
  9  *  Copyright (c) 1994-98 by Jaroslav Kysela <perex@perex.cz>,
 10  *                           4Front Technologies
 11  *
 12  *  Direct FM control
 13  *
 14  *   This program is free software; you can redistribute it and/or modify
 15  *   it under the terms of the GNU General Public License as published by
 16  *   the Free Software Foundation; either version 2 of the License, or
 17  *   (at your option) any later version.
 18  *
 19  *   This program is distributed in the hope that it will be useful,
 20  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 21  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 22  *   GNU General Public License for more details.
 23  *
 24  *   You should have received a copy of the GNU General Public License
 25  *   along with this program; if not, write to the Free Software
 26  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
 27  *
 28  */
 29 
 30 #define SNDRV_DM_FM_MODE_OPL2   0x00
 31 #define SNDRV_DM_FM_MODE_OPL3   0x01
 32 
 33 struct snd_dm_fm_info {
 34         unsigned char fm_mode;          /* OPL mode, see SNDRV_DM_FM_MODE_XXX */
 35         unsigned char rhythm;           /* percussion mode flag */
 36 };
 37 
 38 /*
 39  *  Data structure composing an FM "note" or sound event.
 40  */
 41 
 42 struct snd_dm_fm_voice {
 43         unsigned char op;               /* operator cell (0 or 1) */
 44         unsigned char voice;            /* FM voice (0 to 17) */
 45 
 46         unsigned char am;               /* amplitude modulation */
 47         unsigned char vibrato;          /* vibrato effect */
 48         unsigned char do_sustain;       /* sustain phase */
 49         unsigned char kbd_scale;        /* keyboard scaling */
 50         unsigned char harmonic;         /* 4 bits: harmonic and multiplier */
 51         unsigned char scale_level;      /* 2 bits: decrease output freq rises */
 52         unsigned char volume;           /* 6 bits: volume */
 53 
 54         unsigned char attack;           /* 4 bits: attack rate */
 55         unsigned char decay;            /* 4 bits: decay rate */
 56         unsigned char sustain;          /* 4 bits: sustain level */
 57         unsigned char release;          /* 4 bits: release rate */
 58 
 59         unsigned char feedback;         /* 3 bits: feedback for op0 */
 60         unsigned char connection;       /* 0 for serial, 1 for parallel */
 61         unsigned char left;             /* stereo left */
 62         unsigned char right;            /* stereo right */
 63         unsigned char waveform;         /* 3 bits: waveform shape */
 64 };
 65 
 66 /*
 67  *  This describes an FM note by its voice, octave, frequency number (10bit)
 68  *  and key on/off.
 69  */
 70 
 71 struct snd_dm_fm_note {
 72         unsigned char voice;    /* 0-17 voice channel */
 73         unsigned char octave;   /* 3 bits: what octave to play */
 74         unsigned int fnum;      /* 10 bits: frequency number */
 75         unsigned char key_on;   /* set for active, clear for silent */
 76 };
 77 
 78 /*
 79  *  FM parameters that apply globally to all voices, and thus are not "notes"
 80  */
 81 
 82 struct snd_dm_fm_params {
 83         unsigned char am_depth;         /* amplitude modulation depth (1=hi) */
 84         unsigned char vib_depth;        /* vibrato depth (1=hi) */
 85         unsigned char kbd_split;        /* keyboard split */
 86         unsigned char rhythm;           /* percussion mode select */
 87 
 88         /* This block is the percussion instrument data */
 89         unsigned char bass;
 90         unsigned char snare;
 91         unsigned char tomtom;
 92         unsigned char cymbal;
 93         unsigned char hihat;
 94 };
 95 
 96 /*
 97  *  FM mode ioctl settings
 98  */
 99 
100 #define SNDRV_DM_FM_IOCTL_INFO          _IOR('H', 0x20, struct snd_dm_fm_info)
101 #define SNDRV_DM_FM_IOCTL_RESET         _IO ('H', 0x21)
102 #define SNDRV_DM_FM_IOCTL_PLAY_NOTE     _IOW('H', 0x22, struct snd_dm_fm_note)
103 #define SNDRV_DM_FM_IOCTL_SET_VOICE     _IOW('H', 0x23, struct snd_dm_fm_voice)
104 #define SNDRV_DM_FM_IOCTL_SET_PARAMS    _IOW('H', 0x24, struct snd_dm_fm_params)
105 #define SNDRV_DM_FM_IOCTL_SET_MODE      _IOW('H', 0x25, int)
106 /* for OPL3 only */
107 #define SNDRV_DM_FM_IOCTL_SET_CONNECTION        _IOW('H', 0x26, int)
108 /* SBI patch management */
109 #define SNDRV_DM_FM_IOCTL_CLEAR_PATCHES _IO ('H', 0x40)
110 
111 #define SNDRV_DM_FM_OSS_IOCTL_RESET             0x20
112 #define SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE         0x21
113 #define SNDRV_DM_FM_OSS_IOCTL_SET_VOICE         0x22
114 #define SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS        0x23
115 #define SNDRV_DM_FM_OSS_IOCTL_SET_MODE          0x24
116 #define SNDRV_DM_FM_OSS_IOCTL_SET_OPL           0x25
117 
118 /*
119  * Patch Record - fixed size for write
120  */
121 
122 #define FM_KEY_SBI      "SBI\032"
123 #define FM_KEY_2OP      "2OP\032"
124 #define FM_KEY_4OP      "4OP\032"
125 
126 struct sbi_patch {
127         unsigned char prog;
128         unsigned char bank;
129         char key[4];
130         char name[25];
131         char extension[7];
132         unsigned char data[32];
133 };
134 
135 #endif /* __SOUND_ASOUND_FM_H */
136 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | Wiki (Japanese) | Wiki (English) | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

osdn.jp