57

I'm watching a video file, and I'd like to record small snippets of audio from the video file.

Previously I have played the audio on my MacBook speakers and used the built-in microphone to record the sound.

Is there a way to route the Mac's audio output to the audio input (microphone) digitally, so I don't have to actually record the audio from the speakers, with the loss of quality this incurs?

Is there also a way to listen to the audio at the same time it's "recording"?

Ideally, the solution would be easy and light-weight and not involve heavy use of audio software, because I want to be able to do it "on the fly" as much as possible.

8
  • 2
    See my answer on apple.stackexchange.com/questions/203004/… If you wanted to attempt to use Soundflower, I copied a tutorial in the answer to this one - apple.stackexchange.com/questions/207482/…
    – Tetsujin
    Jan 3, 2016 at 10:05
  • Soundflower allows cross connecting inputs and outputs internally but if I remember right when I used it with screen recording software to record video it shunts all the audio so you can no longer hear the video as it plays.
    – ArchonOSX
    Jan 3, 2016 at 11:32
  • @ArchonOSX I've tested Soundflower now and it works good. I also managed to do screen capture with QuickTime player and still had audio output. It might be a good idea to set up a Multi-Output in the OS application Audio MIDI Setup.
    – P A N
    Jan 3, 2016 at 12:17
  • Ahh good deal. If I have occasion to use that again I will look for those options. Thanks for the tip.
    – ArchonOSX
    Jan 3, 2016 at 13:42
  • @Tetsujin I have added an answer based out of your solution. However, I'm having difficulties getting Soundflower to work consistently. Sometimes it just stops working, and I don't know why. See more below.
    – P A N
    Jan 6, 2016 at 12:35

8 Answers 8

48

Update 2017-03-31:

Rogue Amoeba, the previous maintainers of the open source Soundflower project, has a new (paid) application called Loopback which seems to be easier and more dependable to work with than Soundflower. It solves some issues with Soundflower, like reenabling volume up/down via the Mac media keys. Again, it is a paid product with a trial mode. https://rogueamoeba.com/loopback/

Soundflower can still be found here: https://github.com/mattingalls/Soundflower


Soundflower is a virtual audio device for OS X that can pass audio from applications to other applications. It does this by routing your audio output as an audio input to the system.

Step 1

After installation, a new device will be available in System Preferences > Sound. Go to the Input tab and select Soundflower (2ch) as the input device.

Audio Input Tab

Step 2

If you want to route the audio and hear it yourself at the same time, skip to Step 3.

If you're okay with not having to hear the output yourself, you can now go to the Output tab and select Soundflower (2ch). You are now routing your Output to Input, and will be able to record the audio playing to an application like QuickTime, Evernote or Just Play Record.

enter image description here

Step 3

If you want to hear the audio while it's playing on your normal Output device (e.g. your Built-in speakers or attached headphones), you need to open the native OS X application Audio Midi Setup. It's located in your Applications folder under /Applications/Utilities.

Press the + button in the bottom left corner, and press Create Multi-Output Device. Mark to use both your Built-in Output and Soundflower (2ch). Now you can hear audio as usual while routing the Output into your Input via Soundflower.

enter image description here

Now that you have created a Multi-Output Device, go back to System Preferences > Sound and select it on the Output tab as in Step 2.

Tip: You can also change the Input/Output settings by holding (alt/opt) and left-clicking the Volume icon in the OS X menu bar.

enter image description here


Troubleshooting

HOWEVER, while the above will work at times, I have noticed that the behaviour of Soundflower can be erratic from time to time. When originally composing this answer, I couldn't get it to work even though I hadn't modified the setup that was working the day before.

It has stopped working a few times before, and while I haven't exactly identified how to mitigate the issue, I have noticed that something of the following may have helped to get it working again:

  • Check if the volume has been reset for the Multi-Output Device or any of it's sub-devices in Audio Midi Setup. Be sure to check all tabs (Input/Output) on both the aggregated Output device and and its aggregated sub-devices. There's quite a few tabs here, and the volume sliders on one of them may have been reset to zero. This has happened to me a few times.

