How to add or change a Soundflower device

If Soundflower (2ch) and Soundflower (16ch) are not enough for you or you want a different number of channels here is how you can change the settings:



Summary: Logged in as root, edit the Info.plist file inside the Soundflower.kext kernel extension and duplicate one of the <dict> .. <dict> blocks inside the AudioEngines element. Then give it another name and edit it's IOAudioStreamNumChannels. Soundflower.kext's Info.plist can be found in /System/Library/Extensions/Soundflower.kext/Contents.

Activate with either a computer reboot or the commands kextunload Soundflower.kext and kextload Soundflower.kext.



Example result, I added Soundflower 8:





Prerequisites: Soundflower installed, administrator access to your computer, no fear of the terminal and command line.


- Open Terminal

(All commands to be entered are indicated in this style.)

- su to root by typing 'sudo su -' followed by <enter>

- (Provide your password when asked.)

- cd /System/Library/Extensions/Soundflower.kext/Contents

- vi Info.plist

This will bring up a rather technical editor program. Use your favorite text editor to edit the file Info.plist if you want.

(An alternative is pico Info.plist, pico is an easier to use editor.)

- Inside the file, find the following text: '<key>AudioEngines</key>'.

- Underneath, you will find a block of text that starts with <array>.

- Inside the <array> .. </array> block you will see two blocks of elements that begin with <dict> and end with </dict>.

- Copy one of these blocks and paste it inside the <array> .. </array> area right before one of the existing <dict> elements. (Make sure you don't copy it somewhere else!)

- In the copied text, change the string 'Soundflower (#ch)' into the name you want to give your new Soundflower device.

- Change the number (integer) under IOAudioStreamNumChannels from 2 or 16 into the number of channels that you want your device to have. An even number is recommended.

- Safe the file.

- To activate the changes, either reboot your computer or use the commands kextunload Soundflower.kext and kextload Soundflower.kext to unload and then reload the extension.

- UPDATE 050925: You will probably need to update the kext cache with kextcache -k Soundflower.kext after the update so that the device will show up after you restart.


Read on for an example of the edited Info.plist file.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>Soundflower</string>
<key>CFBundleGetInfoString</key>
<string>Version 1.0</string>
<key>CFBundleIdentifier</key>
<string>com.Cycling74.driver.Soundflower</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>Soundflower</string>
<key>CFBundlePackageType</key>
<string>KEXT</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>sFlo</string>
<key>CFBundleVersion</key>
<string>1.0d10</string>
<key>IOKitPersonalities</key>
<dict>
<key>PhantomAudioDriver</key>
<dict>
<key>AudioEngines</key>
<array>
<dict>
<key>BlockSize</key>
<integer>8192</integer>
<key>Description</key>
<string>Soundflower (2ch)</string>
<key>Formats</key>
<array>
<dict>
<key>IOAudioStreamAlignment</key>
<integer>1</integer>
<key>IOAudioStreamBitDepth</key>
<integer>32</integer>
<key>IOAudioStreamBitWidth</key>
<integer>32</integer>
<key>IOAudioStreamByteOrder</key>
<integer>0</integer>
<key>IOAudioStreamDriverTag</key>
<integer>0</integer>
<key>IOAudioStreamIsMixable</key>
<integer>1</integer>
<key>IOAudioStreamNumChannels</key>
<integer>2</integer>
<key>IOAudioStreamNumericRepresentation</key>
<integer>1936289396</integer>
<key>IOAudioStreamSampleFormat</key>
<integer>1819304813</integer>
</dict>
</array>
<key>NumBlocks</key>
<integer>2</integer>
<key>NumStreams</key>
<integer>1</integer>
<key>SampleRates</key>
<array>
<integer>44100</integer>
<integer>48000</integer>
<integer>96000</integer>
</array>
</dict>
<dict>
<key>BlockSize</key>
<integer>8192</integer>
<key>Description</key>
<string>Soundflower 8</string>
<key>Formats</key>
<array>
<dict>
<key>IOAudioStreamAlignment</key>
<integer>1</integer>
<key>IOAudioStreamBitDepth</key>
<integer>32</integer>
<key>IOAudioStreamBitWidth</key>
<integer>32</integer>
<key>IOAudioStreamByteOrder</key>
<integer>0</integer>
<key>IOAudioStreamDriverTag</key>
<integer>0</integer>
<key>IOAudioStreamIsMixable</key>
<integer>1</integer>
<key>IOAudioStreamNumChannels</key>
<integer>8</integer>
<key>IOAudioStreamNumericRepresentation</key>
<integer>1936289396</integer>
<key>IOAudioStreamSampleFormat</key>
<integer>1819304813</integer>
</dict>
</array>
<key>NumBlocks</key>
<integer>2</integer>
<key>NumStreams</key>
<integer>1</integer>
<key>SampleRates</key>
<array>
<integer>44100</integer>
<integer>48000</integer>
<integer>96000</integer>
</array>
</dict>
<dict>
<key>BlockSize</key>
<integer>8192</integer>
<key>Description</key>
<string>Soundflower (16ch)</string>
<key>Formats</key>
<array>
<dict>
<key>IOAudioStreamAlignment</key>
<integer>1</integer>
<key>IOAudioStreamBitDepth</key>
<integer>32</integer>
<key>IOAudioStreamBitWidth</key>
<integer>32</integer>
<key>IOAudioStreamByteOrder</key>
<integer>0</integer>
<key>IOAudioStreamDriverTag</key>
<integer>0</integer>
<key>IOAudioStreamIsMixable</key>
<integer>1</integer>
<key>IOAudioStreamNumChannels</key>
<integer>16</integer>
<key>IOAudioStreamNumericRepresentation</key>
<integer>1936289396</integer>
<key>IOAudioStreamSampleFormat</key>
<integer>1819304813</integer>
</dict>
</array>
<key>NumBlocks</key>
<integer>2</integer>
<key>NumStreams</key>
<integer>1</integer>
<key>SampleRates</key>
<array>
<integer>44100</integer>
<integer>48000</integer>
<integer>96000</integer>
</array>
</dict>
</array>
<key>CFBundleIdentifier</key>
<string>com.Cycling74.driver.Soundflower</string>
<key>IOClass</key>
<string>com_MyCompany_driver_SoundflowerDevice</string>
<key>IOMatchCategory</key>
<string>SoundflowerDriver</string>
<key>IOProviderClass</key>
<string>IOResources</string>
<key>IOResourceMatch</key>
<string>IOKit</string>
</dict>
</dict>
<key>OSBundleLibraries</key>
<dict>
<key>com.apple.iokit.IOAudioFamily</key>
<string>1.1fc6</string>
</dict>
</dict>
</plist>