【音乐合成】基于FPGA的音乐合成系统verilog实现

1.软件版本

matlab2013b,quartusii12.1

2.系统FPGA实现

2.1频率选择

音乐的合成主要有几种频率,这里设置如下几组频率,在实际情况下,可以进行扩充。

Fc = 261.63; %C

Fd = 293.66; %D

Fe = 329.63; %E

Ff = 349.23; %F

Fg = 392;   %G

Fa = 440;   %A

Fb = 493.88; %B

在FPGA中,取整数,进行四舍五入的选择。

module sin_tops(clk,rst,Fre,sine);input       clk;
input       rst;					
input[9:0]	Fre;
output[9:0]sine;reg[15:0]fres;			
always @(posedge clk or posedge rst)
beginif(rst)beginfres <= 16'd0;end
else begincase(Fre)10'd262 : fres <= 16'd1715;10'd294 : fres <= 16'd1925;10'd330 : fres <= 16'd2160;10'd349 : fres <= 16'd2289;10'd392 : fres <= 16'd2569;10'd440 : fres <= 16'd2884;10'd494 : fres <= 16'd3237;default:  fres <= 16'd1715;endcaseend
end		
//parameter Fc = 10'd262;//261.63;//0.1M,32'd11236923
//parameter Fd = 10'd294;//293.66;//0.1M,32'd12612601
//parameter Fe = 10'd330;//329.63;//0.1M,32'd14157501
//parameter Ff = 10'd349;//349.23;//0.1M,32'd14999314
//parameter Fg = 10'd392;//392;   //0.1M,32'd16836272
//parameter Fa = 10'd440;//440;   //0.1M,32'd18897856
//parameter Fb = 10'd494;//494;	//0.1M,32'212171384		nco_ips nco_ips_u(.phi_inc_i (fres),.clk       (clk),.reset_n   (~rst),.clken     (1'b1),.fsin_o    (sine),.fcos_o    (),.out_valid ());					//	input	[31:0]	phi_inc_i;
//	input		clk;
//	input		reset_n;
//	input		clken;
//	output	[15:0]	fsin_o;
//	output	[15:0]	fcos_o;
//	output		out_valid;
endmodule

    这个模块的仿真效果如下所示:

2.2正弦信号的模块设计

    第二,正弦信号的模块设计,这个是核心模块,产生不同频率的正弦模块。

这个模块的主要功能就是产生正弦信号波。

2.3衰减模块 

第三,衰减模块,即对每个音符发生的时候出现衰减,相当于论文中的公式:

公式中的exp部分。

2.4音乐合成顶层模块

module tops(i_clock,i_rst,o_fre,o_sin,o_lapse,o_final);input       i_clock;
input       i_rst;
output[9:0] o_fre;
output[9:0] o_sin;
output[11:0]o_lapse;
output[21:0]o_final;//timing Controller
reg      Reset;
reg      Enable;
reg[15:0]Count;
reg[3:0] Cnt;always @(posedge i_clock or posedge i_rst)
beginif(i_rst)beginCount <= 16'd0;Cnt   <= 4'd0;Reset <= 1'b0;Enable<= 1'b0;end
else begin//every pitch continue 1sif(Count == 8000)Count <= 1;elseCount <= Count + 1;if(Count == 1)beginReset <= 1'b1;Enable<= 1'b1;if(Cnt == 4'd6)Cnt <= 4'd0;elseCnt <= Cnt + 4'd1;endelsebeginReset <= 1'b0;Enable<= 1'b0;end    end
end//C D E F G A B ~~~~~
sub_pitch sub_pitch_u(.i_clock  (i_clock),.i_reset  (Reset),.i_enable (Enable),.i_a      (4'd1),.i_sel    (Cnt),//C D E F G A B ~~~~~.o_fre    (o_fre),.o_sin    (o_sin),.o_lapse  (o_lapse),.o_final  (o_final));endmodule

进行音乐的合成:

   仿真效果如下所示:

上述就是加入衰减效果的音符。

    下面就通过连续的音符,产生一个音乐。

最后,根据合成的音符,组成连续的音乐。连续播放CDEFGAB。

3.通过matlab对FPGA实现结果进行验证

首先进行仿真,得到如下的仿真结果,即运行我们代码中的top.vwf文件,仿真运行,结果如下:

然后,我们将对应的数据o_final和i_clock复制到新的一个波形文件中,如下所示:

 

就是新建一个波形文件,然后将o_final和i_clock复制到里面,如下

然后做一个设置,选中i_clock,然后点击如下的按键:

将时钟频率设置为原来的一半,得到如下的效果:

然后进行保存,右击另存为tbl文件

得到一个tbl波形文件组。

然后,将tbl中的英文说明删除。变成单独的数据(前面几行英文和最后一行X)

然后运行我们提供的MATLAB数据获取代码

clc;
clear;
close all;%从tbl中数据进行提取
y     = tbls('DAT.tbl');
%将读取的十六进制数据转换为有符号十进制数据
y_dec = func_get_real_dat(y);
%将FPGA中的数据进行归一
y_dec = y_dec/max(y_dec);figure;
plot(y_dec);
sound(y_dec,8000);

运行后得到如下的效果:

然后可以听到合成的音乐,CDEFGAB~~~1,2,3,4,5,6,7

A03-13

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/47482.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怎么把两个mp3音频合成一个?

怎么把两个mp3音频合成一个&#xff1f;如何合并两个MP3文件为一个音乐文件&#xff1f;两个MP3格式如何合并&#xff0c;两个MP3格式合并方法&#xff1f;这是我最近收到的最多的问题了&#xff0c;而且问这些的多是我们的新手小白&#xff0c;因为专业的人不需要问&#xff0…

java 合并两个音频_如何利用音乐合成软件将多段音频合并为一段?快速合并音频的方法...

在之前的文章中小编介绍了使用音乐剪切工具在一个音频文件中分割出多个音频的片段的方法&#xff0c;然后有小伙伴就问如何利用音乐合成软件将多段音频合并为一段&#xff1f;其实合并音频的方法和分割音频的方法大体上是相同的&#xff0c;如果还有不会编辑音频的小伙伴可以跟…

计算机合成音乐的交换标准,音乐合成器

简介 音乐合成器(Musical Synthesizer) 用来产生并修改正弦波形并叠加&#xff0c;然后通过声音产生器和扬声器发出特定的声音。泛音的合成决定声音音质。 C机声卡上的音乐合成器能合成音乐&#xff0c;可模仿许多乐器的演奏效果&#xff0c;音乐合成器的功能是将MIDI消息转换为…

音乐合成软件哪个好用?快把这些软件收好

小伙伴们平时有听过一些由很多歌曲串在一起的歌吗&#xff1f;一般这种歌我们都称为歌曲串烧&#xff0c;有些歌曲串的好的话&#xff0c;会给人在听感上别有一番体验。听到这些歌后&#xff0c;会不会激发起你们把自己喜欢的歌串在一起的想法呢&#xff1f;其实歌曲串烧很容易…

不懂怎么写辞职报告的看这里,教你们一个办法

今天&#xff0c;我有一个朋友告诉我说&#xff0c;他要辞职了&#xff0c;要写辞职报告&#xff0c;不懂怎么去措辞。然后我突然就想到一个办法&#xff0c;给他看之后&#xff0c;他直呼“牛x”&#xff01;&#xff01;&#xff01; 所以&#xff0c;辞职报告不知道怎么写的…

GPT-3杀入漫威宇宙!二次元小伙用它生成蜘蛛侠续集

转自&#xff1a;新智元 既然GPT-3能循理路精炼总结语料文本&#xff0c;写诗可以、写rap歌词可以&#xff0c;那么照猫画虎写小剧本&#xff0c;也不是不可以的……吧&#xff1f; 其实真是可以的&#xff0c;而且有人已经如此操作了。 AI新玩法&#xff1a;生成蜘蛛侠电影剧本…

马斯克点赞!DeepMind神AI编剧,一句话生成几万字剧本

视学算法报道 编辑&#xff1a;David 昕朋 【导读】当够了画家、剪辑和在线客服&#xff0c;人工智能的接下来要征服的&#xff0c;是编剧。DeepMind推出的AI写作模型Dramatron&#xff0c;只需一句故事梗概&#xff0c;就能创作万字剧本&#xff01; 你有灵光乍现的时刻吗&a…

景区旅游剧本杀体验打卡小程序开发

景区旅游剧本杀体验打卡软件的主要功能包括&#xff1a; 景区介绍&#xff1a;提供详细的景区介绍和地图信息&#xff0c;使用户能够更好地了解景区的背景、特色和各个景点的位置。 任务列表&#xff1a;提供任务列表和任务说明&#xff0c;让用户能够了解每个任务的目…

旅游景区AR剧本杀打卡软件

旅游景区AR剧本杀打卡软件的主要功能包括&#xff1a; 景区介绍&#xff1a;提供详细的景区介绍和地图信息&#xff0c;使用户能够更好地了解景区的背景、特色和各个景点的位置。 AR技术&#xff1a;使用AR技术实现虚拟现实场景和任务的展示&#xff0c;增强用户的游戏…

浅谈数字图书馆智能推荐系统的发展趋势

利用citespace对近十年来的相关中英文文献关键词进行突现分析&#xff0c;结果分别如下图所示&#xff1a; (y[0,1]0.6, Minimum Duration1) (y[0,1]0.8, Minimum Duration1) 关键词突现是指在短时间内发表文章中出现频次极高的关键词&#xff0c;从关键词突现开始至突现结束形…

chatgpt赋能Python-python_chm

Python chm&#xff1a;为你的Python学习之旅提供便利 如果你正在学习Python编程语言&#xff0c;你可能会遇到需要参考文档的情况&#xff0c;这时候&#xff0c;Python chm可能就是你的救星。Python chm是Python的 Windows 帮助文件格式&#xff0c;通常用于Windows上的Pyth…

chatgpt赋能python:Python实现数字颠倒技巧

Python实现数字颠倒技巧 在日常的程序开发中&#xff0c;数字颠倒&#xff08;reverse integer&#xff09;是一个常见而又实用的技巧&#xff0c;特别是在数据处理和算法设计方面。Python语言作为一门优秀的编程语言&#xff0c;自然也提供了多种实现数字颠倒的方案。本文主要…

chatgpt赋能Python-python_1_4

Python 1%4&#xff1a;提高Python编程效率的秘诀 Python是一种高级编程语言&#xff0c;因其简单易学、充满灵活性和适用性被广泛应用于各种领域。但是随着Python项目的复杂度增加&#xff0c;代码变得越来越长、难以维护&#xff0c;这会极大地影响开发效率。那么&#xff0…

chatgpt赋能Python-pythontutor怎么用

PythonTutor是什么&#xff1f;方法和用途 什么是PythonTutor&#xff1f; PythonTutor是一种在线程序可视化工具&#xff0c;旨在帮助初学者和专业人士更好地理解Python程序的工作原理。该工具通过交互式地显示变量、堆栈和函数的值来展示Python代码的执行过程。 PythonTut…

chatgpt赋能Python-pythonmd5校验

Python MD5校验 在数字信息时代&#xff0c;数据安全显然是非常重要的。在传输和存储数据的过程中&#xff0c;我们通常会使用MD5校验来验证数据的完整性和准确性。Python是一种非常流行的编程语言&#xff0c;因其简单易用、灵活性强、扩展性好而备受欢迎。 在本文中&#x…

chatgpt赋能python:Python入侵摄像头:实现简单且危险

Python 入侵摄像头&#xff1a;实现简单且危险 Python 作为一个强大的编程语言&#xff0c;可以实现很多有趣的应用。其中之一就是入侵摄像头。本文将介绍如何使用 Python 实现入侵摄像头&#xff0c;并探讨相关的危险性和安全性意识。 Python 入侵摄像头&#xff1a;如何实现…

10 年 Android 开发者突遭谷歌封号:“从此放弃,并决定开源所有应用!”

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 今日在 Reddit 上&#xff0c;一位业余开发者 StoryOfDavid&#xff08;以下简称为 David&#xff09;的帖子吸引了不少人注意&#xff1a;“从事 Android 开发近 10 年&#xff0c;现在我决定放弃了…

重磅!白嫖版GPT4爆火,导致官网崩溃!

作者 | 清风 审阅 | 云昭 来源于&#xff1a;51CTO技术栈 文末送书活动 重磅&#xff0c;用户终于可以免费体验GPT-4了。 4月21日&#xff0c;推特上发布了一款类似于ChatGPT的应用——“Forefront Chat”。 “今天&#xff0c;我们将推出Forefront Chat&#xff0c;能够提供更…

免费版 GPT-4 来了!无限制“白嫖”,可随时切换 GPT-3.5,还能跟爱因斯坦“对话”?...

整理 | 郑丽媛 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 据说&#xff0c;可以免费体验 GPT-4 的机会来了&#xff01; 上周末&#xff0c;MegaEase 创始人兼 CTO 陈皓老师&#xff08;左耳朵耗子&#xff09;在推特推荐了一款 ChatGPT 套壳网站 Forefront …

Day7:财报分析2:如何识别资产美化

回顾&#x1f601; Day1&#xff1a;如何判断入场时机 总结&#xff1a;通过判断沪深300和中证500的PE、PB高低&#xff0c;找到入场时机 Day2&#xff1a;合理规避风险 总结&#xff1a;构建4-8只的股票组合&#xff0c;同一行业投资资金不超过30% Day3&#xff1a;初筛白马股…