Sponsored Content
Top Forums Programming A Function To Create A 1 Second Sinewave WAVE Beep File In Python. Post 302930838 by DGPickett on Wednesday 7th of January 2015 04:29:09 PM
Old 01-07-2015
Reminds me of an early C project I wrote myself 21 yrs. ago, which does a pure 440 hz sine wave with one byte samples and low sample rate:

Code:
 
a440.c
======
 
#include <stdio.h>
#ifdef BORLAND
#include <stdlib.h>
#endif
#include <math.h>
char hdr[]={'R', 'I', 'F', 'F', 0, 0, 0, 0, 'W', 'A', 'V', 'E', 'f', 'm', 't', 32, 16, 0, 0, 0, 1, 0, 1, 0, 17, '+', 0, 0, 17, '+', 0, 0, 1, 0, 8, 0, 'd', 'a', 't', 'a', 0, 0, 0, 0};
FILE * f ;
main(argc,argv)
int argc;
char**argv;
{
  #define SAMPLES 600L
  #define FREQ 440
  #define SPS 11025
  #define PI 3.1415927
  long i ;
  float w, x ;
  if ( argc < 2 )
  {
    fprintf( stderr, "Usage is '%s filename'\n", argv[0] ) ;
    exit( -1 ) ;
  }
  if ( !( f = fopen( argv[1], "wb" ) ) )
  {
    fprintf( stderr, "Can't open '%s' to write\n", argv[1] ) ;
    exit( -2 ) ;
  }
  w = 2 * PI * FREQ / SPS ;
  i = SAMPLES + 36 ;
  hdr[4] = i % 256 ;
  hdr[5] = ( i / 256 ) % 256 ;
  hdr[6] = ( i / 65536L ) % 256 ;
  hdr[7] = i / 16777216L ;
  i = SAMPLES ;
  hdr[40] = i % 256 ;
  hdr[41] = ( i / 256 ) % 256 ;
  hdr[42] = ( i / 65536L ) % 256 ;
  hdr[43] = i / 16777216L ;
  for( i = 0L ; i < sizeof(hdr) ; i++ )
  {
    putc( hdr[i], f ) ;
  }
  i = 0 ;
  while ( ++i <= SAMPLES )
  {
    putc( (char)( 128.0 + 127.999 * sin( w * i ) ), f ) ;
  }
  fclose( f ) ;
  exit( 0 ) ;
}


Last edited by DGPickett; 01-07-2015 at 05:46 PM..
This User Gave Thanks to DGPickett For This Post:
 

9 More Discussions You Might Find Interesting

1. Programming

about wave file integrating.

Now I have two wave file(*.wav) at Tru64 Unix machine. I want to make a new wave file including the two wave file. how I should finish this programmer. If you know, can you give me the format of the wave file(*.wav) and Sun au file(*.au). Thank you. (1 Reply)
Discussion started by: livic
1 Replies

2. Shell Programming and Scripting

How to create SQRT function in catenate file

HI, I have a file which i catenate and using the fields in the file, I would like to get sqrt of it. I tried to man the function but it normally would need an echo as well as bc. What I am intending to find out is catenate a file where let say cat a.txt| awk ' { t= h*($3+$2); t=... (7 Replies)
Discussion started by: ahjiefreak
7 Replies

3. Programming

Python, Platform Independent, Pure Audio Sinewave Generator...

IKHz_SW_OSX.py A DEMO mono _pure_ sinewave generator using standard text mode Python 2.6.7 to at least 2.7.3. This code is EASILY modifyable to Python version 3.x.x... This DEMO kids level 1KHz generator is mainly for a MacBook Pro, (13 inch in my case), OSX 10.7.5 and above. See below...... (0 Replies)
Discussion started by: wisecracker
0 Replies

4. Shell Programming and Scripting

How to create .txt file by using function?

