TODO: * Volume leveling on user's behalf * Set recording volume for both sources to reasonable level (75%?) * Normalize each to something like -0.1dB * After mixing the streams, do some sort of compression/leveling * Reset names of monitor devices to be more human-understandable * CLI interface * Choice of gst-audio-profiles for encoding * Check disk space usage? Show that too? * Rip out PA ctypes stuff entirely and replace with udev (?) calls? * Pause toggle button * Advanced settings * Volume settings * Option for separate stream recording * Record from streams instead of devices (maybe more human understandable?) * "Test mode" before recording * Offer a dummy text to test levels (plosives, etc.) * PA volume/gain controls (with peaks?) NOTES: Mixing two sources together using GStreamer "adder" element: gst-launch adder name=mix ! pulsesink { filesrc location=05.mp3 ! decodebin ! mix. } { filesrc location=07.mp3 ! decodebin ! mix. } What I'm doing in this GStreamer pipeline: gst-launch adder name=mix ! vorbisenc ! oggmux ! filesink location=blah { pulsesrc ! mix. } { pulsesrc ! mix. } SAME AS: gst-launch pulsesrc ! adder name=mix pulsesrc ! mix. ! vorbisenc ! oggmux ! filesink location=blah