Sigrid Solveig Haflínudóttiruse actual frq when seeking9f77a975 years agoHistory
97 lines · 1.6 KB · C
RawDownload
#include "common.h"#include "pmplay.h"#include "pmp_mix.h" enum{	Nsamp = 4096,}; static voidusage(void){	fprint(2, "usage: %s [-a amp] [-f freq] [-s seconds] [-v volume] <file.(xm|mod|ft) >/dev/audio\n", argv0);	exits("usage");} voidmain(int argc, char **argv){	int amp, frq, vol, n, r, sz;	s16int s[Nsamp*2];	double pos;	u8int *b; 	amp = 10;	frq = 44100;	pos = 0;	vol = 256;	ARGBEGIN{	case 'a':		amp = atoi(EARGF(usage()));		assert(amp >= 1 && amp <= 32);		break;	case 'f':		frq = atoi(EARGF(usage()));		assert(frq >= 8000 && frq <= 96000);		break;	case 's':		pos = atof(EARGF(usage()));		assert(pos >= 0.0);		break;	case 'v':		vol = atoi(EARGF(usage()));		assert(vol >= 0 && vol <= 256);		break;	default:		usage();	}ARGEND 	if(!initMusic(frq, Nsamp, true, true))		sysfatal("initMusic");	setAmp(amp);	setMasterVol(vol); 	sz = 32768;	b = nil;	for(n = 0;; n += r){		if(sz-n < 65536){			sz *= 2;			if((b = realloc(b, sz)) == nil)				sysfatal("memory");		}		if((r = read(0, b+n, sz-n)) < 0)			sysfatal("%r");		if(r == 0)			break;	} 	if(!loadMusicFromData(b, n))		sysfatal("loadMusicFromData");	if(!startMusic())		sysfatal("startMusic");	startPlaying();	if(pos > 0.0)		fprint(2, "time: %g\n", pos);	for(; pos > 0.0; pos -= (double)n / frq){		n = pos * frq;		if(n < 1)			break;		if(n > Nsamp)			n = Nsamp;		mix_UpdateBuffer(s, n);		if(dump_EndOfTune(song.len-1))			break;	}	for(;;){		if(dump_EndOfTune(song.len-1))			break;		mix_UpdateBuffer(s, Nsamp);		write(1, s, sizeof(s));	} 	stopMusic();	freeMusic(); 	exits(nil);}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t