In this directory a small Fortran program is available for download, along with its source code (VirtualMike.for), which allows for computation of a signal coming from a virtual directive microphone, pointing where You like in the 3D space. Tha starting signal is a B-format waveform, stored in a 4-channel WAV file. This is filtered, producing a mono signal corresponding to the virtual microphone recording. The software asks for the name of the input file (a 4-channel B-format signal in WAV style) and of the output file (a mono wav file). Then You need to set the Directivity factor, which ranges between 0 (omnidirectional) to 2 (figure of eight). 1 means a cardioid, and all intermediate values are allowed (it is the same as the corresponding knob of the Soundfield microphone). Then You need to select the reference system (Angular or Cartesian). In the firstcase, the direction where Your virtual microphone is pointing is specified by the Azimut and Elevation angle (as it is common in binaural technology with HRTFs); azimut = 0 means in front (along the X axis of the Bformat), Azimut = 90 means on the left (Y axis), and so on. The angles are in degrees. The second choice is Cartesian, in which case You need to introduce the three cartesian coords of the direction where Your mike is pointing. For example, 1 0 0 is in front, and 0 0 1 is above. Don't worry about normalizing the vector modulus to unity, this is done by the program. This software can also be used as a Bformat decoder: suppose that You have 6 loudspeakers, placed around Your listening position. Measure the XYZ coordinates of each loudspeaker with respect to the listening position. Then synthesize for each loudspeaker a signal by pointing a virtual microphone in its direction. Play all these synthesized signals simultaneously (CoolEditPro is fine for this), and You will get Your original B-format signal decoded on Your loudspeaker array. This is not exactly Ambisonics. But this is what is being done within the forthcoming Soundfield SP451 Surround Sound Processor. Furthermore, this is done in digital domain, floating point, there is no limit on the number of channels, their position, and the choice of the directivity pattern for each of them. Thus, this is great for creating 5.1 mixes from a B-format signal. And it is free! If You want a deeper look at theory employed for extracting the virtual directivity patterns from the B-format, please download the WinWord file called VirtualTheory.doc The program can also be called directly from the command line, which makes it easy to create a BAT file (oh, good, old DOS!) for automatically creating a complete surround mix or decoding. The command-line syntax is as follows: C:\>VirtualMike BformatFile.wav VirtualMikeOut.wav DirectivityFactor A Azimut Elevation or C:\>VirtualMike BformatFile.wav VirtualMikeOut.wav DirectivityFactor C Xpointer Ypointer Zpointer Here this software was employed for processing the B-format impulse responses measured in three Italian theatres (La Scala in Milan, Teatro Comunale in Ferrara, Teatro Verdi in Trieste) and to extract the directive response for driving the "surround" part of an Ambiophonics reproduction system with 8 loudspeakers. The loudspeaker layout is two squares, one horizontal (FrontLeft, FrontRight, RearLeft, RearRight) and one vertical at the sides of the listener (LeftDown, LeftUp, RightDown, RightUp). The coordinates can easily be changed for different arrangements of the 8 loudspeakers. Three batch files are stored here, one for each theatre. Enjoy it! Angelo Farina P.S.: a new, faster version of MirtualMike has been uploaded, called VirtualMike2. This processes the B-format signal stored in two separate stereo files (WX and YZ), and automatically computes a stereo virtual microphone output, by taking the simmetric direction of the one indicated. You have to specify the orientation of the Left virtual microphone, the Right one is assumed automatically. This version is much faster, because the I/O is now bufferized in blocks of 16384 samples each. Each BAT file has now its counterpart (i.e. SCALA2.BAT) containing the proper syntax for invoking VirtualMike2. Finally, now the values of the angles or coordinates can also be written as integers (without the dot), which instead caused errors in the original virtualmike.exe.