Изменение длительности срыва гитары в данных PCM - PullRequest
0 голосов
/ 06 октября 2011

Народ,

Я борюсь с простой концепцией, связанной с продолжительностью воспроизведения данных PCM.Буду признателен за ваши отзывы.

Разрабатываемое мной приложение воспроизводит гитарные ноты из листа музыки.

Я реализовал алгоритм Яффе-Смита для выщипывания гитары.

https://ccrma.stanford.edu/~jos/Mohonk05/Extended_Karplus_Strong_EKS_Algorithm.html.

Допустим, я вычисляю сэмплы для ноты A (440 Гц) за одну секунду.

При частоте дискретизации 11025 я буду хранить 11025 сэмплов, которые можно отправить на динамики компьютера.как PCM audio.

Для всех уникальных нот на гитаре достаточно времени, чтобы вычислить сэмплы для всех нот.Я думаю, что я буду предварительно вычислять и сохранять их как двоичные данные и просто загружать их при запуске приложения.

Пока все хорошо.

Теперь, скажем, я хочу играть впесня (список различных заметок).Допустим, песню нужно проигрывать со скоростью 100 ударов в минуту.Допустим, мне нужно сыграть ноту A в течение одного удара или 0,6 секунды (60/100).

Пересчет сэмплов в течение 0,6 секунды может занять довольно много времени.

Можно ли просто воспроизвести (11025 * 0,6) сэмплов?Будет ли это побочным эффектом?

Есть ли лучший способ добиться того, что я пытаюсь сделать?

Заранее благодарю за помощь.

С уважением, Питер

1 Ответ

1 голос
/ 07 октября 2011

Что вы в основном пытаетесь сделать, это создать синтезированную гитару, да?Я мог бы предложить вместо этого использовать маршрут сэмплера.

Под сэмплированием я подразумеваю небольшой клип аудио (ни одного сэмпла в смысле АЦП или ЦАП).

По сути,Вы можете объединить то, что вам нужно, на 4 части:

  • Атака
  • Распад
  • Sustain
  • Выпуск

Эти четыре части работают в таком порядке и обычно называются ADSR .Атака ноты - начальный звук.Для гитары вы услышите отрывок и начало звука.Распад будет образцом струны, поскольку он начинает исчезать.Сустейн - это образец, повторяемый снова и снова, пока вы не отпустите клавишу.Пример релиза - это то, что воспроизводится, когда вы отпускаете ключ.Что касается гитары, вы можете услышать образец легкого нажатия пальцами на струну, чтобы остановить их вибрацию.

Теперь вы можете генерировать все эти семплы в режиме реального времени, но, вероятно, будете сильно загружать процессор.

Относительно вашего вопроса: "Могу ли я просто играть (11025 * 0,6) семплов?"Да, при частоте дискретизации 11025 это будет 0,6 секунды звука.Также имейте в виду, что вы должны отправлять непрерывный поток данных на звуковую карту, заполняя все пустые места 0 (для подписанного PCM).

...