A few days ago I wrote that the Mac copy of Drop Deck does video now. It does. What I did not say, because I did not yet know, is that you could not actually get on the air with it. Eight releases have gone out since, all of them fixes, and every one of them was found by using the thing rather than by testing it.
Here they are, in the order they hurt.
You could not paste. Not your stream key, not your stream address, not anything, anywhere in the app. The Mac copy had no Edit menu at all, and on macOS the Edit menu is not decoration: Command V is routed through it. Without one, the keystroke goes nowhere. There is an Edit menu now, with Undo, Cut, Copy, Paste and Select All, and paste works in every box. Fixed in 3.5.21.
The app never asked for permission. Microphone, camera, screen recording, none of it. Worse, it could not be granted by hand either, because macOS does not list an app under Privacy and Security until that app has asked at least once. So there was nothing to switch on, and nothing to search for. It asks properly now, the first time it needs each one, and Help has a page listing exactly what it is allowed to do and what it uses each thing for. Fixed in 3.5.22.
Going live to YouTube sat saying "connecting" for ever. Two separate faults, both found by pointing the app at the real YouTube ingest rather than at a test server, which is a distinction worth making because the test server was perfectly happy. First, a long RTMP message gets chopped into 128 byte pieces with a header byte between them, and the code that read the replies was scanning for names in the raw bytes, so a name that straddled a boundary was never seen. It reassembles messages properly now. Second, YouTube simply never sends the "publish started" reply the specification describes, so the app waited for a message that was never coming. It no longer waits for it. Fixed in 3.5.23.
It kept saying the picture had frozen when it had not. The check that spots a dead picture compares each frame with the one before and calls them being identical a fault. That is right for a camera. It is wrong for a desktop, where identical frames mean nobody has moved the mouse. Measured on my own setup, the average difference between frames was 0.000 and every single sample read as frozen. A screen is no longer judged that way. A capture that has really stopped is still noticed, by the capture going quiet. Fixed in 3.5.24.
And then the one that mattered most.
I added two audio sources, VoiceOver and Logic Pro, went live, listened to the stream on my phone, and heard neither of them. Only the built in microphone was there.
The captures had never been made. Not once, for anybody. Drop Deck asked Core Audio for a tap on each program, and Core Audio replied "success" and handed back nothing at all. No error, no exception, no log line. The source then reported itself as running, its On air box was ticked, and it sent silence.
That is the worst shape a bug can have, because from where the presenter sits it is invisible. You go on hearing the program in your own ears whether or not it is going out. There is no moment where the app is wrong on screen. The show is simply missing a voice, and nobody in the room can tell.
The cause was the way the tap was being asked for. The fix was not reasoning about it, it was measuring it: building every form of the request there is, on the machine, and reporting which ones make a capture and which ones actually carry sound. Two of the five forms are silently refused. The app was using one of them.
Both of my sources are now proven on the air on my own Mac, VoiceOver at minus 25 decibels and Logic Pro at minus 12, measured through the app's own path with a second independent capture running alongside to check the numbers agree.
Three more faults of the same family came out with it. Adding a second source used to inherit the program the source above it was using, which is how one of my two sources ended up pointing at the wrong program entirely. A program named by a saved board used to vanish from the list when it was not running, so opening the panel and pressing OK threw the choice away. And a source whose interface is unplugged used to quietly open the built in microphone instead, so a source pointed at a mixer on a desk would become the laptop lid, sound perfectly healthy, and put the wrong thing on the air.
But the real fault was that nothing was watching. A silent source survived a whole broadcast because the only place in the app that ever asked whether a source had actually started was the sources dialog, and only on the way out of it. So now: sources that will not open are said out loud when the app opens and again before you go live, a source that is not ready is retried every few seconds so a program you start after going on air comes on by itself, and there is a new item in the Help menu.
Help, Check my audio sources. It listens for six seconds and tells you, in words, whether each source is really putting sound out. If one is not, it says which kind of nothing it is: a program that is not playing anything, or audio that is arriving and being lost on the way. It reads meters rather than the audio itself, so it is safe to run in the middle of a show.
Then Logic came through in mono. All of it did, and it always had. The board has a channel setting for each source, mix, left, right or stereo, and its default is "both, mixed together", which is exactly right for a microphone plugged into one leg of a stereo interface and exactly wrong for everything else. It was being applied to captured programs as well, so a stereo mix arrived flat. There is nothing to choose for a program, because the capture is already a stereo mixdown of what that program is playing, and the panel knew it: the channel popup is switched off for a program source, so there was no way to fix it from the outside either. Programs are kept in stereo now. Windows never had this, though only by accident: its channel setting can only reach a device, because a program source there uses a different capture class that has no channel at all.
VoiceOver still reads as mono, and that is correct. Its speech is mono unless you switch 3D sounds on. The difference is that nothing folds it any more, so when they are on it goes out in stereo. The source check will tell you which you are getting, because a level meter cannot: mono is two identical numbers and looks exactly like a healthy signal.
And one more, while I was in there. The stream key was filed in the keychain under the radio station's name. A station name can be changed, and loading a saved setup could clear it, and once it was cleared the key was still sitting there with nothing able to find it. That is indistinguishable from the app forgetting it, and the only way back on air is to fetch a fresh one from YouTube. Which is exactly what I had been doing, every single time, without realising why. It is now filed under the platform, so YouTube and Facebook each keep their own, and a key left under an old name is carried across the first time it is needed.
That last one is the part I want to keep. Every one of these was found by using the app for real, and four of the five were invisible from the inside. An app that cannot be asked "is this actually working" out loud is an app that will lie to you eventually.
Drop Deck 3.5.28 for Mac is out now. If you have it, it will offer itself.