|
| 1 | += multimux: Master Audio Down-Mixdown Suite |
| 2 | +:toc: left |
| 3 | +:toclevels: 3 |
| 4 | +:icons: font |
| 5 | +:source-highlighter: highlightjs |
| 6 | + |
| 7 | +image::resources/icon.png[multimux Logo, 128, 128, align=center] |
| 8 | + |
| 9 | +A lightweight, elegant, and cross-platform desktop application built in Electron, SolidJS, and TypeScript. multimux allows screen-recorders and video-editors to visually mix down multiple discrete audio tracks from any recording source into a single master track, while preserving the video stream bit-for-bit with instant container-level passthrough (`-c:v copy`). |
| 10 | + |
| 11 | +== Tutorials |
| 12 | + |
| 13 | +=== Scaffolding and Launching the App |
| 14 | + |
| 15 | +To get the application up and running locally, follow these simple steps: |
| 16 | + |
| 17 | +1. Clone this repository to your computer. |
| 18 | +2. Open your terminal in the project directory. |
| 19 | +3. Install the node packages: |
| 20 | ++ |
| 21 | +[source,bash] |
| 22 | +---- |
| 23 | +pnpm install |
| 24 | +---- |
| 25 | +4. Start the application in developer mode: |
| 26 | ++ |
| 27 | +[source,bash] |
| 28 | +---- |
| 29 | +pnpm run dev |
| 30 | +---- |
| 31 | +5. Use `F12` to toggle the developer console if you want to inspect IPC bridge outputs. |
| 32 | + |
| 33 | +=== Performing Your First Audio Mixdown |
| 34 | + |
| 35 | +Here is how to perform your first mixdown in less than 30 seconds: |
| 36 | + |
| 37 | +1. Launch multimux. |
| 38 | +2. Locate your screen recording in your file manager. |
| 39 | +3. Drag and drop the file directly onto the recessed **Inlet Port** plate. |
| 40 | +4. The console will automatically analyze the streams and display your active channels as physical vertical channel strips. |
| 41 | +5. Toggle the channel switches to include or exclude specific tracks. |
| 42 | +6. Drag the mechanical fader knobs up or down to balance volumes. |
| 43 | +7. Click the heavy mechanical **Mix & Mux Master** push-button at the bottom. |
| 44 | +8. Watch the compilation progress and log feed inside the retro green-screen overlay. Once completed, click **Open File Location** to find your mixed recording. |
| 45 | + |
| 46 | +--- |
| 47 | + |
| 48 | +== How-To Guides |
| 49 | + |
| 50 | +=== Adjusting Volume Levels (Decibels) |
| 51 | + |
| 52 | +To balance your volume levels: |
| 53 | + |
| 54 | +* Drag the fader knob upwards to boost a track (up to `+6.0 dB`). |
| 55 | +* Drag the fader knob downwards to attenuate a track (down to `-oo dB` / Muted). |
| 56 | +* To reset a fader knob exactly back to its default volume (`0.0 dB`), double-click the fader knob cap. It will automatically snap to the middle tick. |
| 57 | + |
| 58 | +=== Changing Output Audio Codecs |
| 59 | + |
| 60 | +multimux supports both AAC and Opus output formats: |
| 61 | + |
| 62 | +* Under the *Output Mux Specs* card, select the codec push-button (**AAC** or **OPUS**). |
| 63 | +* To select the desired fidelity, adjust the bitrate dropdown menu (ranges from **128k** for fast drafts to **320k** for studio quality). |
| 64 | + |
| 65 | +=== Stripping Audio Tracks Entirely |
| 66 | + |
| 67 | +If you want to strip all audio channels and export a silent video: |
| 68 | + |
| 69 | +1. Disable all channels using their toggles so that every channel says `MUTED`. |
| 70 | +2. Click the **Mix & Mux Master** button. The application will automatically call FFmpeg with the `-an` flag, stripping all audio tracks in seconds. |
| 71 | + |
| 72 | +--- |
| 73 | + |
| 74 | +== Explanation |
| 75 | + |
| 76 | +=== Under-the-Hood Muxing Mechanics |
| 77 | + |
| 78 | +Screen-recording apps (like OBS or ShadowPlay) capture microphone feeds, gaming sounds, and Discord audio on separate, discrete tracks. While this is great for multi-track editors, standard video players only read Track 1, meaning other tracks go silent when uploaded directly. |
| 79 | + |
| 80 | +multimux bridges this gap. Unlike standard transcoder suites that re-encode the entire video (taking hours and losing visual quality), multimux does two simultaneous things: |
| 81 | + |
| 82 | +1. **Video Stream Copy (`-c:v copy`)**: The video packets are moved bit-for-bit directly from the input container to the output container without any decoding. This process is instantaneous and lossless. |
| 83 | +2. **Audio Mixdown (`amix`)**: The chosen audio tracks are decoded into raw floating-point PCM waves. The application applies the customized volume multipliers (sliders), sums the waves together using FFmpeg's `amix` filter, and encodes the resulting master mix into a single stereo track. |
| 84 | + |
| 85 | +==== FFmpeg Filter Graph Example |
| 86 | + |
| 87 | +If CH1 (Desktop) is kept at `1.0` (0dB) and CH3 (Mic) is boosted to `1.5` (+3.5dB), multimux dynamically generates and spawns this exact filter graph: |
| 88 | + |
| 89 | +[source,text] |
| 90 | +---- |
| 91 | +[0:a:0]volume=1.0[a0]; [0:a:2]volume=1.5[a2]; [a0][a2]amix=inputs=2:duration=longest:dropout_transition=0[a] |
| 92 | +---- |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +== Reference |
| 97 | + |
| 98 | +=== System Requirements |
| 99 | + |
| 100 | +* **Operating System**: Windows 10/11, macOS, or Linux. |
| 101 | +* **Backend Utilities**: `ffmpeg` and `ffprobe` must be installed on your system and registered in your system PATH. |
| 102 | + |
| 103 | +=== Build Scripts |
| 104 | + |
| 105 | +The following commands are available in your workspace `package.json`: |
| 106 | + |
| 107 | +* `pnpm run dev`: Launch the desktop app in live hot-reload development. |
| 108 | +* `pnpm run build`: Compile TypeScript and build the static assets. |
| 109 | +* `pnpm run build:win`: Package the desktop application into a standalone Windows installer (`.exe`) under the `dist/` directory. |
| 110 | + |
| 111 | +--- |
| 112 | + |
| 113 | +== Changelog |
| 114 | + |
| 115 | +See detailed timeline logs in link:CHANGELOG.adoc[CHANGELOG.adoc]. |
0 commit comments