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

开发者社区> 煦风满裳> 正文

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

简介:
+关注继续查看

在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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
ASP.NET Web Forms 4.5的新特性(三):Model Binding
在前两篇文章中,我们了解到了ASP.NET Web Forms 4.5四个新特性:强类型数据控件和Bundling、针对HTML5的更新和Unobtrusive Validation。 在介绍强类型控件的时候只是简单介绍了下它具有ItemType的属性,可以设置强类型值进行绑定,如果只是引入了这个属性,那么有点像语法糖,没什么实际意义。
616 0
C# 让RichTextBox支持GIF
我只是做了一些简单的测试...有疑问给我发消息把. 使用方法 //获取选择的图形 并且保存出来 private void button2_Click(object sender, EventArgs e)    ...
813 0
Android5.0新特性之——按钮点击效果动画(涟漪效果)
Android5.0 Material Design设计的动画效果 RippleDrawable涟漪效果       涟漪效果是Android5.0以后的新特性。为了兼容性,建议新建drawable-v21文件夹来存放RippleDrawable,drawable文件夹下也要放相应的适配图片。
3969 0
ASP.NET Web Forms 4.5的新特性(一):强类型数据控件和Bundling
在微软线上发布了Visual Studio 2012后,我们也能清晰地看到ASP.NET Web Forms 4.5中的一些新特性了。 今天先看两个新特性:强类型数据控件和Bundling。 强类型数据控件 在出现强类型数据控件前,我们绑定数据控件时,前台一般使用Eval或者DataBinder.Eval(Container.DataItem,"FieldName")的形式。
750 0
微软Silverlight移动版本将于年内推出 支持S60
今天,微软与诺基亚公司在拉斯维加斯召开的Mix 08会议上达成一项合作协议.根据协议,微软将为诺基亚使用Symbian OS操作系统的S60系列手机编写专版Silverlight插件. 该 版Silverlight预计在今年下半年即可推出,除S60系列外,还将应用在诺基 亚S40和Internet tablets手机上.
633 0
+关注
煦风满裳
程兴亮,专注于C#方面的开发工作,喜欢钻研Silverlight,CIL等方面的知识。平时喜欢看书、写技术博客、摄影、旅游和运动。
32
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载