matlab弹奏旋律(发声)笔记
matlab弹奏旋律(发声)
最近在进行matlab的学习,使用matlab进行发声可以使用sound函数,那么如何使用matlab发出一串旋律呢?
数字音频是有一个采样频率的,在这里设定采样频率为8192mhz,各个音调的频率参照十二平均律。存放在freqs向量中,从前往后前14个为两阶1-7,从后向前7个为低一阶的1-7,如果tone为负数就从后向前取频率。x为声音的长度平均划分,y为发声最终读取的波形。只需要使用tone(音色)和rhythm(所占用的节拍)来不停调用函数就可发出一段旋律。
%首先是产生波形的函数,存放在gen_wave.m文件
function y =gen_wave(tone,rhythm)
fs=8192; %设定一个采样频率
freqs=[262,293,330,349,392,440,493,523,587,659,698,783,880,988,247,220,196,175,165,147,131];
x=linspace(0 , 2pirhythm , floor(fsrhythm));
if tone>0
y=sin(freqs(tone)x).(1-x/(rhythm2pi)); %这后面乘的内容是直线衰减,乘了rhythm是要普适于所有长度的声音
else
y=sin(freqs(1,end+1+tone)x).(1-x/(rhythm2*pi));
end
%其次是要发声的谱子,注意第一个y的赋值和之后的不一样,第一个是开始设置频率,之后的是要在第一个的基础上续。 这里的音乐是两只老虎,0.6是一拍,其余是半拍和两拍,可以根据改变Per的大小改变每拍的时间长度,也就是改变播放的快慢。存放在music.m,脚本式运行。
fs=8196;
per=0.6;
y1=gen_wave(1,per);
y2=gen_wave(2,per);
y3=gen_wave(3,per);
y4=gen_wave(1,per);
y5=gen_wave(1,per);
y6=gen_wave(2,per);
y7=gen_wave(3,per);
y8=gen_wave(1,per);
y=[y1,y2,y3,y4,y5,y6,y7,y8];
y1=gen_wave(3,per);
y2=gen_wave(4,per);
y3=gen_wave(5,2per);
y4=gen_wave(3,per);
y5=gen_wave(4,per);
y6=gen_wave(5,2per);
y=[y,y1,y2,y3,y4,y5,y6];
for i=1:2
y1=gen_wave(5,per/2);
y2=gen_wave(6,per/2);
y3=gen_wave(5,per/2);
y4=gen_wave(4,per/2);
y5=gen_wave(3,per);
y6=gen_wave(1,per);
y=[y,y1,y2,y3,y4,y5,y6];
end
y1=gen_wave(1,per);
y2=gen_wave(-5,per);
y3=gen_wave(1,2per);
y4=gen_wave(1,per);
y5=gen_wave(-5,per);
y6=gen_wave(1,2per);
y=[y,y1,y2,y3,y4,y5,y6];
sound(y,fs)
matlab弹奏旋律(发声)笔记相关推荐
- matlab机器人工具箱学习笔记——ikine函数
matlab机器人工具箱学习笔记--ikine函数 ikine函数用法 使用实例 链接: https://blog.csdn.net/weixin_42596724/article/details/8 ...
- comsol与matlab连接使用学习笔记 1 基础设置
comsol与matlab连接使用学习笔记 1 基础设置 前言 1.安装 COMSOL livlink for Matlab 2.首次运行 前言 以前从来没有用过comsol livelink for ...
- 数理方程及MATLAB解算学习笔记
数理方程及MATLAB解算学习笔记 文章目录 数理方程及MATLAB解算学习笔记 第一章 MATLAB基础知识 1.class查询数值类型 2.永久性数值变量 3.创建特殊矩阵的专用指令 4.基本初等 ...
- 【Matlab 机器人工具箱 学习笔记】双旋转台5轴数控机床 运动学模型02
参考: [1]何永红, 齐乐华, 赵宝林. 双转台五轴数控机床后置处理算法研究[J]. 制造技术与机床, 2006(1). [2]李永桥, 陈强, 谌永祥. 双转台五轴数控机床运动变换及求解方法的研究 ...
- MATLAB Simulink Statflow学习笔记
MATLAB Simulink Statflow学习笔记 1.概述 在做算法设计时,会用到Statflow模块和MATLAB Function模块,我们可以在这里搭建自己需要的程序逻辑. (1) St ...
- matlab回归问题,机器学习笔记(一)—— 线性回归问题与Matlab求解
给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...
- 一维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_8】
摘 要:混沌(Chaos)是指发生在确定系统中的貌似随机的不规则运动,本文将基于几种经典的一维动力学方程系统,根据其动力学方程研究其混沌产生过程以及相对应的MATLAB仿真. /*仅当作学习笔记,若有 ...
- Matlab App Designer 学习笔记
提示:本文的学习视频来自B站小刘老师的教程 链接:https://www.bilibili.com/video/BV16f4y147x9?from=search&seid=2070258926 ...
- 二维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_9】
摘 要:混沌(Chaos)是指发生在确定系统中的貌似随机的不规则运动,本文将基于经典的二维系统,然后根据动力学方程研究其混沌产生过程以及相对应的MATLAB仿真,再讨论Lyapunov指数以及正平衡点 ...
最新文章
- Flask上传文件到本地(底层方法实现)。
- 配置PIM auto-rp
- 中国智慧城市前瞻及开发运营可行性分析报告2022-2027年版
- ubuntu编译并调试OpenJDK8源码实践
- Redis缓存穿透 缓存击穿 缓存雪崩原因及其解决方案
- Ubuntu一键安装LAMP环境
- 爬虫的增量式抓取和数据更新
- php7设置最大连接数,sybase 15.7 修改 number of user connections 最大连接数
- 深入分析Java中的关键字static
- 深入浅出Hyper-V网络虚拟化(序)
- python 删除set指定值_python中的变量和数据类型(三)
- uniapp监听PDA激光扫描
- luis soares mysql,mysql访问报错如下
- linux系统管理Linux系统实验,操作系统原理与Linux系统实验
- 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
- 十张思维导图掌握javascript重点
- 双二阶广义积分器(SOGI)软件锁相(基于双线性变换)推导及实验代码
- 汽车驾驶 - 侧方停车
- 微信收藏服务器,微信收藏功能常见问题存储空间上限了
- UA MATH566 统计理论 完备性的证明方法
热门文章
- C++:C++11的牛逼特性
- larval模板引擎
- C# Predefined type 'System.Object' is not defined or imported
- 华为路由器接口IP地址如何配置与查看
- 网红书店的“关门潮”与场景阅读的“科技浪”
- 学人工智能看什么书?AI入门书籍推荐
- 【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)
- If-else与三目运算符的区别
- GRUB的menu.lst的写法
- 凹凸贴图、法线贴图、置换贴图