- Takes data from a random source as 16-bit samples
- Applies bit masks to reduce amplitude
./noise | aplay -N -f S16 -c2 -r 96000 -
#include <stdio.h> | |
#include <stdint.h> | |
#include <stdlib.h> | |
int main( void ) | |
{ | |
FILE* ifh = fopen( "/dev/urandom", "rb" ); | |
/* Number of samples to buffer */ | |
const size_t buffer_size = 256; | |
/* Constant for the maximum amplitude desired */ | |
const int16_t max_amp = 0x07FF; | |
/* Buffer of samples to process */ | |
int16_t* buffer = calloc( buffer_size, sizeof( int16_t ) ); | |
size_t i; | |
while ( 1 ) | |
{ | |
fread( buffer, sizeof( int16_t ), buffer_size, ifh ); | |
for ( i = 0; i < buffer_size; ++i ) | |
{ | |
if ( buffer[i] > 0 ) | |
{ | |
buffer[i] = buffer[i] & max_amp; | |
} | |
else | |
{ | |
buffer[i] = buffer[i] | ~max_amp; | |
} | |
} | |
fwrite( buffer, sizeof( int16_t ), buffer_size, stdout ); | |
} | |
} |