Я создаю отдельные заметки из одной заметки, которая читается с использованием функции wavread
.Matlab - Двойная продолжительность .wav
Я использую функцию resample
для создания этих заметок. например:
f5 = resample(a,440,698); %creates note.
f5_short = f5(dur:Hz); %creates duration of note (ie 1 sec)
f5_hf = f5_short(dur:Hz/2); %creates note of half duration
Приведенный выше код, похоже, работает хорошо. К сожалению, у меня возникают проблемы при создании «двойной примечание» ... Я не хочу, чтобы просто играть ту же ноту дважды, и я попробовал следующее:
f5_db = f5_short(dur*2:Hz); %exceeds size of matrix
f5_db = f5_short(dur:Hz*2); %exceeds size of matrix
f5_db = resample(f5_short,Hz*2,330); %tried upSampling it and although lengths it, note becomes deeper.
Что самый простой, почему удвоить длину of not/wav без изменения примечания? (растяните, но сохраните правильную ноту?) Спасибо.
Я пробовал метод 'repmat', но он выдает ошибку при ее конкатенации, например' sample = [f5_db; d4_short]; '. И использование вашего второго метода не выгодно, так как есть небольшая пауза до и после оригинальных заметок, поэтому вы получаете паузу внутри удлиненной заметки ... – Reanimation
Вы уверены, что вам нужно конкатенировать по вертикали с символом ';'? Если они имеют разную длину, вы получите ошибку. Попробуйте ',' конкатенировать по горизонтали. Что такое 'a' в вашем первом выражении? Можете ли вы привести пример для его создания? – yuk
А, вы используете Инструмент обработки сигналов. Не иметь его. Но если у вас есть пауза в начале и в конце последовательности, вы, вероятно, можете умножить некоторую последовательность из середины. Что такое размер 'f5_short'? – yuk