zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Silverlight 5 beta新特性探索系列:6.Silverlight 5新增低延迟声音效果类SoundEffect.支持wav音乐格式【附带源码实例】

实例源码 系列 探索 支持 效果 特性 新增
2023-09-14 08:56:52 时间

在Silverlight 5中新增了一个SoundEffect类和SoundEffectInstance类用以加载wav格式的音乐,这样可以很及时的为动画添加音效。

现在我们看如何使用这两个类来控制播放wav音乐,首先引入mav音乐格式的文件(音频采样大小必须为16或者8位不能是24位,采用PCM编码,22.5, 44.1 or 48khz的采样率)如下图属性:

2011042016273342.jpg

其次将引入的wav格式音乐文件在项目中右键点击其属性设置其“生成操作”为“内容”,如下图所示:

2011042016275485.jpg

现在我们准备XAML代码以控制SoundEffectInstance类的属性,调节音乐播放效果:

 Grid x:Name="LayoutRoot" Background="White" 

 !--准备3个Silder控件以控制音乐效果-- 

 Slider Height="135" HorizontalAlignment="Left" Margin="62,38,0,0"

 Name="SlVolume" VerticalAlignment="Top" Width="62" 

 Orientation="Vertical" Maximum="1" Value="0.5" / 

 Slider Height="135" HorizontalAlignment="Left" Margin="162,38,0,0"

 Name="SlPitch" VerticalAlignment="Top" Width="62"

 Orientation="Vertical" Value="0" Maximum="1" Minimum="-1" / 

 Slider Height="135" HorizontalAlignment="Left" Margin="262,38,0,0"

 Name="SlPan" VerticalAlignment="Top" Width="62" 

 Orientation="Vertical" Value="0" Maximum="1" Minimum="-1" / 

 !--显示名称-- 

 TextBlock Height="23" HorizontalAlignment="Left" Margin="71,179,0,0"

 Name="textBlock1" Text="音量调节" VerticalAlignment="Top" / 

 TextBlock Height="23" HorizontalAlignment="Left" Margin="166,179,0,0"

 Name="textBlock2" Text="高低音调节" VerticalAlignment="Top" / 

 TextBlock Height="23" HorizontalAlignment="Left" Margin="271,179,0,0"

 Name="textBlock3" Text="声道平衡" VerticalAlignment="Top" / 

 /Grid 

第一步:加载相应的事件
public MainPage()

 InitializeComponent();

 //第一步:加载相应的事件

 Loaded += new RoutedEventHandler(MainPage_Loaded);

 this.SlVolume.ValueChanged+=

 new RoutedPropertyChangedEventHandler double (SlVolume_ValueChanged);

 this.SlPitch.ValueChanged+=

 new RoutedPropertyChangedEventHandler double (SlPitch_ValueChanged);

 this.SlPan.ValueChanged+=

 new RoutedPropertyChangedEventHandler double (SlPan_ValueChanged);

}

第二步:加载声音WAV文件

第三步:设置声音文件初始化播放属性

void MainPage_Loaded(object sender, RoutedEventArgs e)

 GetSound();

 SoundEffect _soundEffect;

 SoundEffectInstance instance;

 public void GetSound()

 //第二步:加载声音WAV文件

 var laserStream =

 Application.GetResourceStream(new Uri("zhizu.wav", UriKind.RelativeOrAbsolute));

 _soundEffect = SoundEffect.FromStream(laserStream.Stream);

 //第三步:设置声音文件初始化播放属性

 instance = _soundEffect.CreateInstance();

 //Pitch变调效果属性,是高低音平衡调节,该值在-1到1之间设置

 instance.Pitch = 0.0f;

 //Pan声像调节属性,它用于调节该路声源在空间的分布图像。

 instance.Pan = 0.0f;

 //Volume属性是音量大小调节,该值范围是0-1

 instance.Volume = 0.5f;

 instance.Play();

 }
第四步:根据Silder控件值的变化动态调节声音属性
private void SlVolume_ValueChanged(object sender,

 RoutedPropertyChangedEventArgs double e)

 //第四步:调节声音属性

 instance.Volume = float.Parse(e.NewValue.ToString());

 this.textBlock1.Text = "音量调节" + e.NewValue.ToString();

 private void SlPitch_ValueChanged(object sender,

 RoutedPropertyChangedEventArgs double e)

 //第四步:调节声音属性

 instance.Pitch = float.Parse(e.NewValue.ToString());

 this.textBlock2.Text = "高低音调节" + e.NewValue.ToString();

 private void SlPan_ValueChanged(object sender,

 RoutedPropertyChangedEventArgs double e)

 //第四步:调节声音属性

 instance.Pan = float.Parse(e.NewValue.ToString());

 this.textBlock3.Text = "声像调节" + e.NewValue.ToString();

 }

注意SoundEffectInstance类的3个音乐效果属性Volume,Pitch,Pan如下:
SoundEffectInstance.Pitch

//Pitch变调效果属性,是高低音平衡调节,该值在-1到1之间设置

//当往-1调节时,即往低音调调节

//当往+1调节时,即往高音调调节

//如果是0则正常音高 

SoundEffectInstance.Volume

//Volume属性是音量大小调节,该值范围是0-1

SoundEffectInstance.Pan

//Pan声像调节属性,它用于调节该路声源在空间的分布图像。

//当往-1调节时,相当于把该路声源放在听音的左边。

//当往+1调节时,相当于把该路声源放在听音的右边。

//若把它置于中间位置0时,相当于把该路声源放在听音的正中。

//Pan属性是左右声道平衡,该值在-1到1之间设置

最后我们来看运行效果如下图,如果要听试听效果请点击 SL5SoundEffect.zip 下载源码。

2011042016281138.jpg
随着Unity2017的普及,使用.NET 4X的开发者也越来越多了,下面笔者给大家介绍一下在C# 6中的新功能主要是怕自己忘记,2333,有些功能还是很实用的~ 使用Unity版本2018.
煦风满裳 程兴亮,专注于C#方面的开发工作,喜欢钻研Silverlight,CIL等方面的知识。平时喜欢看书、写技术博客、摄影、旅游和运动。