【发布时间】:2018-01-26 03:34:46
【问题描述】:
我想播放矩阵(FrTm)中给定的所有频率及其持续时间。实际持续时间为一秒,但每个频率必须播放 1/18 秒的 3 秒和 1/18 秒的 6 秒,例如矩阵( FTM)。
function Music()
Fs=44100;
T=1/Fs;
M = zeros(1,88);
for I=7:88,
M(I) = round(36.8*(2^(1/12))^(I-6));
end
Signal=[];
FrTm=[50,3;50,3;52,3;54,3;50,3;54,3;52,3;45,3;50,3;50,3;52,3;54,3;50,6;
49,3;1,3;50,3;50,3;52,3;54,3;55,3;54,3;52,3;50,3;49,3;45,3;47,3;49,3;50,6;
50,3;1,3;47,5;49,1;47,3;45,3;47,3;49,3;50,3;1,3;45,5;47,1;45,3;43,3;42,6;
45,3;1,3;47,5;49,1;47,3;45,3;47,3;49,3;50,3;47,3;45,3;50,3;49,3;52,3;50,6;
50,6];
t=0:1/18:1;
for i=1:length(FrTm),
M(i)=FrTm(i);
Z=M(i);
data= sin(2*pi*Z/Fs*t);
signal=[data;signal];
end
stem(Signal);
sound (Signal, 44100);
end
【问题讨论】:
-
我真的不明白你要做什么。
FrTm是一个 59x2 矩阵,第一列是频率,第二列告诉你玩它时它应该是 3/18 秒还是 6/18 秒?但是你说总持续时间是1秒?您能否详细说明您想要实现的目标?此外,有时signal有一个大写字母,有时没有,假设你想要signal的1 个大向量,它应该是signal=[data signal]。 -
ViG 首先感谢您的评论。好的,假设任何持续时间,但必须播放一些频率,提到持续时间的 3/18 和 FrTm 矩阵中给出的一些 6/18。抱歉信号以大写开头现在让我们帮我看看你能做些什么来产生吉他声音。这就是我到目前为止所做的。
-
好的,我更改了程序。新代码只创建图不播放,为什么? t=0:1/18:5;对于 i=1:长度(FrTm),M(i)=FrTm(i,1); Z=M(i);数据= sin(2*piZ/Fst);信号=[数据;信号];端茎(信号);声音(信号,44100);结束
-
我仍然不确定总长度的 3/18 是什么意思,因为你首先想要 50 Hz 播放总长度的 3/18,然后再一次,然后 52 Hz 播放 3 /18,然后是 54 和 50 和 54,然后你有 18/18。那么所有其他人的情况如何呢? FrTm 的第 2 列的总和是 192,这意味着您将有 192/18 倍于您想要的长度?我知道有些东西遵守总持续时间,但每个频率播放总持续时间的 3/192 或 6/192。可能你听不到的原因是因为幅度小
-
好的,请进行一些更改,以便我可以听到这些频率的吉他和弦。