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,2
per);
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,2
per);
y=[y,y1,y2,y3,y4,y5,y6];
sound(y,fs)

matlab弹奏旋律(发声)笔记相关推荐

  1. matlab机器人工具箱学习笔记——ikine函数

    matlab机器人工具箱学习笔记--ikine函数 ikine函数用法 使用实例 链接: https://blog.csdn.net/weixin_42596724/article/details/8 ...

  2. comsol与matlab连接使用学习笔记 1 基础设置

    comsol与matlab连接使用学习笔记 1 基础设置 前言 1.安装 COMSOL livlink for Matlab 2.首次运行 前言 以前从来没有用过comsol livelink for ...

  3. 数理方程及MATLAB解算学习笔记

    数理方程及MATLAB解算学习笔记 文章目录 数理方程及MATLAB解算学习笔记 第一章 MATLAB基础知识 1.class查询数值类型 2.永久性数值变量 3.创建特殊矩阵的专用指令 4.基本初等 ...

  4. 【Matlab 机器人工具箱 学习笔记】双旋转台5轴数控机床 运动学模型02

    参考: [1]何永红, 齐乐华, 赵宝林. 双转台五轴数控机床后置处理算法研究[J]. 制造技术与机床, 2006(1). [2]李永桥, 陈强, 谌永祥. 双转台五轴数控机床运动变换及求解方法的研究 ...

  5. MATLAB Simulink Statflow学习笔记

    MATLAB Simulink Statflow学习笔记 1.概述 在做算法设计时,会用到Statflow模块和MATLAB Function模块,我们可以在这里搭建自己需要的程序逻辑. (1) St ...

  6. matlab回归问题,机器学习笔记(一)—— 线性回归问题与Matlab求解

    给你多组数据集,例如给你很多房子的面积.房子距离市中心的距离.房子的价格,然后再给你一组面积. 距离,让你预测房价.这类问题称为回归问题. 回归问题(Regression) 是给定多个自变量.一个因变 ...

  7. 一维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_8】

    摘 要:混沌(Chaos)是指发生在确定系统中的貌似随机的不规则运动,本文将基于几种经典的一维动力学方程系统,根据其动力学方程研究其混沌产生过程以及相对应的MATLAB仿真. /*仅当作学习笔记,若有 ...

  8. Matlab App Designer 学习笔记

    提示:本文的学习视频来自B站小刘老师的教程 链接:https://www.bilibili.com/video/BV16f4y147x9?from=search&seid=2070258926 ...

  9. 二维离散动力学系统的混沌研究【基于matlab的动力学模型学习笔记_9】

    摘 要:混沌(Chaos)是指发生在确定系统中的貌似随机的不规则运动,本文将基于经典的二维系统,然后根据动力学方程研究其混沌产生过程以及相对应的MATLAB仿真,再讨论Lyapunov指数以及正平衡点 ...

最新文章

  1. Flask上传文件到本地(底层方法实现)。
  2. 配置PIM auto-rp
  3. 中国智慧城市前瞻及开发运营可行性分析报告2022-2027年版
  4. ubuntu编译并调试OpenJDK8源码实践
  5. Redis缓存穿透 缓存击穿 缓存雪崩原因及其解决方案
  6. Ubuntu一键安装LAMP环境
  7. 爬虫的增量式抓取和数据更新
  8. php7设置最大连接数,sybase 15.7 修改 number of user connections 最大连接数
  9. 深入分析Java中的关键字static
  10. 深入浅出Hyper-V网络虚拟化(序)
  11. python 删除set指定值_python中的变量和数据类型(三)
  12. uniapp监听PDA激光扫描
  13. luis soares mysql,mysql访问报错如下
  14. linux系统管理Linux系统实验,操作系统原理与Linux系统实验
  15. 如何快速实现自定义sql分页?若不会,我便手把手教你【详细】
  16. 十张思维导图掌握javascript重点
  17. 双二阶广义积分器(SOGI)软件锁相(基于双线性变换)推导及实验代码
  18. 汽车驾驶 - 侧方停车
  19. 微信收藏服务器,微信收藏功能常见问题存储空间上限了
  20. UA MATH566 统计理论 完备性的证明方法

热门文章

  1. C++:C++11的牛逼特性
  2. larval模板引擎
  3. C# Predefined type 'System.Object' is not defined or imported
  4. 华为路由器接口IP地址如何配置与查看
  5. 网红书店的“关门潮”与场景阅读的“科技浪”
  6. 学人工智能看什么书?AI入门书籍推荐
  7. 【Python教程】十三、我连对象都找不到还让我用对象?类与对象(一)
  8. If-else与三目运算符的区别
  9. GRUB的menu.lst的写法
  10. 凹凸贴图、法线贴图、置换贴图