1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-10-10 00:23:32 +02:00
Files
.github
autotools
cmake-proxies
dox2-src
help
images
include
lib-src
FileDialog
expat
ffmpeg
header-substitutes
lame
lib-widget-extra
libflac
libid3tag
libmad
libmp3lame
libnyquist
libogg
libscorealign
libsndfile
libsoxr
libvamp
libvorbis
doc
examples
include
lib
books
modes
Makefile.am
Makefile.in
analysis.c
backends.h
barkmel.c
bitrate.c
bitrate.h
block.c
codebook.c
codebook.h
codec_internal.h
envelope.c
envelope.h
floor0.c
floor1.c
highlevel.h
info.c
lookup.c
lookup.h
lookup_data.h
lookups.pl
lpc.c
lpc.h
lsp.c
lsp.h
mapping0.c
masking.h
mdct.c
mdct.h
misc.h
os.h
psy.c
psy.h
psytune.c
registry.c
registry.h
res0.c
scales.h
sharedbook.c
smallft.c
smallft.h
synthesis.c
tone.c
vorbisenc.c
vorbisfile.c
window.c
window.h
m4
macos
macosx
symbian
test
vq
win32
AUTHORS
CHANGES
COPYING
Makefile.am
Makefile.in
README
autogen.sh
autotools.patch
compile
config.guess
config.h.in
config.sub
configure
configure.ac
depcomp
install-sh
libvorbis.spec.in
local-libogg.patch
ltmain.sh
missing
no-docs-examples.patch
todo.txt
vorbis-uninstalled.pc.in
vorbis.m4
vorbis.pc.in
vorbisenc-uninstalled.pc.in
vorbisenc.pc.in
vorbisfile-uninstalled.pc.in
vorbisfile.pc.in
lv2
mod-null
mod-nyq-bench
mod-script-pipe
mod-track-panel
mpglib
portaudio-v19
portburn
portmidi
portmixer
portsmf
sbsms
soundtouch
twolame
CMakeLists.txt
Makefile.am
Makefile.in
audacity-patches.txt
dist-libsoxr.mk
dist-libvamp.mk
dist-portaudio.mk
linux
locale
m4
mac
nyq-po
nyquist
plug-ins
presets
qa
scripts
src
tests
win
.gitattributes
.gitignore
.travis.yml
ABOUT-NLS
CHANGELOG.txt
CMakeLists.txt
CODE_OF_CONDUCT.md
CONTRIBUTING.md
Directory.Build.props
INSTALL
LICENSE.txt
Makefile.am
Makefile.in
PULL_REQUEST_TEMPLATE.md
README.txt
appveyor.yml
audacity.dox
configure
configure.ac
todo.txt
audacity/lib-src/libvorbis/lib/tone.c
2013-10-24 18:24:47 +00:00

55 lines
1013 B
C

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <string.h>
void usage(){
fprintf(stderr,"tone <frequency_Hz>,[<amplitude>] [<frequency_Hz>,[<amplitude>]...]\n");
exit(1);
}
int main (int argc,char *argv[]){
int i,j;
double *f;
double *amp;
if(argc<2)usage();
f=alloca(sizeof(*f)*(argc-1));
amp=alloca(sizeof(*amp)*(argc-1));
i=0;
while(argv[i+1]){
char *pos=strchr(argv[i+1],',');
f[i]=atof(argv[i+1]);
if(pos)
amp[i]=atof(pos+1)*32767.f;
else
amp[i]=32767.f;
fprintf(stderr,"%g Hz, %g amp\n",f[i],amp[i]);
i++;
}
for(i=0;i<44100*10;i++){
float val=0;
int ival;
for(j=0;j<argc-1;j++)
val+=amp[j]*sin(i/44100.f*f[j]*2*M_PI);
ival=rint(val);
if(ival>32767.f)ival=32767.f;
if(ival<-32768.f)ival=-32768.f;
fprintf(stdout,"%c%c%c%c",
(char)(ival&0xff),
(char)((ival>>8)&0xff),
(char)(ival&0xff),
(char)((ival>>8)&0xff));
}
return(0);
}