Ustream, Soundflower, and iTunes

22 Apr 2009

Original Blogger tags: ustream.tv, Apple, iTunes, Soundflower

So, it turns out the version of Soundflower I was using has been superseded, and the newest (1.4.3 as of this writing) has some nice new features. One of these is the ability to tap the output directly, from a supplied GUI program, without the need to set up an extra bus in Logic the way I did in my previous article.

Let’s say, for example, you want to send audio from your iTunes library up to Ustream. This is now easier than it was.

  1. Download and install Soundflower (I’m testing with 1.4.3; look for the latest release here. You’ll need to reboot, so bookmark this blog entry and come back when you’re done.
  2. Open up your Applications folder and look under utilities. You’re looking for Audio MIDI Setup. You’ll probably want to drag it to your dock.
  3. While you’re in the Applications folder, look for a folder called Soundflower. Open it up and drag Soundflowerbed to the dock as well.
  4. Run Audio MIDI Setup. Change the Default Output (upper right in the window) to Soundflower (2ch). Think of the two-channel (stereo, left and right) Soundflower bus as a virtual set of two wires you can tap into. This setting means that everything the computer sends to the default audio output will go into these wires. You can also take a look at the properties for Soundflower (2ch) but the defaults are really already what you want: 44.1 KHz sample rate, 2ch-32bit (the only option), and volumes all the way up (for now, at least).
  5. Now launch Soundflowerbed. It doesn’t appear to do much, but you will notice a little flower icon in your menu bar. Make two settings. Choose the Soundflower (2ch) submenu, go under buffer size, and set it to 64. Then change the built in routing for Soundflower (2ch) from None (OFF) to Built-in Output. What this means is that you are hooking up those two virtual “wires” to your computer’s built-in output (on this laptop, the built-in speaker or headphones). By setting the buffer size the the smallest available, you are ensuring that the audio doesn’t lag too much. If you hear stuttering or dropouts you will want to increase that buffer size, but assuming your system is reasonably fast and not doing a lot of other work, that size should be fine.
  6. Now launch iTunes and get some music playing. Turn the output from iTunes all the way up (if it is too loud, turn down the speaker using the volume control in your menu bar). The reason for this is that you don’t want the audio going into the bus to be attenuated; you want it to be full-scale.
  7. Now go to ustream.tv, log in, and hit the “Broadcast Now” button to bring up the broadcast console. Of course, I’m assuming you have a show set up already; if you don’t, you’ll have to do that first. Set the broadcast audio source to Soundflower (2ch) and do whatever you like with the video (I’m leaving it off and turning off local monitoring). I also set the volume level on the console to 50% and tell it that I am using a mixer. I set the audio quality all the way up, to 44.1KHz. The Ustream interface has a few quirks with the way it redraws the chat room and user list, or fails to, so experiment.

And now you’ve got an internet radio show! Well, sort of. It’s up to you to get some listeners, and up to you to provide some content. I hope this helps you get started. Let me know if you’re doing it like this yourself, or if you find a better way. Note that there are other little tricks you can do — if you use Soundflowerbed a lot, you can make it a startup item. See the README file that comes with it for more information.

Update: you will need to be careful with the volume controls. Now that you have set the default audio output to the two-channel Soundflower bus, this means that your Mac’s volume pop-up, in the menu bar, and the volume keys on your keyboard, if you have them, now control the Soundflower output volume. That makes a certain amount of sense — normally, if you are playing through an audio interface of some sort, you would want these controls to affect what you were actually listening to, not just the built-in speakers or headphone output. But unfortunately that means if you turn the volume down, your stream will become quieter. This is probably not what you want. (For something conceptually pretty simple, there are sure a lot of quirks to this process! It would be nice if this were fully configurable somewhere.)

To work around this, you can bring down your speaker or headphone monitoring volume by using the Audio MIDI Setup application again, selecting properties for Built-in Output, and adjusting the volume down to about -24 dB (or whatever monitoring level seems reasonable to you). Make sure the input and output volumes for Soundflower (2ch) are all the way up; if not, your stream volume will be attenuated. Better to leave the digital signal at full scale, as long as you avoid digital clipping, so that you maintain your source’s dynamic range, and let your audience members choose how loud they want it. Again, I think this is at about a 50% volume level on the Ustream broadcast console. At least, that is the level that seems to work well for me. But please correct me if you think there is a better way to achieve full volume without clipping.

Creative Commons Licence
This work by Paul R. Potts is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. The CSS framework is stylize.css, Copyright © 2014 by Jack Crawford.

Year IndexAll Years IndexWriting Archive