File: sin.cpp

package info (click to toggle)
cadencii 3.3.9%2Bsvn20110818.r1732-5
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 35,880 kB
  • sloc: cs: 160,836; java: 42,449; cpp: 7,605; ansic: 1,728; perl: 1,087; makefile: 236; php: 142; xml: 117; sh: 21
file content (30 lines) | stat: -rw-r--r-- 832 bytes parent folder | download | duplicates (6)
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
#include <math.h>
#include <stdio.h>
#include <io.h>
#include <fcntl.h>

int main( int argc, char *argv[] )
{
    if( _setmode( _fileno( stdout ), _O_BINARY ) == -1 ){
        return -1;
    }
    const double HZ = 220.0;
    const double RATE = 44100.0;
    const double I_RATE = 1.0 / RATE;
    const double AMP = 0.5;
    const double PI2 = 3.141592653589793238462643383279 * 2.0;
    unsigned long indx = 0;
    while( true ){
        double v = AMP * sin( indx * I_RATE * HZ * PI2 );
        indx++;
        short sv = (short)(v * 32768.0);
        unsigned char b0 = (unsigned char)(0xff & (sv >> 8));
        unsigned char b1 = (unsigned char)(0xff & sv);
//printf( "v=%e\n", v );
        putchar( b0 );
        putchar( b1 );
        putchar( b0 );
        putchar( b1 );
    }
    return 0;
}