私はそれはすべての高調波がゼロの位相で始まるではないということです。任意の単一の特定の時間(MIDI NoteOnなど)。 BTWは、リックライオンズの答えを追加するために、ここでは、あなたが何ができ、そして調波の位相アライメントについて聞くことができないかを示すMATLABプログラムがあります。試してみる。あなたが聞くことができるかどうかを見てください。
%
% square_phase.m
%
% a test to see if we can really hear phase changes
% in the harmonics of a Nyquist limited square wave.
%
% (c) 2004 [email protected]
%
if ~exist('Fs')
Fs = 44100 % sample rate, Hz
end
if ~exist('f0')
f0 = 110.25 % fundamental freq, Hz
end
if ~exist('tone_duration')
tone_duration = 2.0 % seconds
end
if ~exist('change_rate')
change_rate = 1.0 % Hz
end
if ~exist('max_harmonic')
max_harmonic = floor((Fs/2)/f0) - 1
end
if ~exist('amplitude_factor')
amplitude_factor = 0.25 % this just keeps things from clipping
end
if ~exist('outFile')
outFile = 'square_phase.wav'
end
% make sure we don't uber-Nyquist anything
max_harmonic = min(max_harmonic, floor((Fs/2)/f0)-1);
t = linspace((-1/4)/f0, tone_duration-(1/4)/f0, Fs*tone_duration+1);
detune = change_rate;
x = cos(2*pi*f0*t); % start with 1st harmonic
n = 3; % continue with 3rd harmonic
while (n <= max_harmonic)
if ((n-1) == 4*floor((n-1)/4)) % lessee if it's an "even" or "odd" term
x = x + (1/n)*cos(2*pi*n*f0*t);
else
x = x - (1/n)*cos(2*pi*(n*f0+detune)*t);
detune = -detune; % comment this line in an see some
end % funky intermediate waveforms
n = n + 2; % continue with next odd harmonic
end
x = amplitude_factor*x;
% x = sin((pi/2)*x); % toss in a little soft clipping
plot(t, x); % see
sound(x, Fs); % hear
wavwrite(x, Fs, outFile); % remember