在传统的鼠标交互中,无法体验到多点触控带来的便利,这限制了同时执行多个任务的能力。这种局限性不仅降低了效率,也使得DJ工作变得繁琐和困难。而平板电脑虽然可以进行DJ操作,但其小屏幕和有限的处理资源使得体验并不理想。
而All-In-One的27英寸多点触控屏幕和紧凑的桌面设计,为DJ工作提供了终极解决方案。其强大的Core i7处理器非常适合声音处理,而且其出色的音质总是一个额外的福利。
DJ Touch的想法是利用All-In-Wonder的27英寸巨大触摸屏,为虚拟DJ应用提供完美的平台。这个应用程序包括一个旋转的黑胶唱片,允许DJ物理上“刮擦”旋转的唱片以产生特殊音效。此外,还有许多声音控制可供DJ使用,包括主音量、均衡器、淡入淡出器和效果等。当然,它还将提供实时声音可视化和便捷的图形用户界面。这些可视化包括波形显示和音量表。最重要的是,它将具有双甲板界面,用于混合和快速切换歌曲。
DJ Touch允许用户将多首歌曲加载到播放列表中。用户然后从列表中选择一首歌曲在他们选择的甲板上播放。一个交叉淡入淡出器将允许在甲板/歌曲之间平滑过渡。该应用程序允许用户选择让DJ Touch自动处理过渡,以确保连续播放。
如果DJ没有用户请求的歌曲,那将是多么尴尬的事情?不用担心!DJ Touch可以直接连接到像亚马逊MP3这样的在线音乐商店。购买的MP3将自动存储并添加到播放列表中。现在,即使是业余DJ也可以通过几次点击按钮和可靠的WIFI连接,访问庞大的音乐数据库。为什么不让同行通过蓝牙从他们的移动设备分享他们的音乐呢?
DJ Touch将被定位为娱乐工具,而不是专业DJ应用程序。All-In-One的巨大多点触控屏幕将使这项任务对任何类型的用户都变得轻松愉快。
对于演示应用程序,将使用C#和WPF XAML。还将利用Audio DJ Studio的高级数字声音处理能力。这将使能够快速开发概念验证演示应用程序。这使能够专注于开发界面和用户体验。
在本节中,将讨论上述提到的一些功能的预计实现。旋转的黑胶唱片是一个连续旋转的图像。使用RotateTransform来连续旋转图像。
<Image Source="disc.png" Height="24" IsManipulationEnabled="True">
<Image.RenderTransform>
<RotateTransform CenterX="12" CenterY="12"/>
</Image.RenderTransform>
<Image.Style>
<Style>
<Style.Triggers>
<Trigger Property="Image.IsEnabled" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="RenderTransform.Angle" From="0" To="360" Duration="0:0:1" RepeatBehavior="Forever"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
为了启用唱片刮擦行为,旋转的图像还将监听多点触控事件。这是通过将IsManipulationEnabled属性设置为True来实现的。在代码后台,可以覆盖两个方法:OnManipulationStarting和OnManipulationDelta。OnManipulationStarting在第一次多点触控操作时触发,而OnManipulationDelta可能在单个用户操作期间多次触发。
当然,DJ Touch还将包括一个生动的音量表。为此简单地使用GraphicBarManager。对于显示声音波形轮廓,使用DisplayWaveform功能。
// 创建音量表
private IntPtr CreateVuMeter(Label ctrlPosition, enumGraphicBarOrientations nOrientation)
{
// 创建一个新的图形条
IntPtr hWnd = studio.GraphicBarsManager.Create(m_windowHandle, (int)GetControlPosition(ctrlPosition).X, (int)GetControlPosition(ctrlPosition).Y, (int)ctrlPosition.ActualWidth, (int)ctrlPosition.ActualHeight);
// 设置图形条范围
studio.GraphicBarsManager.SetRange(hWnd, 0, 32767);
// 启用自动下降并设置所需的方向
GRAPHIC_BAR_SETTINGS settings = new GRAPHIC_BAR_SETTINGS();
studio.GraphicBarsManager.GetGraphicalSettings(hWnd, ref settings);
settings.bAutomaticDrop = true;
settings.nOrientation = nOrientation;
studio.GraphicBarsManager.SetGraphicalSettings(hWnd, settings);
return hWnd;
}
在两个甲板(播放器)之间淡入淡出可以使用FaderObject来实现。
// 在甲板0和甲板1上初始化Fader
studio.Fader.Init(AudioDjStudio.enumFadeTypes.FADE_SINGLE, 0, 1);
// 设置淡入和淡出时长
studio.Fader.FadeInLength = 3000;
studio.Fader.FadeOutLength = 4000;
DJ Touch将具有一个简单的均衡器,带有3个滑块:低、中、高。可以使用AudioDJStudio在XML声明中初始化这些均衡器。每个滑块都配置有操作频率。
<Equalizer>
<Bands>
<Band FreqInHz="80" BandWidth="12" GainIndB="-5.200000">Low</Band>
<Band FreqInHz="1000" BandWidth="12" GainIndB="-3.000000">Mid</Band>
<Band FreqInHz="14000" BandWidth="12" GainIndB="-3.120000">High</Band>
</Bands>
</Equalizer>
DJ Touch在内存中跟踪歌曲播放列表。用户被允许加载一首歌曲或整个库。歌曲名称及其位置被保存在内存中。直到用户选择播放它时,声音数据才会被加载。
Audio DJ Studio允许每个甲板分别输出到自己的通道。然而,这个功能需要2个音频输出。联想All-In-One功能只有一个3.5mm音频输出。这个挑战可以通过使用USB音频设备来克服,以允许多个输出通道。现在DJ可以在通过主输出播放另一个甲板的同时,通过一个甲板进行监听。一个支持蓝牙的耳机也是一个值得探索的选项。
为了保持简单,亚马逊MP3音乐商店可以通过在XAML Web Browser控件中包装来集成到DJ Touch中。用户可以选择一个按钮来显示浏览器,登录,搜索,购买和播放;所有操作都不需要退出DJ Touch。
平台:联想All-In-One
类别:娱乐