+ boost::mutex::scoped_lock lm2 (_buffers_mutex);
+ _audio.put (remap (audio, _audio_channels, _audio_mapping), time);
+}
+
+/** Try to get `frames' frames of audio and copy it into `out'. Silence
+ * will be filled if no audio is available.
+ * @return time of this audio, or unset if there was a buffer underrun.
+ */
+optional<DCPTime>
+Butler::get_audio (float* out, Frame frames)
+{
+ optional<DCPTime> t = _audio.get (out, _audio_channels, frames);
+ _summon.notify_all ();
+ return t;