patch-2.1.63 linux/drivers/sound/softoss.h
Next file: linux/drivers/sound/softoss_rs.c
Previous file: linux/drivers/sound/softoss.c
Back to the patch index
Back to the overall index
- Lines: 161
- Date:
Tue Sep 30 08:46:45 1997
- Orig file:
v2.1.62/linux/drivers/sound/softoss.h
- Orig date:
Wed Dec 31 16:00:00 1969
diff -u --recursive --new-file v2.1.62/linux/drivers/sound/softoss.h linux/drivers/sound/softoss.h
@@ -0,0 +1,160 @@
+/*
+ * softoss.h - Definitions for Software MIDI Synthesizer.
+ */
+/*
+ * Copyright (C) by Hannu Savolainen 1993-1997
+ *
+ * OSS/Free for Linux is distributed under the GNU GENERAL PUBLIC LICENSE (GPL)
+ * Version 2 (June 1991). See the "COPYING" file distributed with this software
+ * for more info.
+ */
+
+
+/*
+ * Sequencer mode1 timer calls made by sequencer.c
+ */
+extern int (*softsynthp) (int cmd, int parm1, int parm2, unsigned long parm3);
+
+#define SSYN_START 1
+#define SSYN_REQUEST 2 /* parm1 = time */
+#define SSYN_STOP 3
+#define SSYN_GETTIME 4 /* Returns number of ticks since reset */
+
+#define MAX_PATCH 256
+#define MAX_SAMPLE 512
+#define MAX_VOICE 32
+#define DEFAULT_VOICES 16
+
+typedef struct voice_info
+{
+/*
+ * Don't change anything in the beginning of this struct. These fields are used
+ * by the resampling loop which may have been written in assembly for some
+ * architectures. Any change may make the resampling code incompatible
+ */
+ int instr;
+ short *wave;
+ struct patch_info *sample;
+
+ unsigned int ptr; int step; /* Pointer to the wave data and pointer increment */
+
+ int mode;
+ int startloop, startbackloop, endloop, looplen;
+
+ unsigned int leftvol, rightvol;
+/***** Don't change anything above this */
+
+ volatile unsigned long orig_freq, current_freq;
+ volatile int bender, bender_range, panning;
+ volatile int main_vol, expression_vol, patch_vol, velocity;
+
+/* Envelope parameters */
+
+ int envelope_phase;
+ volatile int envelope_vol;
+ volatile int envelope_volstep;
+ int envelope_time; /* Number of remaining envelope steps */
+ unsigned int envelope_target;
+ int percussive_voice;
+ int sustain_mode; /* 0=off, 1=sustain on, 2=sustain on+key released */
+
+/* Vibrato */
+ int vibrato_rate;
+ int vibrato_depth;
+ int vibrato_phase;
+ int vibrato_step;
+ int vibrato_level;
+
+/* Tremolo */
+ int tremolo_rate;
+ int tremolo_depth;
+ int tremolo_phase;
+ int tremolo_step;
+ int tremolo_level;
+} voice_info;
+
+extern voice_info softoss_voices[MAX_VOICE]; /* Voice spesific info */
+
+typedef struct softsyn_devc
+{
+/*
+ * Don't change anything in the beginning of this struct. These fields are used
+ * by the resampling loop which may have been written in assembly for some
+ * architectures. Any change may make the resampling code incompatible
+ */
+ int maxvoice; /* # of voices to be processed */
+ int afterscale;
+ int delay_size;
+ int control_rate, control_counter;
+/***** Don't change anything above this */
+
+ int ram_size;
+ int ram_used;
+
+ int synthdev;
+ int sequencer_mode;
+/*
+ * Audio parameters
+ */
+
+ int audiodev;
+ int audio_opened;
+ int speed;
+ int channels;
+ int bits;
+ int default_max_voices;
+ int max_playahead;
+ struct fileinfo finfo;
+ int fragsize;
+ int samples_per_fragment;
+
+/*
+ * Sample storage
+ */
+ int nrsamples;
+ struct patch_info *samples[MAX_SAMPLE];
+ short *wave[MAX_SAMPLE];
+
+/*
+ * Programs
+ */
+ int programs[MAX_SAMPLE];
+
+/*
+ * Timer parameters
+ */
+ volatile unsigned long usecs;
+ volatile unsigned long usecs_per_frag;
+ volatile unsigned long next_event_usecs;
+
+/*
+ * Engine state
+ */
+
+ volatile int engine_state;
+#define ES_STOPPED 0
+#define ES_STARTED 1
+
+ /* Voice spesific bitmaps */
+ volatile int tremolomap;
+ volatile int vibratomap;
+
+} softsyn_devc;
+
+void softsynth_resample_loop(short *buf, int loops);
+extern void softsyn_control_loop(void);
+
+#define DELAY_SIZE 4096
+
+#ifdef SOFTSYN_MAIN
+ short voice_active[MAX_VOICE] = {0};
+ voice_info softoss_voices[MAX_VOICE] = {{0}}; /* Voice spesific info */
+ int left_delay[DELAY_SIZE]={0}, right_delay[DELAY_SIZE]={0};
+ int delayp=0;
+#else
+ extern softsyn_devc *devc;
+
+ extern int left_delay[DELAY_SIZE], right_delay[DELAY_SIZE];
+ extern int delayp;
+ extern short voice_active[MAX_VOICE];
+#endif
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov