Digitális hangminták
Gaga
delay.c
Ugrás a fájl dokumentációjához.
1 
7 #include <stdio.h>
8 #include "binary_streams.h"
9 
11 typedef float sample_t;
12 
13 enum
14 {
15  SAMPLE_RATE = 44100,
17 };
18 
25 int main(int argc, char **argv)
26 {
27  // delay time
28  double T = .2;
29  // delay attenuation
30  double alpha = .5;
31  if (argc >= 3)
32  {
33  sscanf(argv[1], "%lf", &T);
34  sscanf(argv[2], "%lf", &alpha);
35  }
36 
37  int K = SAMPLE_RATE * T;
38  sample_t circ_buffer[N][2] = {0};
39 
40  // reopen streams as binary
42 
43  int cnt = 0;
44  sample_t samples[2];
45  while (fread(samples, sizeof(sample_t), 2, stdin) == 2)
46  {
47  int c;
48  for (c = 0; c < 2; ++c)
49  {
50  circ_buffer[cnt][c] *= alpha; // attenuate past
51  circ_buffer[cnt][c] += samples[c]; // add present
52  }
53 
54  // write present + past
55  fwrite(circ_buffer[cnt], sizeof(sample_t), 2, stdout);
56 
57  cnt++; // circular indexing
58  cnt %= K;
59  }
60 
61  return 0;
62 }
binary_streams.h
open standard streams in binary mode
sample_t
float sample_t
type of a single sample
Definition: amplify.c:11
main
int main(int argc, char **argv)
the plugin main function
Definition: delay.c:25
sample_t
float sample_t
type of a single sample
Definition: delay.c:11
SAMPLE_RATE
@ SAMPLE_RATE
the sampe rate in Hz
Definition: delay.c:15
binary_streams
#define binary_streams()
reopen standard streams as binary
Definition: binary_streams.h:17
N
@ N
size of the delay line in samples
Definition: delay.c:16