blob: 9a80b864b08c2715b7a53bc5140d198922e8795e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#include <stdio.h>
#include <stdlib.h>
#include "fmt.h"
#include "sndfile.h"
/*
* gcc -O2 -o playit-null playit-null.c -I.. -I../src/include -DHAVE_CONFIG_H -lm -s ../src/libplayit.a
*/
song_t * song_load_it(const char *file)
{
slurp_t *s;
song_t *song;
s = slurp(file, NULL, 0);
if (!s) {
printf("failed to open \"%s\"\n", file);
goto _fail;
}
song = csf_allocate();
if (!song) {
printf("failed to allocate song\n");
goto _fail_slurp;
}
if (fmt_it_load_song(song, s, 0) != LOAD_SUCCESS)
goto _fail_song;
unslurp(s);
return song;
_fail_song:
csf_free(song);
_fail_slurp:
unslurp(s);
_fail:
return NULL;
}
int main(int argc, char *argv[])
{
song_t *song;
uint8_t buf[8192];
int len;
if (argc != 2) {
printf("usage: %s song.it\n", argv[0]);
goto _fail;
}
song = song_load_it(argv[1]);
if (!song) {
printf("failed to load song!\n");
goto _fail;
}
csf_set_current_order(song, 0);
song->repeat_count = 0;
song->buffer_count = 0;
song->stop_at_order = -1;
song->stop_at_row = -1;
song->flags &= ~(SONG_PAUSED | SONG_PATTERNLOOP | SONG_ENDREACHED);
csf_reset_playmarks(song);
while ((len = csf_read(song, buf, sizeof(buf))))
printf("mixed %i bytes\n", len);
return EXIT_SUCCESS;
_fail:
return EXIT_FAILURE;
}
|