65.9K
CodeProject 正在变化。 阅读更多。
Home

音频混音器 - 控制台模拟器

starIconstarIconstarIcon
emptyStarIcon
starIcon
emptyStarIcon

3.39/5 (43投票s)

2008年3月30日

CPOL

4分钟阅读

viewsIcon

135046

downloadIcon

4198

C# .NET - 具有多个音轨和总线的 MCI 音频混音器

引言

这是一个用 C# .NET - VS8 制作的不错的音频混音器。它使用 MCI 组件来播放媒体文件,也可能适用于视频文件。

将来我希望在你的帮助下添加

  • 每个音轨和主音轨的均衡
  • 每个总线和主音轨的录音按钮
  • 麦克风和线路输入选择(在每个音轨的输入选择器部分)
  • 指示音量和活动的频谱板或 LED
screen.PNG

我花了很多时间才完成这个,所以请评论并享受它!

我使用了一些来自 CodeProject.com 的东西,例如旋钮控件、MCI 类等。

功劳归于各自的所有者。

我花时间解释了它的一些工作原理和项目构想。随着时间的推移,我将添加详细信息。

首先,这是一个“音频混音台模拟器”,音频混音器做什么?它混合声音。这种控制台用于录音室和现场表演中进行音频混合,例如,当乐队进行现场演示时,混音器将贝斯、吉他、鼓、人声和所有其他乐器统一起来,因此信号可以通过同一对扬声器以正确的音量、声像、均衡等输出。

此项目是一个控制台模拟,因此不像真正的混音台那样工作。它只混合媒体文件,例如 mp3、wav、ogg 等。

在这种情况下,我制作了一个 10x4 控制台,这意味着 10 个音轨 x 4 个总线(我们可以同时混合多达 10 个媒体文件,具有 4 种不同的输出设置。)

让我们进入项目。

frmMain.PNG - Click to enlarge image

这是主窗口,有 10 个音轨,右侧有一个主音量控制和总线输出选择,我们可以在其中选择要收听的信号。

frmInputs

frmInputs.PNG

在这里我们选择 10 个媒体文件。我们可以看到控制台的这一部分在真实的混音器中会是什么样子(在表单标题后面),您可以在其中插入来自麦克风/乐器的电缆;这里我们没有电缆,我们有文件。

在这里,我将解释主面板中每个音轨的部分。

track.PNG

  1. 音轨标题:它是音轨的标题。双击,您可以编辑它并放入诸如“贝斯”之类的内容,这样您就知道该音轨操作的是什么信号。
  2. 输入选择:您可以在其中从 frmInputs 中选择输入信号的编号

    inputSelection.PNG

  3. 前置放大音量:它是传入信号在被操作之前的电平(在这种情况下,我们不操作它,但在将来我们可以向音轨添加均衡器和其他东西。)
  4. 总线出口:在这里,您可以调整要发送到每个总线的信号的电平。例如,如果您将绿色音轨设置为 0,当您在总线输出选择(主表单的右侧部分)中更改为 Aux2 时,您将听不到该音轨。
  5. 声像电平:它是信号在立体声扬声器中的位置。 0 表示声音以相同的电平传送到两个扬声器。 -100 表示所有信号都将进入左扬声器,+100 表示所有信号都将进入右扬声器。因此,如果我们将它设置为 +50,那么右扬声器的信号将比左扬声器多。
  6. 独奏开关:此按钮激活独奏模式。这意味着所有其他未按下此按钮的音轨都将被静音。
  7. 静音开关:使音轨静音。
  8. 音轨主音量:它的工作方式类似于前置放大音量,不同之处在于它会在被操作后(通过均衡器和其他东西)更改信号音量。

好的,希望您更好地理解了这个想法以及控制台的工作方式。我将解释如何使用 MCI,但基本上就是这个想法

每个音轨和每个输入播放器控件(来自 frmInputs 的 10 个控件)中都有 MCI 控件。当您单击 frmInputs 中的“确定”按钮时,每个音轨都会将其自身与输入播放器控件的位置同步。这就是我轻松操作信号并像在直播模式中一样同步它们的方式。

在这里,我粘贴了简单的代码,这些代码使您可以感觉到所有音轨都可以访问信号,就像它们用电缆连接一样。

foreach (Track.Track _ArrayTracks in _Tracks)
{
    _ArrayTracks.Paths = loFrmInputs.Paths;
    _ArrayTracks.PlayState = loFrmInputs.PlayState;
    _ArrayTracks.Position = loFrmInputs.Position;
    _ArrayTracks.LoadSongToTrack();
} 

这适用于每个音轨,并同步文件名、播放状态和文件位置。

_ArrayTracksTrack 类型的对象,_Tracks 是包含所有音轨的数组列表。

好的,目前就这些。我喜欢制作有趣的音频项目,所以我决定与您分享。我真的希望您喜欢它并制作更好的!

谢谢!请评论、分享并注明出处。 :)

© . All rights reserved.