#audio #cli #surround #upmix

应用 soft_matrix

Soft Matrix 将双声道立体声提升至环绕声

6 个稳定版本

1.0.5 2024 年 7 月 13 日
1.0.3 2024 年 6 月 2 日
1.0.2 2024 年 5 月 10 日
1.0.1 2024 年 5 月 5 日

337命令行工具 中排名

每月下载量 33

MIT 许可证

3MB
2K SLoC

soft_matrix

Soft Matrix 将双声道立体声提升至环绕声。

目标和目的

Soft Matrix 的目标是提供理想的 2 通道立体声音频到 5.1 通道的提升。声音的位置基于两个通道之间的声像和两个通道之间的相位差。

Soft Matrix 的默认矩阵与具有显著反相材料的录音配合得非常好,Soft Matrix 有一个马蹄形模式用于具有显著声像的录音;但主要是同相材料。

目前,Soft Matrix 支持 RM杜比立体声 矩阵。目标是支持基于常见相位和声像的矩阵,包括 SQ。 (当前对 SQ 的支持是实验性的。)

使用方法

要使用默认选项的 Soft Matrix,只需运行

soft_matrix "input.wav" "output.wav"

更多选项和示例在 options.md 中描述。

Soft Matrix 只支持 wav 文件作为输入。它只输出 32 位浮点 wav 文件。(我推荐 sox 将其转换为/从 wav。)

工作原理

如何将立体声提升至环绕声

示例

示例

安装

Soft Matrix 可通过 cargo 或源代码获得。它是用 Rust 编写的。

Cargo 安装

先决条件: 安装 Rust

cargo install soft_matrix

更新

要更新,只需重新运行

cargo install soft_matrix

发布历史

发布历史

Chocolatey 和 Homebrew 支持?

目前有支持 Chocolatey 和 Homebrew 的“需要帮助”问题

预构建的二进制文件?

目前没有提供预构建二进制文件的计划。

从源代码构建和运行

一旦您已经安装了Rust安装了Git

git clone https://github.com/GWBasic/soft_matrix.git
cd soft_matrix
cargo build --release

soft_matrix的二进制文件将位于soft_matrix/target/release文件夹中

cd target/release
./soft_matrix

支持的平台

我目前是在Mac上开发的。Soft Matrix在Intel和Apple硅上都能成功运行。

我还没有在Windows或Linux上测试过;但我对Soft Matrix在这些平台上构建和运行持乐观态度。

示例

示例在options.md

示例(对于sox)

将flac(或mp3)转换为wav文件

sox "spiral.flac" "spiral.wav"

将wav转换为flac文件

请注意,soft_matrix的输出是32位浮点wav。这是一个非常低效的文件格式,即使是与24位的flac相比。

24位flac文件:(蓝光,母带质量)

sox "spiral - upmixed.wav" -b 24 "spiral - upmixed.flac" dither -s -p 24

16位flac文件:(CD质量)

sox "spiral - upmixed.wav" -b 16 "spiral - upmixed.flac" dither -s -p 16

提示

当混音连续表演时,如果您将所有轨道连接成一个单独的文件,您将获得最佳结果。(例如,如果您混音《Abbey Road》的第二面,将其连接成一个wav文件。)这是因为混音器每次检查大约1/20秒的音频。如果连续表演中有文件中断,它将干扰窗口函数,并可能导致在轨道中断处出现明显的点击。

我个人使用sox在不同音频格式之间进行转换,如wav和flac。

它是如何工作的?

Soft Matrix试图通过以下方式控制音频:

  1. 将每个样本分解为其频率分量
  2. 根据每个样本中每个频率分量的瞬时声像和相位关系进行控制

为此,Soft Matrix对源wav文件中的每个样本执行傅里叶变换。它使用足够大的窗口大小以处理20hz以下。为了避免噪声,相邻样本的声像平均。

性能和速度

Soft Matrix运行速度较慢。在我的M2 Macbook Pro上,它通常可以以大约实时的方式混音。

这是因为

  • 足够大的傅里叶变换以降低到20hz需要很长时间才能执行。
  • Soft Matrix对每个样本执行变换。
  • Soft Matrix对相邻声像计算进行大量平均。

为了使Soft Matrix尽可能快速地运行,它使用所有可用的核心。

为了保持性能“在合理范围内”,我建议避免不合理的采样率。人类的听力,在罕见情况下,仅达到28khz。因此,如果您使用高采样率,我建议在使用Soft Matrix之前将其下采样到56khz。

Options.md列出了其他一些用于更快混音的调整选项;但我只推荐它们用于预览。

功能请求

目前,我只计划添加支持额外的反相矩阵、表演、音频质量和配置选项的功能。

我没有计划添加任何其他功能。

具体来说,我没有计划支持读取其他文件格式、输出到其他文件格式或输出除32位wav文件以外的任何内容。有许多优秀的音频格式转换工具可以比我做得更好。我个人使用sox

寻求帮助

在寻求帮助之前

  • 在寻求帮助之前,请先使用Google或您喜欢的搜索引擎;尤其是与Git或Rust相关的问题。
  • 这是一个业余项目;我可能需要一些时间来回复。
  • 我无法提供其他音频处理工具(如sox)的帮助。

如果您需要帮助,请访问https://andrewrondeau.com/blog/并直接给我发送电子邮件。

已知问题

大Wav文件支持

Wav文件格式有一个2GB的限制。至少有两个不兼容的提案来克服这个限制。《wave_stream》(也是由我创建的)没有计划支持任何大文件提案。

如果需要支持大文件,我将研究支持.aiff作为.wav的替代格式。

输入大Wav文件

Soft_matrix无法处理超过2GB的Wav文件作为输入。它可以处理整个以16位、44.1kHz格式刻录的光盘。在提升光盘时,我建议将每个光盘作为一个单独的文件提升。更高的比特率和采样率可能会超过2GB的限制,因此我建议在完全无声的时刻分割这些文件,并分别提升每个片段。

输出大Wav文件

Soft_matrix将自动分割输出文件,以确保不超过2GB。可以使用Sox将这些文件连接起来。示例

soft_matrix "stereo.wav" "surround.wav"
sox "surround - 1 of 2.wav" "surround - 2 of 2.wav" -b 24 "surround.flac" dither -s -p 24

SQ矩阵

对SQ矩阵的支持目前有限。在SQ矩阵中的定位是近似的;声像级别是不正确的,可能会有噪声或其他失真。我不建议使用soft_matrix进行专业的SQ解矩阵。

SQ矩阵与Dolby Surround、RM和默认矩阵等典型的基于相位的矩阵相比非常不寻常。所有这些都是通过保持相同的左右声像并使用相位来控制前后声像来工作的。(同相(0度相位差)的音调在前面,而反相(180度相位差)的音调在后面。)相反,SQ矩阵使用相位来将音调引导到房间的边缘,就像是一个圆圈。

我本人至少花了一个月的周末时间来尝试正确处理SQ。遗憾的是,SQ依赖于我真的很困难的三角学。

源分离(分解)

源分离(分解)是指从完整的混音中分离出单独的声道。这是用于完成《Now and Then》(披头士乐队歌曲)Now and Then的技术。

soft_matrix不执行任何源分离。我对源分离工具不熟悉,但如果您想使用它们,我建议

  1. 在使用soft_matrix之前进行源分离。
  2. 每个分离的源应该立体声,并保留原始录音的相位。
  3. 对每个源分别使用soft_matrix。
  4. 将所有提升的文件混合在一起。

如果您这样做,请与我联系。我很想听听是否有效!

贡献

如果您想贡献,请使用上述渠道与我联系,以便我们讨论您的目标和动机。

我真的很感激通过Homebrew和Chocolatey等工具进行分发。如果您有提升SQ录音的动力,并且喜欢数学,我们也许可以一起解决SQ问题。

许可

Soft Matrix是在[MIT许可](LICENSE.md)下分发的。

依赖项

~5–37MB
~536K SLoC