Sound Hardware
Written by Harry Fairhead   
Thursday, 05 January 2023
Article Index
Sound Hardware
Programming sound

Producing a tune

If you want to use an FM synthesizer to produce a tune you have to write a program to generate the right notes at the right time.

Well this isn’t entirely true because there is a way to record music using an FM chip. Using an industry standard MIDI interface even an early SoundBlaster card could be connected to a keyboard – usually a synthesizer in its own right. A musician plays on the keyboard and the software records what notes were hit and when. The result can be edited and replayed as part of a game or as background music.

If you have never heard a MIDI file then it’s worth having a listen. Open whatever media player your machine has and look for files ending .mid or .midi. If you are using a recent version of Windows then you probably wont find any but you can find some examples to download by searching the web - Wikipedia has an interesting public domain example.

MIDI files can be impressive, even more so when you consider how little space they take up, but they often sound a like a mechanical fairground organ. Perhaps for this reason MIDI files aren’t as common as they once were. An exception to this observation is their use in web pages to provide some, usually annoying, background music! A MIDI file is much more compact than the corresponding wave file, no matter how much it is compressed, and this makes it ideal for fast downloading.

MIDI wasn't included in the original HTML5 audio tag specification but it has been added. 

Sampling

Although MIDI is often assumed to mean FM Synthesis today’s sound hardware has mostly given up this method of creating musical instruments. Instead they use the more advanced approach of “sampling”. The idea is fairly simple. Instead of trying to find a recipe for a set of frequencies that make a sound like a trumpet, sampling uses an ADC to record a trumpet playing a single note.

This sounds simple enough but the clever part is to use the single sample to create a trumpet note of any desired pitch. This isn’t that hard to do in principle but difficult enough in practice to keep FM Synthesis in business until comparatively recently.

Today’s sound hardware mostly don’t use an FM Synthesis chip to implement MIDI music. Instead they contain a table of samples for each of the standard musical instruments and a digital signal processor chip capable of shifting the pitch of the sample – hence the alternative name “wave table synthesis”.

This produces much more realistic sounding instruments but the basic method of using the facility remains the same as for an FM chip. More expensive addon sound cards also offer the facility to record your own samples to extend the range of instruments that can be played via MIDI. Although this can be fun, it’s obviously something that you are only going to really need if you are a keen music maker.

 

sample

 

It is worth mentioning that a sound card with a MIDI interface can take control of external MIDI instruments and play them under software control.

Programming Sound

So you want to gain control over the sound hardware.

If you are using Windows then until recently the top level API is the DirectSound and/or the DirectMusic  component of DirectX.  Put simply DirectSound does wave synthesis via a DAC and DirectSound does MIDI synthesis and replay. The only problem is that DirectSound is deprecated and isn't available on 64-bit processors.

In fact both DirectSound and DirectMusic along with a more general API Windows Multimedia are listed as Legacy APIs and to be avoided if possible.

At a lower level the Core Audio APIs were rewritten for Window Vista /7 but these are not available for earlier versions of Windows.

The replacment for DirectSound is XAudio 2.

What about Linux? Sound on Linux is a mess. There is no single sound API and there are lots of alternatives which have strengths that make them particularly suitable for particular tasks. Perhaps the most general low level API is ALSA - Advanced Linux Sound Architecutre. This supports MIDI, mixing and a range of sound hardware.

Where Next?

Today’s sound cards are improved in their use of a digital signal processor (DSP) to produce effects such as reverberation and echo, and to perform compression and decompression without involving the main processor. Given a good set of speakers and a suitable surround sound amplifier the DSP can produce good 3D sound. When the plane flies overhead the sound appears to come from above, even though there are no speakers stuck to the ceiling.

Of course most machine now have their sound hardware incorperated into their main boards and the idea of buying a separate addon sound card isn't something that occurs to the average user. Even the idea that there was such a time seems strange and unlikely. Today only audio and music enthusiasts invest in separate high quality sound cards and this is a niche market.

As far as sound goes – the PC has reached its evolutionary pinnacle, or has it…

 Related Articles

Sound Blaster Creator Dies

Google Open Sources Bob Moog Google Doodle

Compression - the Starr Guide

.NET MP3

MP3

 

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

C book

 

Comments




or email your comment to: comments@i-programmer.info



Last Updated ( Sunday, 08 January 2023 )