diff --git a/Makefile b/Makefile
index 401bba4..1b49d7f 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,7 @@
CC=cc
C_SOURCE=simple_audio.c
SHARED_LIB=libsimple_audio.so
+HEADER_FILE=simple_audio.h
all: libsimple_audio.so
@@ -15,6 +16,8 @@ clean:
install:
install -m 755 $(SHARED_LIB) /usr/lib
+ install -m 755 $(HEADER_FILE) /usr/include
uninstall:
rm -rf /usr/lib/$(SHARED_LIB)
+ rm -rf /usr/include/$(HEADER_FILE)
diff --git a/main.c b/main.c
index 7c5705b..97a5c48 100644
--- a/main.c
+++ b/main.c
@@ -1,10 +1,11 @@
-#include "simple_audio.h"
+#include <simple_audio.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
-
+ // Definiamo lo strumento sine che crea una semplice
+ // onda sinusoidale
sa_instrument sine;
sine.fs = (sa_fourier_series*) malloc(sizeof(sa_fourier_series));
sine.fs->cos_len = 0;
@@ -13,6 +14,8 @@ int main(int argc, char** argv) {
sine.fs->sin_values[0] = 1.0;
sine.fs->a_0 = 0;
+ // Questo non assomiglia per nulla ad un organo, ma questo
+ // genere di tentativi ci piace.
sa_instrument organ;
int j;
organ.fs = (sa_fourier_series*) malloc(sizeof(sa_fourier_series));
@@ -27,18 +30,58 @@ int main(int argc, char** argv) {
organ.fs->sin_values[j] = 1.0 / (j+1) / 3.1415926;
}
+ // Creo una nuova traccia stereo
sa_track* track = sa_track_new(2);
-
- sample* ss = sa_note(organ, "A3", 44100);
- sa_track_append(track, ss, 44100, 0);
- sa_track_append(track, ss, 44100, 1);
+ int beat = 6500;
+ sample* ss;
+
+ // Ci aggiungo un LA di un secondo
+ ss = sa_silence(beat);
+ sa_track_append (track, ss, beat, 0);
+ sa_track_append (track, ss, beat, 1);
+ for(j = 0; j< 3; j++ ) {
+ ss = sa_note(organ, "A3", beat * 0.9);
+ sa_track_append(track, ss, beat * 0.9, 0);
+ sa_track_append(track, ss, beat * 0.9, 1);
+ ss = sa_silence(0.1 * beat);
+ sa_track_append(track, ss, beat * 0.1, 0);
+ sa_track_append(track, ss, beat * 0.1, 1);
+ }
+
+ ss = sa_note(organ, "F3", beat * 7.5);
+ sa_track_append(track, ss, beat * 7.5, 0);
+ sa_track_append(track, ss, beat * 7.5, 1);
+ ss = sa_silence(0.5 * beat);
+ sa_track_append(track, ss, beat * 0.5, 0);
+ sa_track_append(track, ss, beat * 0.5, 1);
+
+ ss = sa_silence(beat);
+ sa_track_append (track, ss, beat, 0);
+ sa_track_append (track, ss, beat, 1);
- ss = sa_note(organ, "B3", 44100);
- sa_track_append(track, ss, 44100, 0);
- sa_track_append(track, ss, 44100, 1);
+for(j = 0; j< 3; j++ ) {
+ ss = sa_note(organ, "G3", beat * 0.9);
+ sa_track_append(track, ss, beat * 0.9, 0);
+ sa_track_append(track, ss, beat * 0.9, 1);
+ ss = sa_silence(0.1 * beat);
+ sa_track_append(track, ss, beat * 0.1, 0);
+ sa_track_append(track, ss, beat * 0.1, 1);
+ }
+
+ ss = sa_note(organ, "E3", beat * 7.5);
+ sa_track_append(track, ss, beat * 7.5, 0);
+ sa_track_append(track, ss, beat * 7.5, 1);
+ ss = sa_silence(0.5 * beat);
+ sa_track_append(track, ss, beat * 0.5, 0);
+ sa_track_append(track, ss, beat * 0.5, 1);
+
+
+ // E salviamo su file
sa_track_write(track, "prova.cdr");
+
+ sa_track_free(track);
return 0;
}
diff --git a/simple_audio.c b/simple_audio.c
index 3555d51..e860337 100644
--- a/simple_audio.c
+++ b/simple_audio.c
@@ -139,6 +139,12 @@ sample* sa_note(sa_instrument instrument, char* note, int len) {
return s;
}
+sample* sa_silence(int len) {
+ sample* s = (sample*) malloc(sizeof(sample) * len);
+ memset(s, 0, len * sizeof(sample));
+ return s;
+}
+
sample sa_swap_bytes(sample s) {
sample_b buf;
unsigned char temp;
diff --git a/simple_audio.h b/simple_audio.h
index 83a7b15..11c4fb4 100644
--- a/simple_audio.h
+++ b/simple_audio.h
@@ -78,6 +78,9 @@ sample sa_double_to_sample(double);
// nota scelta
sample* sa_note(sa_instrument instrument, char* note, int len);
+// Il silenzio :)
+sample* sa_silence(int len);
+
// Scrive la traccia su file
int sa_track_write(sa_track* t, char* filename);