enter image description here

  • Volume resetting to zero wouldn't have to be a big problem, if the normal volume controls (media keys and menu bar volume icon) worked as usual. But sometimes, the volume icon in the menu bar is grayed out and the volume can only be manipulated in Audio Midi Setup. I don't know why this sometimes happens, because when I use some other Multi-Output Devices I have created that also includes my other computer connected via Thunderbolt in Target Display Mode, I can magically use the volume media keys as normal. More experimentation is needed here.
3
  • 2
    Soundflower is great. I've used it extensively, in the past. Plays nicely with DAW software. (i.e. Ableton, ProTools, etc).
    – voices
    Jan 6, 2016 at 15:27
  • 2
    I was able to get Shazam to recognize songs I listen to on the headphones. It was a little confusing to set up, but it was primarily all set up in Audio MIDI setup and to use SoundFlower for both input (microphone) and output (speaker with waves) for Shazam to work correctly. SoundFlower is working better for than Loopback. I was detecting phasing on my headphones with Loopback. SoundFlower is working well even on 10.10.5 of Mac OS X.
    – Sun
    Jun 30, 2016 at 21:26
  • It seems to me that what happens is that some programs (such as the enhanced transcription function) bypass the user's settings for the input and go directly to the internal microphone's input. Nov 12, 2018 at 12:20
10

Blackhole

BlackHole is a modern macOS virtual audio driver that allows applications to pass audio to other applications with zero additional latency.

Following the steps outlined by Alexandre G, Soundflower can be replaced by Blackhole. It is also free & open source

4

I might've found an easier way to set it up with loopback. Set input and output to Loopback Audio (in System Preferences/Audio) and then as in the picture in loopback itself.

Hearing the audio and can Shazam tracks at the same time.

Layout

1
  • I've used SoundFlower for years, but as mentioned, it's increasingly being unusable on the latest OSX versions. while it cost me $100 USD, it's been worth every penny. Very happy with it.
    – vr_driver
    Jul 25, 2020 at 23:36
2

For Mac OS, alternatively, you can install BackgroundMusic which also allows you to control each Audio Application's output volume (which Windows 10 and Linux can do but MacOS cannot do on its own):

Background Music.app

After that, in PyAudio or SoundDevice, you can see additional devices: Audio Devices BackgroundMusic devices are dual input-output devices, i.e., they can be used as either input or output devices. Setting device index to the BackgroundMusic device will allow you to record from MacBook's speaker without microphone interference.

1

Perhaps JACK Audio Connection Kit could be of some use here. It offers an OSX release.

1

I just came across this new application - GroundControl CASTER. It can route audio between applications and provides a few more cool features for streaming like soundboard atc. https://gingeraudio.com/caster/

enter image description here

0

Loopback works fine, but works only on macOS and costs quite a bit :)

So let’s turn to VB-Cable Virtual Audio, a free app for macOS and Windows.

Once installed, you’ll see choices for VB-Cable on both your output and input devices in System Preferences > Sound > Input and Output.

Set Input to VB-Cable, which acts as your Virtual Microphone.

If you do not care to listen to whats being played to your virtual Mic, you can set Output to VB-Cable and you are done.

To be able to listen to your virtual Mic, follow screenshots below to setup a Multi-Output Device using macOS app Audio MIDI Setup

Launcher enter image description here enter image description here enter image description here

Finally, set System Preferences > Sound > Output to the Multi-Output Device you just created.

To uninstall, execute below commands in Terminal

sudo rm -rf /Library/Audio/Plug-Ins/HAL/VBCable.driver
sudo rm -rf /Applications/VB-Audio
sudo rm -f /Library/Preferences/com.vbaudio.vbcable.plist
sudo rm -f /Library/LaunchDaemons/com.vbaudio.vbcableagent.plist
0

This doesn't answer the immediate question, but it provides an alternative (and maybe better) way to do what you want.

Avidemux is a free/OSS video editor. With it, you can load a video file, watch it*, non-destructively cut out whichever section(s) you want**, and then save the resulting video or audio to another file***.

It sound like that's roughly what you want to do — and in fact may be faster, as you can quickly scrub through the file to identify cut points, audition the results, and then export them directly to a file without waiting.


(* It plays smoothly in real-time, though it's not full-screen and seems to be restricted to certain resolutions.)

(** It can only cut at i-frames, though that's likely to be accurate enough for your purposes.)

(*** It can write in many different formats — losslessly where possible, which is one of its selling points, though that won't matter much in this case.)

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .