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
BPLAY(1)						      General Commands Manual							  BPLAY(1)

NAME
bplay, brec - buffered sound recording/playing SYNOPSIS
bplay [-d device] [-B buffersize] [-S] [-s speed] [-b bits] [[-t secs] | [-T samples]] [[-j secs] | [-J samples]] [-D level] [file] brec [-d device] [-B buffersize] [-S] [-s speed] [-b bits] [[-t secs] | [-T samples]] [-r|-v|-w] [-D level] [file] DESCRIPTION
bplay copies data from the named sound file (or the standard input if no filename is given) to the audio device. brec copies data from the audio device to the named sound file (or the standard output if no filename is present). These programs are intended to be drop-in replacements for the vplay and vrec programs by Michael Beck (beck@informatik.hu-berlin.de). OPTIONS -B buffersize Use the supplied audio buffer size instead of the default. -d device Use the supplied audio device instead of the default. -S Sound file is stereo. -s speed The speed in samples per second. -b bits The number of bits per sample. Only 8 and 16 are currently supported. -t secs The number of seconds to be played or recorded. -T samples The number of samples to be played or recorded. -j secs When playing, the number of seconds to skip at the beginning of the input before playing. -J samples When playing, the number of samples to skip at the beginning of the input before playing. -r When recording, write raw sound file. -v When recording, write Creative Labs VOC sound file. -w When recording write Microsoft Wave sound file. Note that the WAVE file format is limited to 4GiB filesize. Recording more data is possible, but the length info won't be consistent. -q Quiet mode. No messages are displayed. -D level Print debug information to stderr. Debug level ranges from 0 to 2, where 0 is no debug information. FILES
/dev/dsp The audio device. BUGS
The -t, -T, -j and -J options may do strange things when playing VOC files. There are limitations on recording VOC format files - specifically VOC files are only recorded in the 1.20 version of the format, which some player programs may choke on. There is also currently a limit of around 16M on the size of a VOC file which will be recorded. This is probably not a problem since I don't think anybody really uses VOC files anymore. This program prefers to run setuid root. This is because it wants to use setpriority() to run at the highest possible priority, and also locks down the buffers it uses to avoid them being swapped out. AUTHOR
David Monro (davidm@amberdata.demon.co.uk or davidm@cs.usyd.edu.au) The option parsing code was originally taken from vplay to maintain compatibility. 20 September 1999 BPLAY(1)
All times are GMT -4. The time now is 10:57 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy