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的采样率)如下图属性:

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

现在我们准备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 下载源码。

相关文章
|
5天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
4天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1568 6
|
5天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1322 2
|
5天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
344 160
|
5天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
405 6
n8n:流程自动化、智能化利器
|
7天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
14天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1538 7
|
4天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
246 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
|
8天前
|
人工智能 前端开发 API
Google发布50页AI Agent白皮书,老金帮你提炼10个核心要点
老金分享Google最新AI Agent指南:让AI从“动嘴”到“动手”。Agent=大脑(模型)+手(工具)+协调系统,可自主完成任务。通过ReAct模式、多Agent协作与RAG等技术,实现真正自动化。入门推荐LangChain,文末附开源知识库链接。
669 119