如何使用 MATLAB 音频处理 - 制作钢琴 - 进行编曲弹奏音乐

小插曲 - MATLAB 代码格式化

MBeautifier 是一个基于 MATLAB 源代码的开源一键美化m代码的格式器。它可以直接在MATLAB编辑器中使用,并且可按照使用者习惯进行配置的。MBeautifier支持的 Matlab 最低版本是 R2013b。

在这里插入图片描述

audioread,sound 函数

filename:文件的位置加名字,常用的在桌面的文件,音频格式为WAV,注意文件名带引号。

特别注意的是,如果文件是在MATLAB菜单栏下的当前文件路径下,可以只写文件名,如果不在这个路径里面调用,需要把完整的全部地址写进去,程序如下:

[y,Fs]=audioread('C:\Users\Administrator\Desktop\1.wav');

Fs:采样频率,1秒内对连续的音频信号取的点的个数。

y:输出的音频数字信号,默认是 n 行 2 列,其中2的意思是,这个音频信号是两个声道的,n 的值等于该音频信号的时长乘采样频率 Fs。

钢琴键 - 详细介绍

找到两个黑键三个白键这样的一组,左起第一白键都是c,C调就说的键盘中间的那一组的白键为1,依次后面白键为234567。
在这里插入图片描述
关于 钢琴 的 A 大调
在这里插入图片描述

案例测试

m 能够传数组,进行和弦的发音

function tunes2pianosound(m, time)

% m : a vector with tunes from pianonotes 1 to 88 played at the same time.
% time : change this for longer or shorter pianosound (rhythm)

len = length(m);
max_len = 0;

for i = 1:len
    note = ['all_notes\', num2str(m(i)), '.wav';]

    [y{
    
    i}, Fs] = audioread(note);
    plot(y{
    
    i})
    y{
    
    i} = y{
    
    i}(1:round(length(y{
    
    i})/time), :);

    if length(y{
    
    i}) > max_len
        max_len = length(y{
    
    i});
    end

end
y_sound = zeros(max_len, 2);
for i = 1:len
    y_sound = y_sound + y{
    
    i};
end
soundsc(y_sound, Fs)

1、size 获取数组的行数和列数

2、length 数组长度,即行数和列数中的较大值,相当于max(size(a))

猜你喜欢

转载自blog.csdn.net/qq_47452807/article/details/125823548