how to create a WAV file of different tones?

T

Tim_Mac

hi,
i'm trying to create a WAV file using c# that will contain a set of
beep tones, which are only known at run time. It is a bit like morse
code except that each tone will correspond to an alphanumeric
character. I've searched around the newsgroups and google and most of
what i found was about using Win32 functions to perform system beeps,
but i want to create a WAV file containing the beeps, not beep out
through the system speaker.
i've looked at DTMF but i'm looking for something with a complete
'alphabet' of sounds, not just the digit tones. i'm expecting to
define my own alphabet of tones, but have no idea where to start.
if someone could give me a few pointers i'd be really grateful.
tim
 
T

Tim_Mac

hi Pete. thanks for your very informative reply.
i meant 'tone' in the general sense like a 'ring tone', technically it
should be that each letter/digit translates to a different frequency.
in terms of an alphabet, i only mean having a pre-defined mapping of
frequencies to letters/digits, that can be encoded by a server into
WAV and decoded by a client hearing the file played back. just like
the way DTMF tones are used to communicate through an automated phone
system. although the application is speaker/microphone based instead
of using any cabled medium.
the question is related to c# because .Net is the platform the
application is being developed in. in the absence of a .Net sound
newsgroup, i picked c# as a best bet. i gather the APIs in the .Net
framework don't do any sound creation or manipulation, so in that
sense you're right it isn't much to do with c#. although since there
is a Win32 function to emit a beep at a specified frequency and
duration, i thought it would not be too much to hope that a similar
function would be available (somewhere) that would output the sound to
a file rather than the outputting directly through PC sound-card or
speaker.
DirectMusic looks like exactly what i was hoping for... i'll probably
end up writing a library that could work something like this:

public void Encode(string code, string filename)
{
using(MemoryStream ms = new MemoryStream())
{
foreach(char c in code.ToCharArray())
ms.Write(TranslateCharToAudio(c));
}
writeStreamToDiskInWavFormat(filename) etc
}

thanks for pointing me in the right direction.
tim.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top