Archive
Cutting Your Teeth on FMOD Part 6: Recording and visualizing sound card output
In this article, we’ll take a look at how to intercept and record the output from a sound card. Our primary focus here will be to create a visualizer that reflects the output sound using the frequency analysis technique discussed in part 4, however you can of course use the recording code for any purpose you wish.
I won’t go into the details of FFT frequency analysis here (see part 4 for that); we’ll just look at how to capture the real-time sound output then provide the visualizer as a usage example. Read more…
Cutting Your Teeth on FMOD Part 5: Real-time streaming of programmatically-generated audio
This article was inspired byĀ David GouveiaĀ – thanks for the suggestion!
In this article, we shall look at how to generate sounds programmatically using a function which generates each sample one by one, and how to feed these samples into the audio buffer of a playing stream in real-time.
Note: The SimpleFMOD library contains all of the source code and pre-compiled executables for the examples in this series.
Cutting Your Teeth on FMOD Part 4: Frequency Analysis, Graphic Equalizer, Beat Detection and BPM Estimation
In this article, we shall look at how to do a frequency analysis of a playing song in FMOD and learn how to use this as the basis for a variety of useful applications.
What is frequency analysis?
Note: The SimpleFMOD library contains all of the source code and pre-compiled executables for the examples in this series.
Frequency analysis is where we take some playing audio and identify the volume level of each range of frequencies being played. In a simple example, this lets us identify the current volume of the bass, mid-range and treble in a song individually, or any other desired range of frequencies. Read more…
Cutting Your Teeth on FMOD Part 3: Embedding Sounds In Your Application as Resources
Having all of your sounds and music as separate files in your application is messy, and makes abuse by mischievous souls slightly easier. To tidy things up, we can embed audio files directly into the compiled EXE file. FMOD provides the ability to load audio directly from memory, so the problem has two main steps: 1. embed the audio resources in your application, 2. modify the application code to load resources from memory (your application process) instead of from files.
Note: The SimpleFMOD library contains all of the source code and pre-compiled executables for the examples in this series.
Read more…
Cutting Your Teeth on FMOD Part 2: Channel Groups
If you’ve been following Part 1 of this series you should now be able to play music and sound effects with FMOD in your applications, pause and unpause them and change their volumes. But what about when you have many sounds whose parameters – like volume and pause state – you want to be able to control universally via a single change without iterating over them all? This is where channel groups come in.
Note: The SimpleFMOD library contains all of the source code and pre-compiled executables for the examples in this series.
Read more…
Cutting Your Teeth on FMOD Part 1: Build environment, initialization and playing sounds
FMOD by Firelight Technologies Pty Ltd. is a cross-platform audio API used in – among other things – many commercial games such as Crysis, Diablo 3, Guild Wars, Guitar Hero, League of Legends, Second Life, StarCraft II, Tomb Raider, World of Warcraft and many others. It is in many ways an indsutry-wide gold standard in audio engines, and as such, knowing how to use it will come in very handy if you are coding games professionally. In the first part of this series, we’ll look at how to get C++ applications using FMOD to compile, how to set up the sound system at the start of your application, and how to play MP3s (although you can use any supported format you wish).
Note: The SimpleFMOD library contains all of the source code and pre-compiled executables for the examples in this series.
Winamp General Purpose Plug-ins (Track Title Spool to File)
Winamp Track Title Monitor lets you output formatted data about the currently playing track to a text-file and supports multiple instances of Winamp on the same machine. Read more…
Out-of-process (IPC) Winamp control with multiple Winamp instances
At Deviant Audio, we use bespoke tools written in C# to control Winamp playlists. The tools are processes external to Winamp which communicate via IPC (Inter-process Communication) – namely via the SendMessage() Win32 API function.
When controlling Winamp with a 3rd party process, the first thing you must do is locate Winamp’s main window. If you want playlist control, you need the playlist window handle also. Read more…