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

TOMOYO Linux Cross Reference
Linux/include/sound/soundfont.h

Version: ~ [ linux-6.11-rc3 ] ~ [ linux-6.10.4 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.45 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.104 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.164 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.223 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.281 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.319 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ 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-or-later */
  2 #ifndef __SOUND_SOUNDFONT_H
  3 #define __SOUND_SOUNDFONT_H
  4 
  5 /*
  6  *  Soundfont defines and definitions.
  7  *
  8  *  Copyright (C) 1999 Steve Ratcliffe
  9  *  Copyright (c) 1999-2000 Takashi iwai <tiwai@suse.de>
 10  */
 11 
 12 #include <sound/sfnt_info.h>
 13 #include <sound/util_mem.h>
 14 
 15 #define SF_MAX_INSTRUMENTS      128     /* maximum instrument number */
 16 #define SF_MAX_PRESETS  256     /* drums are mapped from 128 to 256 */
 17 #define SF_IS_DRUM_BANK(z) ((z) == 128)
 18 
 19 struct snd_sf_zone {
 20         struct snd_sf_zone *next;       /* Link to next */
 21         unsigned char bank;             /* Midi bank for this zone */
 22         unsigned char instr;            /* Midi program for this zone */
 23         unsigned char mapped;           /* True if mapped to something else */
 24 
 25         struct soundfont_voice_info v;  /* All the soundfont parameters */
 26         int counter;
 27         struct snd_sf_sample *sample;   /* Link to sample */
 28 
 29         /* The following deals with preset numbers (programs) */
 30         struct snd_sf_zone *next_instr; /* Next zone of this instrument */
 31         struct snd_sf_zone *next_zone;  /* Next zone in play list */
 32 };
 33 
 34 struct snd_sf_sample {
 35         struct soundfont_sample_info v;
 36         int counter;
 37         struct snd_util_memblk *block;  /* allocated data block */
 38         struct snd_sf_sample *next;
 39 };
 40 
 41 /*
 42  * This represents all the information relating to a soundfont.
 43  */
 44 struct snd_soundfont {
 45         struct snd_soundfont *next;     /* Link to next */
 46         /*struct snd_soundfont *prev;*/ /* Link to previous */
 47         short  id;              /* file id */
 48         short  type;            /* font type */
 49         unsigned char name[SNDRV_SFNT_PATCH_NAME_LEN];  /* identifier */
 50         struct snd_sf_zone *zones; /* Font information */
 51         struct snd_sf_sample *samples; /* The sample headers */
 52 };
 53 
 54 /*
 55  * Type of the sample access callback
 56  */
 57 struct snd_sf_callback {
 58         void *private_data;
 59         int (*sample_new)(void *private_data, struct snd_sf_sample *sp,
 60                           struct snd_util_memhdr *hdr,
 61                           const void __user *buf, long count);
 62         int (*sample_free)(void *private_data, struct snd_sf_sample *sp,
 63                            struct snd_util_memhdr *hdr);
 64         void (*sample_reset)(void *private);
 65 };
 66 
 67 /*
 68  * List of soundfonts.
 69  */
 70 struct snd_sf_list {
 71         struct snd_soundfont *currsf; /* The currently open soundfont */
 72         int open_client;        /* client pointer for lock */
 73         int mem_used;           /* used memory size */
 74         struct snd_sf_zone *presets[SF_MAX_PRESETS];
 75         struct snd_soundfont *fonts; /* The list of soundfonts */
 76         int fonts_size; /* number of fonts allocated */
 77         int zone_counter;       /* last allocated time for zone */
 78         int sample_counter;     /* last allocated time for sample */
 79         int zone_locked;        /* locked time for zone */
 80         int sample_locked;      /* locked time for sample */
 81         struct snd_sf_callback callback;        /* callback functions */
 82         int presets_locked;
 83         struct mutex presets_mutex;
 84         spinlock_t lock;
 85         struct snd_util_memhdr *memhdr;
 86 };
 87 
 88 /* Prototypes for soundfont.c */
 89 int snd_soundfont_load(struct snd_sf_list *sflist, const void __user *data,
 90                        long count, int client);
 91 int snd_soundfont_load_guspatch(struct snd_sf_list *sflist, const char __user *data,
 92                                 long count);
 93 int snd_soundfont_close_check(struct snd_sf_list *sflist, int client);
 94 
 95 struct snd_sf_list *snd_sf_new(struct snd_sf_callback *callback,
 96                                struct snd_util_memhdr *hdr);
 97 void snd_sf_free(struct snd_sf_list *sflist);
 98 
 99 int snd_soundfont_remove_samples(struct snd_sf_list *sflist);
100 int snd_soundfont_remove_unlocked(struct snd_sf_list *sflist);
101 
102 int snd_soundfont_search_zone(struct snd_sf_list *sflist, int *notep, int vel,
103                               int preset, int bank,
104                               int def_preset, int def_bank,
105                               struct snd_sf_zone **table, int max_layers);
106 
107 /* Parameter conversions */
108 int snd_sf_calc_parm_hold(int msec);
109 int snd_sf_calc_parm_attack(int msec);
110 int snd_sf_calc_parm_decay(int msec);
111 #define snd_sf_calc_parm_delay(msec) (0x8000 - (msec) * 1000 / 725)
112 extern int snd_sf_vol_table[128];
113 int snd_sf_linear_to_log(unsigned int amount, int offset, int ratio);
114 
115 
116 #endif /* __SOUND_SOUNDFONT_H */
117 

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

kernel.org | git.kernel.org | LWN.net | Project Home | 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.

sflogo.php