Sine wave: Difference between revisions
Content added Content deleted
(→{{header|Phix}}: add Python) |
(→{{header|BASIC256}}: add C) |
||
Line 15: | Line 15: | ||
=={{header|BASIC256}}== |
=={{header|BASIC256}}== |
||
<lang BASIC256>sound 440, 5000</lang> |
<lang BASIC256>sound 440, 5000</lang> |
||
=={{header|C}}== |
|||
{{trans|Python}} |
|||
<lang c>#include <stdio.h> |
|||
#include <math.h> |
|||
#include <stdlib.h> |
|||
// AU header (CD-quality audio) |
|||
int header[] = {46, 115, 110, 100, 0, 0, 0, 24, |
|||
255, 255, 255, 255, 0, 0, 0, 3, |
|||
0, 0, 172, 68, 0, 0, 0, 1}; |
|||
int main(int argc, char *argv[]){ |
|||
float freq, dur; |
|||
long i, v; |
|||
if (argc < 2) { |
|||
printf("Usage:\n"); |
|||
printf(" csine <frequency> <duration>\n"); |
|||
exit(1); |
|||
} |
|||
freq = atof(argv[1]); |
|||
dur = atof(argv[2]); |
|||
for (i = 0; i < 24; i++) |
|||
putchar(header[i]); |
|||
for (i = 0; i < dur * 44100; i++) { |
|||
v = (long) round(32000. * sin(2. * M_PI * freq * i / 44100.)); |
|||
v = v % 65536; |
|||
putchar(v >> 8); |
|||
putchar(v % 256); |
|||
} |
|||
}</lang> |
|||
Test: |
|||
<pre> |
|||
gcc -o csine csine.c -lm |
|||
./csine 440 5 | play - # Now either pipe output into SoX to play |
|||
./csine 440 5 > test.au # or redirect output to a file. |
|||
</pre> |
|||
=={{header|Delphi}}== |
=={{header|Delphi}}== |