如何更改UWP应用中SoundEffect soundEffect = //...(load sound effect).
SoundEffectInstance soundInstance = soundEffect.CreateInstance();
soundInstance.Pitch = pitch;
节点的音高?
我试图将应用程序从WP7移植到uwp(Windows 10,Mobile)。 在我的WP7应用程序中,我使用代码:
AudioGraph
如何使用1
在UWP中执行此操作?
答案 0 :(得分:0)
到目前为止,您应该共享更多代码,但是您希望使用PlaybackSpeedFactor属性,该属性包含在AudioFileInputNode中:
目前,Microsoft的GitHub有使用AudioGraph的最佳示例: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/AudioCreation/cs/AudioCreation
在最后一个链接的FilePlayback场景中,您只需添加此行以加倍音频文件的音高:
fileInput.PlaybackSpeedFactor = 2;
您可以从程序中的任何位置实时进行此更改(例如,使用控制播放速度的滑块)。对于AudioGraph来说,这根本不是问题。您可以可能通过设置此值为负值向后播放内容!
答案 1 :(得分:0)
您可能需要获取AudioFrame数据,使其通过傅立叶变换运行,将音高乘以某个系数,然后再通过傅立叶变换运行回去。
这里有一些获取框架的代码
定义图形的位置
graph.QuantumStarted += Graph_QuantumStarted;
[ComImport]
[Guid("5B0D3235-4DBA-4D44-865E-8F1D0E4FD04D")]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
unsafe interface IMemoryBufferByteAccess
{
void GetBuffer(out byte* buffer, out uint capacity);
}
private static void Graph_QuantumStarted(AudioGraph sender, object args)
{
AudioFrame frame = frameOutputNode.GetFrame();
using (AudioBuffer buffer = frame.LockBuffer(AudioBufferAccessMode.Write))
using (IMemoryBufferReference reference = buffer.CreateReference())
{
//Run Fourier and Adjust here
}
}