从网上复制了一份matlab演奏的曲调源码,很有意思!(也很好听!)
(源码来源:https://www.zhihu.com/question/27850677/answer/104060849)
1、因为复制问题,使用python简单处理了下:
#!/usr/bin/python# -*- coding: UTF-8 -*-

def writefile(sentences):    fo = open("song.m", "w")    for index, item in enumerate(sentences):        fo.write(item)        fo.write(";\n")    fo.close()

fo = open("song.txt", "r")print "文件名: ", fo.nameprint "是否已关闭 : ", fo.closedprint "访问模式 : ", fo.modeprint "末尾是否强制加空格 : ", fo.softspace

line = fo.readline()sentences = line.split(";")writefile(sentences)fo.close()print "是否已关闭 : ", fo.closed
2、下面是m文件源码(需要使用matlab运行才可以听~,我使用的MATLAB R2017a):sp=actxserver('SAPI.SpVoice');
sp.Speak('最炫民族风');
sp.Speak('作曲者');
sp.Speak('大东哥');
sp.Speak('演奏者');
sp.Speak('Matlab'); % Most shining national wind//最炫民族风 on Matlab % The Modification is from "canon", not by me fs = 44100;% sample rate dt = 1/fs; T16 = 0.125; t16 = [0:dt:T16]; [temp k] = size(t16); t4 = linspace(0,4*T16,4*k); t8 = linspace(0,2*T16,2*k); [temp i] = size(t4); [temp j] = size(t8); % Modification functions mod4=(t4.^4).*exp(-30*(t4.^0.5)); mod4=mod4*(1/max(mod4)); mod8=(t8.^4).*exp(-50*(t8.^0.5)); mod8=mod8*(1/max(mod8)); mod16=(t16.^4).*exp(-90*(t16.^0.5)); mod16=mod16*(1/max(mod16)); f0 = 2*146.8;% reference frequency ScaleTable = [2/3 3/4 5/6 15/16 ... 1 9/8 5/4 4/3 3/2 5/3 9/5 15/8 ... 2 9/4 5/2 8/3 3 10/3 15/4 4 ... 1/2 9/16 5/8]; % 1/4 notes do0f = mod4.*cos(2*pi*ScaleTable(21)*f0*t4); re0f = mod4.*cos(2*pi*ScaleTable(22)*f0*t4); mi0f = mod4.*cos(2*pi*ScaleTable(23)*f0*t4); fa0f = mod4.*cos(2*pi*ScaleTable(1)*f0*t4); so0f = mod4.*cos(2*pi*ScaleTable(2)*f0*t4); la0f = mod4.*cos(2*pi*ScaleTable(3)*f0*t4); ti0f = mod4.*cos(2*pi*ScaleTable(4)*f0*t4); do1f = mod4.*cos(2*pi*ScaleTable(5)*f0*t4); re1f = mod4.*cos(2*pi*ScaleTable(6)*f0*t4); mi1f = mod4.*cos(2*pi*ScaleTable(7)*f0*t4); fa1f = mod4.*cos(2*pi*ScaleTable(8)*f0*t4); so1f = mod4.*cos(2*pi*ScaleTable(9)*f0*t4); la1f = mod4.*cos(2*pi*ScaleTable(10)*f0*t4); tb1f = mod4.*cos(2*pi*ScaleTable(11)*f0*t4); ti1f = mod4.*cos(2*pi*ScaleTable(12)*f0*t4); do2f = mod4.*cos(2*pi*ScaleTable(13)*f0*t4); re2f = mod4.*cos(2*pi*ScaleTable(14)*f0*t4); mi2f = mod4.*cos(2*pi*ScaleTable(15)*f0*t4); fa2f = mod4.*cos(2*pi*ScaleTable(16)*f0*t4); so2f = mod4.*cos(2*pi*ScaleTable(17)*f0*t4); la2f = mod4.*cos(2*pi*ScaleTable(18)*f0*t4); ti2f = mod4.*cos(2*pi*ScaleTable(19)*f0*t4); do3f = mod4.*cos(2*pi*ScaleTable(20)*f0*t4); blkf = zeros(1,i); % 1/8 notes do0e = mod8.*cos(2*pi*ScaleTable(21)*f0*t8); re0e = mod8.*cos(2*pi*ScaleTable(22)*f0*t8); mi0e = mod8.*cos(2*pi*ScaleTable(23)*f0*t8); fa0e = mod8.*cos(2*pi*ScaleTable(1)*f0*t8); so0e = mod8.*cos(2*pi*ScaleTable(2)*f0*t8); la0e = mod8.*cos(2*pi*ScaleTable(3)*f0*t8); ti0e = mod8.*cos(2*pi*ScaleTable(4)*f0*t8); do1e = mod8.*cos(2*pi*ScaleTable(5)*f0*t8); re1e = mod8.*cos(2*pi*ScaleTable(6)*f0*t8); mi1e = mod8.*cos(2*pi*ScaleTable(7)*f0*t8); fa1e = mod8.*cos(2*pi*ScaleTable(8)*f0*t8); so1e = mod8.*cos(2*pi*ScaleTable(9)*f0*t8); la1e = mod8.*cos(2*pi*ScaleTable(10)*f0*t8); tb1e = mod8.*cos(2*pi*ScaleTable(11)*f0*t8); ti1e = mod8.*cos(2*pi*ScaleTable(12)*f0*t8); do2e = mod8.*cos(2*pi*ScaleTable(13)*f0*t8); re2e = mod8.*cos(2*pi*ScaleTable(14)*f0*t8); mi2e = mod8.*cos(2*pi*ScaleTable(15)*f0*t8); fa2e = mod8.*cos(2*pi*ScaleTable(16)*f0*t8); so2e = mod8.*cos(2*pi*ScaleTable(17)*f0*t8); la2e = mod8.*cos(2*pi*ScaleTable(18)*f0*t8); ti2e = mod8.*cos(2*pi*ScaleTable(19)*f0*t8); do3e = mod8.*cos(2*pi*ScaleTable(20)*f0*t8); blke = zeros(1,j); % 1/16 notes do0s = mod16.*cos(2*pi*ScaleTable(21)*f0*t16); re0s = mod16.*cos(2*pi*ScaleTable(22)*f0*t16); mi0s = mod16.*cos(2*pi*ScaleTable(23)*f0*t16); fa0s = mod16.*cos(2*pi*ScaleTable(1)*f0*t16); so0s = mod16.*cos(2*pi*ScaleTable(2)*f0*t16); la0s = mod16.*cos(2*pi*ScaleTable(3)*f0*t16); ti0s = mod16.*cos(2*pi*ScaleTable(4)*f0*t16); do1s = mod16.*cos(2*pi*ScaleTable(5)*f0*t16); re1s = mod16.*cos(2*pi*ScaleTable(6)*f0*t16); mi1s = mod16.*cos(2*pi*ScaleTable(7)*f0*t16); fa1s = mod16.*cos(2*pi*ScaleTable(8)*f0*t16); so1s = mod16.*cos(2*pi*ScaleTable(9)*f0*t16); la1s = mod16.*cos(2*pi*ScaleTable(10)*f0*t16); tb1s = mod16.*cos(2*pi*ScaleTable(11)*f0*t16); ti1s = mod16.*cos(2*pi*ScaleTable(12)*f0*t16); do2s = mod16.*cos(2*pi*ScaleTable(13)*f0*t16); re2s = mod16.*cos(2*pi*ScaleTable(14)*f0*t16); mi2s = mod16.*cos(2*pi*ScaleTable(15)*f0*t16); fa2s = mod16.*cos(2*pi*ScaleTable(16)*f0*t16); so2s = mod16.*cos(2*pi*ScaleTable(17)*f0*t16); la2s = mod16.*cos(2*pi*ScaleTable(18)*f0*t16); ti2s = mod16.*cos(2*pi*ScaleTable(19)*f0*t16); do3s = mod16.*cos(2*pi*ScaleTable(20)*f0*t16); blks = zeros(1,k); % Melody by Schau_mal part0 = [mi1f la0e la0e do1f mi1f ... re1e re1s mi1s re1e do1e re1e do1e la0f ... mi1f la0e la0e do1f mi1f ... so1e re1s mi1s re1e do1e re1e do1e ti0e so0e ... mi1f la0e la0e do1f mi1f ... re1e re1s mi1s re1e do1e re1e do1e la0e so0e ... mi1f la0e la0e do1f mi1f ... so1e mi1e blkf blkf blkf ... ]; part1 = [la0f la0e so0e la0f la0e do1e ... do1f re1e do1e la0f la0f ... do1f do1e so0e do1e re1e mi1e so1e ... so1e mi1e re1f mi1f mi1f ... la1e la1e la1e so1e mi1e mi1f do1e ... la0e la0e la0e mi1e re1s mi1s re1e re1f ... mi1e mi1e so1e mi1e re1e mi1e re1e do1e ... la0f so0f la0f la0f ... ]; part2 = [mi1e mi1e so1e mi1e mi1e so1e so1e la1e ... do2e la1e so1f la1s do2s la1e la1f ... la0f la0e so0e la0f do1f ... re1e mi1s re1s do1e re1e mi1f mi1f ... la0e la1e la1e so1e re1e mi1s re1s do1e re1e ... mi1f mi1f blke blke blkf ... do1e la0e la0e do1e re1f so0e so0e ... mi1e so1e mi1e re1e do1f do1f ... la0e do1e re1e mi1e re1e do1e so0e mi0e ... la0f la0f blke blke blkf ... ]; part3 = [la0f la0e so0e la0f do1f ... re1e mi1s re1s do1e re1e mi1f mi1f ... la0e la1e la1e so1e re1e mi1s re1s do1e re1e ... mi1f mi1f blke blke blkf ... do1e la0e la0e do1e re1f so0e so0e ... mi1e so1e mi1e re1e do1f do1e do1e ... la0e do1e re1e mi1e so1e mi1e mi1e so1e ... la1f la1f la1f la1f ... ]; part4 = [la1e la1s la1s la1e la1e la1e la1s so1s mi1e re1e ... re1e re1s re1s mi1e mi1s so1s mi1e mi1s re1s do1e do1s la0s ... la0f la0e so0e la0f la0e do1e ... re1e mi1s re1s do1e re1e mi1f mi1f ... la1e so1e mi1e re1e so1e mi1e re1e do1e ... do1f do1f la0s do1s re1s mi1s re1s do1s la0s do1s ]; part5 = [do2e do2s do2s la1e la1s la1s so1e so1s so1s mi1e mi1s mi1s ... re1e mi1s re1s do1e la0s so0s la0s so0s do1s re1s mi1s so1s la1s re2s ... do2f do2f blks blks blks blks do1e re1e ... mi1f mi1f mi1f so1e mi1e ... la1f la1f la1e do1e so1e mi1e ... re1f re1e re1s re1s re1e re1e do1e re1e ... mi1f mi1e mi1s mi1s mi1e re1s do1s ti0e do1s re1s ... mi1f mi1f mi1f so1e mi1e ... do2f la1f la1f la1e do1e ... re1f so1f so1f la1f ... ti1f ti1f ti1f ti1f ... ]; part6 = [blkf blkf mi1e so1e mi1e so1e ... mi1f la0e la0s la0s do1f la0e mi1s la0s ... do1e do1s do1s re1e do1s re1s mi1f mi1f ... mi1f la0e la0s la0s so1f re1e re1s re1s ... mi1f mi1f mi1s re1s do1s la0s mi0s re0s mi0s so0s ... do1f la0e la0s la0s re1f so0e so0s so0s ... mi0f so0e so0s so0s do1f do1f ... la0f do1e do1s la0s mi1e mi1s mi1s re1e re1s mi1s ... ]; % Combination, v1 is complete version, v2 is simple version. v1 = [part0 part1 part1 part2 part3 part4 part0 part1 part1 part2 part3 part5 part3 part6 part3]; v2 = [part0 part1 part1 part2 part3 part5 part3 part6 part3]; % Let's rock ^_^ s = v1; s = s/max(s); sound(s,fs);

Matlab很强大!!!

转载于:https://www.cnblogs.com/zhaojihui/p/6666525.html

Matlab学习(可以用MATLAB作曲)相关推荐

  1. Matlab学习一本通,matlab基础教程

    链接:https://pan.baidu.com/s/1uTCbiRfIxcrt6lmiy6_QlQ  提取码:f2dn  Matlab学习一本通,matlab基础教程 <MATLAB R201 ...

  2. 第一章 matlab 学习入门之matlab基础

    matlab系列文章目录 第一章 matlab 学习入门之matlab基础 在这一章会学习到: 数据类型(数值,字符串,结构,单元数组,函数句柄,映射容器) 运算符与运算(算术运算符,关系运算符,逻辑 ...

  3. MATLAB学习笔记04—MATLAB的字符与字符串类型

    MATLAB学习笔记 第4章字符和字符串类型 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 MATLAB学习笔记 一.字符串属性示例 二.字符串数组的索引 三.字符串中的 ...

  4. MATLAB学习笔记之matlab基础知识

    MATLAB基础知识 MATLAB系统环境 MATLAB操作界面组成 MATLAB主窗口 命令行窗口 当前文件夹窗口 工作区窗口 MATLAB的搜索路径 MATLAB数值数据 数值数据类型的分类 整型 ...

  5. [MATLAB学习笔记]基于MATLAB的坐标系变换及飞行器姿态运动显示

    描述三维空间物体的运动通常是在指定的坐标系下进行,在不同的坐标系下物体运动的轨迹和姿态不尽相同.求解物体在不同坐标系下的位置和姿态的关键在于求解不同坐标系之间的变换矩阵. 以从地心坐标系到体坐标系为例 ...

  6. 【Matlab学习手记】Matlab积分问题

    一个程序彻底搞懂Matlab的数值积分.符号积分问题. 数值积分问题,给定被积分函数和积分上下限,使用 integral 函数得到积分值: 符号积分问题,通常结果是解析解,即需要知道被积分函数的原函数 ...

  7. Matlab学习-经纬度在matlab内置地图显示

    已知经纬度坐标,将其显示是地图上 参考链接: 使用matlab绘制世界地图并根据经纬度绘制点位(附m_map的下载与安装说明) wm = webmap('World Imagery'); lat = ...

  8. MATLAB学习笔记之matlab程序流程控制

    MATLAB程序流程控制 顺序结构程序 程序和程序设计 程序的三种基本结构 脚本文件和函数文件 文件的建立 顺序结构 数据的输入 数据的输出 程序的暂停 a=input('a='); b=input( ...

  9. matlab 彩色变换,MATLAB学习笔记 彩色变换

    MATLAB学习笔记 彩色变换 MATLAB学习笔记 彩色变换 MATLAB学习笔记 彩色变换 interp1q(x, y, xi) 线性内插,获得xi点的yi值(直线) x 为列向量 设置x轴各个点 ...

  10. Matlab学习笔记——数据文件定位

    写在这里的初衷,一是备忘,二是希望得到高人指点,三是希望能遇到志同道合的朋友. 目录 数据文件定位 1.fseek函数 2.ftell函数 3.feof函数 数据文件定位 1.fseek函数 用于改变 ...

最新文章

  1. java中多态的例子_java中的多态案例
  2. hi3531交叉编译环境arm-hisiv100nptl-linux搭建过程
  3. numpy数组提取一定规律的数据
  4. IBM副总裁自述的数据中心简化经验
  5. interop_如何在Blazor中实现JavaScript Interop
  6. sqlserver note
  7. 18、Linux下编程风格
  8. 基础编程题目集 6-3 简单求和 (10 分)
  9. 安卓python安装库_如何快速在安卓上搭建python3环境
  10. php向浏览器输出,使PHP即时输出结果到浏览器
  11. 一篇介绍OpenJDK字体的文章
  12. 再谈iOS视频播放器旋转视图开发
  13. lol微信登录服务器,LOL开启微信登录功能测试 绑定微信登陆方法一览
  14. excel只显示公式,不显示结果
  15. 移动GM220S光猫超级密码及改桥接模式方法
  16. 2022021第二届青少年计算机知识竞赛
  17. vue+高德地图绘制路径
  18. BiocManager安装R包解决下载速度太慢的问题
  19. 最大似然估计(Maximum Likehood Estimation,MLE)和最大后验估计(Maximum A Posteriori estimation, MAP)
  20. 【电气专业知识问答】问:电网调度部门对各主要发电厂涉网部分电气设备的监控内容是什么?如何实现?

热门文章

  1. Scrapy架构及其组件之间的交互
  2. 此页的状态信息无效,可能已损坏。”的解决办法
  3. Windows7下IIS7.5的伪静态URL Rewrite安装配置和案例综合
  4. 求职与简历功能上线测试
  5. kubernetes之初始容器(init container)
  6. CSS基础part1
  7. [51nod1206]Picture
  8. 火狐中jq的attr出现的bug问题用prop代替
  9. python基础之socket
  10. 剧情介绍:“造雨人”