beat

Arrange audio samples into something bigger
git clone https://git.ce9e.org/beat.git

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    -1 
   10    -1 %_mono.flac: %.flac
   11    -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