- commit
- ab298d8751a403da08afd4bf0980f4f6be7ba27a
- parent
- cc706c0e88909a4fad2a998a4ff8843322a094e8
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2019-12-18 17:59
allow stereo input
Diffstat
| M | Makefile | 3 | --- |
| M | beat.c | 17 | +++++++++++------ |
2 files changed, 11 insertions, 9 deletions
diff --git a/Makefile b/Makefile
@@ -6,6 +6,3 @@ build/beat.flac: Makefile beat src/bumm.flac src/tack.flac 6 6 7 7 beat: beat.c Makefile 8 8 gcc -lm -lsndfile $< -o $@9 -110 -1 %_mono.flac: %.flac11 -1 ffmpeg -i "$<" -ac 1 "$@"
diff --git a/beat.c b/beat.c
@@ -25,17 +25,17 @@ struct ring *create_ring(void) {
25 25 }
26 26
27 27 void add_file_at_beat(const char *path, int beat) {
-1 28 SF_INFO sfinfo;
-1 29 SNDFILE *infile = sf_open(path, SFM_READ, &sfinfo);
-1 30
28 31 int ibs = 1024;
29 32 int pos = beat * frames_per_beat;
30 33 int rel_pos = pos - buf_cur * BUFSIZE;
31 -1 float fbuf[ibs];
32 -1 SF_INFO sfinfo;
33 -1 SNDFILE *infile = sf_open(path, SFM_READ, &sfinfo);
-1 34 float fbuf[ibs * sfinfo.channels];
34 35
35 36 struct ring *cur = first;
36 37
37 38 // assert sfinfo.samplerate == samplerate
38 -1 // assert sfinfo.channels == 1
39 39
40 40 while (1) {
41 41 int count = sf_readf_float(infile, fbuf, ibs);
@@ -54,8 +54,13 @@ void add_file_at_beat(const char *path, int beat) {
54 54 }
55 55 cur = cur->next;
56 56 }
57 -1 cur->buf[rel_pos * 2] += fbuf[i] * factor;
58 -1 cur->buf[rel_pos * 2 + 1] += fbuf[i] * factor;
-1 57 if (sfinfo.channels == 1) {
-1 58 cur->buf[rel_pos * 2] += fbuf[i] * factor;
-1 59 cur->buf[rel_pos * 2 + 1] += fbuf[i] * factor;
-1 60 } else {
-1 61 cur->buf[rel_pos * 2] += fbuf[i * 2] * factor;
-1 62 cur->buf[rel_pos * 2 + 1] += fbuf[i * 2 + 1] * factor;
-1 63 }
59 64 }
60 65 }
61 66