I wrote a bash script which records an audio file of a set length from my internal microphone. The script works great, either using ffmpeg or sox to do the recording. I used to be able to automatically execute my script using launchctl (or crontab), so that I could automatically have the audio recording. Ever since upgrading to Catalina, the script will run fine if executed manually, but if I execute it from cron or launchctl, it runs, but the output file contains no audio (the file format is correct, but it's as if the audio source was muted)
It doesn't matter if I use ffmpeg vs sox. It doesn't matter if I use cron vs launchctl. It doesn't matter if I run the script as root vs regular user. I've tested this on multiple macs running Catalina (2019 macbook pro, 2017 mac mini). It doesn't matter if the input device is a usb audio interface vs internal microphone. My script always works and produces good audio if executed manually. It always produces a silent audio file with no data if executed via any scheduler.
Any ideas? I'm wondering if it has something to do with a security setting on the audio interface?