My Calling script is like below: for file in `echo $LIST_OF_FILES` --listing filenames eg, xyz_meta_20110501_00000789.tar do file_name=`basename $file` <call a function to create .txt file in below format> done Want to generate a .txt file that contains below data in ksh: ... (3 Replies)
Discussion started by: vedanta
3 Replies

5. Windows & DOS: Issues & Discussions

A SOX 1KHz Sinewave Generator Using A Batch File...

Hi all... I don't think this has been done before but I am open to being corrected... This batch file generates a 65536 byte binary file to give 8 seconds of pure sinewave at the earphone/speaker output(s)... It uses ONLY a default Windows 32 bit installation, to Windows 7, except for the... (0 Replies)
Discussion started by: wisecracker
0 Replies

6. Shell Programming and Scripting

Create function

I would like to make a perl function , this function could send mail via SMTP and also could import a text file into mail content , that mean I have a text file , want to use this function to send mail via SMTP , the mail content is the text file , would advise how to write this script ? thanks (1 Reply)
Discussion started by: ust3
1 Replies

7. Shell Programming and Scripting

Python - Function print vs return - whats wrong

All, I have a basic buzz program written in python with return function. If i change return with print,it works fine but i want to know whats wrong with return statement.Can anyone help me whats wrong with this #!/usr/bin/python def div4and6(s,e): for i in range(s,e+1): if... (5 Replies)
Discussion started by: oky
5 Replies

8. Shell Programming and Scripting

Python etree.ElementTree findall function

Hi everyone. I'm trying to learn python as it relates to parsing xml, and I thought I would start by trying to create an easy (or I thought would be easy) function to match on a certain attribute in an xml file and print out it's related attribute. Here's an example to hopeful make sense of... (0 Replies)
Discussion started by: timj123
0 Replies

9. Programming

Create a C source and compile inside Python 1.4.0 to 3.7.0 in Python for ALL? platforms...

Hi all... As you know I like making code backwards compatible for as many platforms as possible. This Python script was in fact dedicated for the AMIGA A1200 using Pythons 1.4.0, 1.5.2, 1.6.0, 2.0.1, and 2.4.6 as that is all we have for varying levels of upgrades from a HDD and 4MB FastRam... (1 Reply)
Discussion started by: wisecracker
1 Replies
SDL_LoadWAV(3)							 SDL API Reference						    SDL_LoadWAV(3)

NAME
SDL_LoadWAV - Load a WAVE file SYNOPSIS
#include "SDL.h" SDL_AudioSpec *SDL_LoadWAV(const char *file, SDL_AudioSpec *spec, Uint8 **audio_buf, Uint32 *audio_len); DESCRIPTION
SDL_LoadWAV This function loads a WAVE file into memory. If this function succeeds, it returns the given SDL_AudioSpec, filled with the audio data format of the wave data, and sets audio_buf to a malloc'd buffer containing the audio data, and sets audio_len to the length of that audio buffer, in bytes. You need to free the audio buf- fer with SDL_FreeWAV when you are done with it. This function returns NULL and sets the SDL error message if the wave file cannot be opened, uses an unknown data format, or is corrupt. Currently raw, MS-ADPCM and IMA-ADPCM WAVE files are supported. EXAMPLE
SDL_AudioSpec wav_spec; Uint32 wav_length; Uint8 *wav_buffer; /* Load the WAV */ if( SDL_LoadWAV("test.wav", &wav_spec, &wav_buffer, &wav_length) == NULL ){ fprintf(stderr, "Could not open test.wav: %s ", SDL_GetError()); exit(-1); } . . . /* Do stuff with the WAV */ . . /* Free It */ SDL_FreeWAV(wav_buffer); SEE ALSO
SDL_AudioSpec, SDL_OpenAudio, SDL_FreeWAV SDL
Tue 11 Sep 2001, 22:58 SDL_LoadWAV(3)
All times are GMT -4. The time now is 01:36 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy