Алгоритм Карплуса-Стронга

Поделись знанием:
Перейти к: навигация, поиск

Алгоритм Карплуса-Стронга для синтеза струны — способ синтеза звука, заключающийся в пропускании короткого сигнала через линию задержки с фильтром. В зависимости он параметров, полученный звук может быть похож на звук струны, извлекаемый медиатором или тэппингом, либо на звуки некоторых ударных инструментов.

Эту технику можно рассматривать как субтрактивный синтез с применением линии обратной связи, аналогично гребенчатому фильтру для анализа методом z-преобразования. Её также можно рассматривать в качестве простейшего случая волнового синтеза, поскольку линия задержки выступает как хранилище одного периода сигнала.

Александр Стронг изобрёл алгоритм, а Кевин Карплус первым произвёл анализ его работы. Вместе они разработали программную и аппаратную реализации алгоритма, в том числе и реализацию на СБИС. Они назвали алгоритм «Digitar» (игра слов от англ. digital guitar — цифровая гитара).





Принцип работы

  1. Генерируется короткий сигнал (длиной L отсчетов). В оригинальном алгоритме использовался короткий сигнал белого шума, однако может использоваться любой широкополосный сигнал, например ЛЧМ, период пилообразной или прямоугольной волны.
  2. Сигнал одновременно подается на выход и на вход линии задержки длиной L отсчетов.
  3. Выход линии задержки пропускается через звуковой фильтр. Для поддержания стабильной положительной обратной связи коэффициент передачи фильтра должен быть строго меньше 1 для всех частот. В качестве фильтра может использоваться однополюсной фильтр низких частот (как на картинке). В оригинальном алгоритме фильтр состоял из усреднителя двух смежных отсчетов, поскольку такой фильтр позволяет обойтись без умножителя и использовать только операции сложения и битового сдвига. Характеристики фильтра являются определяющими для гармонической структуры затухающего сигнала.
  4. Выход фильтра одновременно микшируется с выходом и подается на вход линии задержки.

Настройка струны

Основная частота (точнее, самая низкая ненулевая гармоника) полученного сигнала — самая низкая частота, при которой развернутый отклик фазы запаздывания и фильтра в каскаде равен <math>-2\pi</math>. Требуемое запаздывание по фазе D для данного основного тона F0 вычисляется по формуле D = Fs/F0, где Fs — частота семплирования.

Длина любой цифровой линии задержки является целым множителем периода семплирования. Для получения дробного запаздывания используются интерполирующие фильтры с параметрами, соответствующими запаздыванию фазы при выбранной основной частоте. Могут быть использованы БИХ- или КИХ-фильтры, однако КИХ-фильтр обладает тем преимуществом, что импульсные помехи подавляются, если дробное запаздывание изменяется с течением времени. Простейшим дробным способом вычисления дробного запаздывания является линейная интерполяция двух отсчётов (например, s(4.2) = 0.8s(4) + 0.2s(5)). Если фазовая задержка изменяется с частотой, гармоники могут быть усилены или ослаблены по сравнению с основной частотой. Оригинальный алгоритм использовал среднее значение двух последовательных отсчётов, что позволило реализовать фильтр с использованием только сложения и битового сдвига, делая реализацию весьма эффективной.

В оригинальной работе 1983 года указывается, что анализ с использованием Z-преобразования позволяет получить частоты и времена затухания гармоник с более высокой точностью.

Результат работы алгоритма Карплуса-Стронга можно прослушать в прилагающемся аудиофайле. Алгоритм использует коэффициент передачи 0.98 с последовательным смягчением частот низкочастотным фильтром первого порядка. Звучит нота ля второй октавы, 220 Гц.

Карплус-Стронг №1
F1 = 220 Гц
Помощь по воспроизведению

Постоянный период (то есть, длина линии задержки) дает звук, похожий на струнные или колокол. Резкое увеличение периода сразу после начала сигнала производит звуки, похожие на барабан.

Усовершенствования алгоритма

Алекс Стронг и Кевин Карплус поняли, что алгоритм в физическом смысле аналогичен записи отклонений струны в фиксированной точке с течением времени, а фильтр характеризует потерю струной энергии за один период. Джулиус О. Смит [ccrma.stanford.edu/~jos/] и другие исследователи обобщили идею алгоритма до метода цифрового волновода, который также можно применять для синтеза духовых и мембранных инструментов. Первый набор расширений и обобщений был представлен в работе 1982 года на международной конференции компьютерной музыки в Венеции, а также опубликован с дополнениями в 1983 году в журнале компьютерной музыке, в статье «Extensions of the Karplus Strong Plucked String Algorithm», за авторством Дэвида Яффе и Джулиуса О. Смита.[1]

Алекс Стронг создал более совершенную модификацию с использованием волновых таблиц для синтеза щипковых инструментов, опубликованную в виде патента.

Напишите отзыв о статье "Алгоритм Карплуса-Стронга"

Примечания

Литература

  • (1983) «[static1.1.sqspcdn.com/static/f/1195073/15927045/1326030818550/Jaffe-Smith-Extensions-CMJ-1983.pdf?token=jBAicC7FH9EIwp3LPLGs7NE%2BOjo%3D Extensions of the Karplus-Strong Plucked String Algorithm]». Computer Music Journal (MIT Press) 7 (2): 56–69. DOI:10.2307/3680063.
  • Moore F. Richard. Elements of Computer Music. — Upper Saddle River: Prentice-Hall. — ISBN 0-13-252552-6.

Ссылки

  • [ccrma.stanford.edu/~jos/pasp/Karplus_Strong_Algorithm.html The Karplus-Strong Algorithm]
  • [ccrma.stanford.edu/~jos/Mohonk05/Karplus_Strong_Algorithm.html Sound Examples]
  • [www.freesound.org/browse/tags/karplus-strong/ More sound examples under CC license]
  • [lab.andre-michelle.com/karplus-strong-guitar Flash application implementing a guitar]
  • [www.jaffe.com David A. Jaffe’s music, including sound examples]


Отрывок, характеризующий Алгоритм Карплуса-Стронга

– Элен! – сказал он вслух и остановился.
«Что то такое особенное говорят в этих случаях», думал он, но никак не мог вспомнить, что такое именно говорят в этих случаях. Он взглянул в ее лицо. Она придвинулась к нему ближе. Лицо ее зарумянилось.
– Ах, снимите эти… как эти… – она указывала на очки.
Пьер снял очки, и глаза его сверх той общей странности глаз людей, снявших очки, глаза его смотрели испуганно вопросительно. Он хотел нагнуться над ее рукой и поцеловать ее; но она быстрым и грубым движеньем головы пeрехватила его губы и свела их с своими. Лицо ее поразило Пьера своим изменившимся, неприятно растерянным выражением.
«Теперь уж поздно, всё кончено; да и я люблю ее», подумал Пьер.
– Je vous aime! [Я вас люблю!] – сказал он, вспомнив то, что нужно было говорить в этих случаях; но слова эти прозвучали так бедно, что ему стало стыдно за себя.
Через полтора месяца он был обвенчан и поселился, как говорили, счастливым обладателем красавицы жены и миллионов, в большом петербургском заново отделанном доме графов Безухих.


Старый князь Николай Андреич Болконский в декабре 1805 года получил письмо от князя Василия, извещавшего его о своем приезде вместе с сыном. («Я еду на ревизию, и, разумеется, мне 100 верст не крюк, чтобы посетить вас, многоуважаемый благодетель, – писал он, – и Анатоль мой провожает меня и едет в армию; и я надеюсь, что вы позволите ему лично выразить вам то глубокое уважение, которое он, подражая отцу, питает к вам».)
– Вот Мари и вывозить не нужно: женихи сами к нам едут, – неосторожно сказала маленькая княгиня, услыхав про это.
Князь Николай Андреич поморщился и ничего не сказал.
Через две недели после получения письма, вечером, приехали вперед люди князя Василья, а на другой день приехал и он сам с сыном.
Старик Болконский всегда был невысокого мнения о характере князя Василья, и тем более в последнее время, когда князь Василий в новые царствования при Павле и Александре далеко пошел в чинах и почестях. Теперь же, по намекам письма и маленькой княгини, он понял, в чем дело, и невысокое мнение о князе Василье перешло в душе князя Николая Андреича в чувство недоброжелательного презрения. Он постоянно фыркал, говоря про него. В тот день, как приехать князю Василью, князь Николай Андреич был особенно недоволен и не в духе. Оттого ли он был не в духе, что приезжал князь Василий, или оттого он был особенно недоволен приездом князя Василья, что был не в духе; но он был не в духе, и Тихон еще утром отсоветывал архитектору входить с докладом к князю.
– Слышите, как ходит, – сказал Тихон, обращая внимание архитектора на звуки шагов князя. – На всю пятку ступает – уж мы знаем…
Однако, как обыкновенно, в 9 м часу князь вышел гулять в своей бархатной шубке с собольим воротником и такой же шапке. Накануне выпал снег. Дорожка, по которой хаживал князь Николай Андреич к оранжерее, была расчищена, следы метлы виднелись на разметанном снегу, и лопата была воткнута в рыхлую насыпь снега, шедшую с обеих сторон дорожки. Князь прошел по оранжереям, по дворне и постройкам, нахмуренный и молчаливый.
– А проехать в санях можно? – спросил он провожавшего его до дома почтенного, похожего лицом и манерами на хозяина, управляющего.
– Глубок снег, ваше сиятельство. Я уже по прешпекту разметать велел.
Князь наклонил голову и подошел к крыльцу. «Слава тебе, Господи, – подумал управляющий, – пронеслась туча!»
– Проехать трудно было, ваше сиятельство, – прибавил управляющий. – Как слышно было, ваше сиятельство, что министр пожалует к вашему сиятельству?
Князь повернулся к управляющему и нахмуренными глазами уставился на него.
– Что? Министр? Какой министр? Кто велел? – заговорил он своим пронзительным, жестким голосом. – Для княжны, моей дочери, не расчистили, а для министра! У меня нет министров!
– Ваше сиятельство, я полагал…
– Ты полагал! – закричал князь, всё поспешнее и несвязнее выговаривая слова. – Ты полагал… Разбойники! прохвосты! Я тебя научу полагать, – и, подняв палку, он замахнулся ею на Алпатыча и ударил бы, ежели бы управляющий невольно не отклонился от удара. – Полагал! Прохвосты! – торопливо кричал он. Но, несмотря на то, что Алпатыч, сам испугавшийся своей дерзости – отклониться от удара, приблизился к князю, опустив перед ним покорно свою плешивую голову, или, может быть, именно от этого князь, продолжая кричать: «прохвосты! закидать дорогу!» не поднял другой раз палки и вбежал в комнаты.
Перед обедом княжна и m lle Bourienne, знавшие, что князь не в духе, стояли, ожидая его: m lle Bourienne с сияющим лицом, которое говорило: «Я ничего не знаю, я такая же, как и всегда», и княжна Марья – бледная, испуганная, с опущенными глазами. Тяжелее всего для княжны Марьи было то, что она знала, что в этих случаях надо поступать, как m lle Bourime, но не могла этого сделать. Ей казалось: «сделаю я так, как будто не замечаю, он подумает, что у меня нет к нему сочувствия; сделаю я так, что я сама скучна и не в духе, он скажет (как это и бывало), что я нос повесила», и т. п.
Князь взглянул на испуганное лицо дочери и фыркнул.
– Др… или дура!… – проговорил он.
«И той нет! уж и ей насплетничали», подумал он про маленькую княгиню, которой не было в столовой.
– А княгиня где? – спросил он. – Прячется?…
– Она не совсем здорова, – весело улыбаясь, сказала m llе Bourienne, – она не выйдет. Это так понятно в ее положении.
– Гм! гм! кх! кх! – проговорил князь и сел за стол.
Тарелка ему показалась не чиста; он указал на пятно и бросил ее. Тихон подхватил ее и передал буфетчику. Маленькая княгиня не была нездорова; но она до такой степени непреодолимо боялась князя, что, услыхав о том, как он не в духе, она решилась не выходить.
– Я боюсь за ребенка, – говорила она m lle Bourienne, – Бог знает, что может сделаться от испуга.
Вообще маленькая княгиня жила в Лысых Горах постоянно под чувством страха и антипатии к старому князю, которой она не сознавала, потому что страх так преобладал, что она не могла чувствовать ее. Со стороны князя была тоже антипатия, но она заглушалась презрением. Княгиня, обжившись в Лысых Горах, особенно полюбила m lle Bourienne, проводила с нею дни, просила ее ночевать с собой и с нею часто говорила о свекоре и судила его.
– Il nous arrive du monde, mon prince, [К нам едут гости, князь.] – сказала m lle Bourienne, своими розовенькими руками развертывая белую салфетку. – Son excellence le рrince Kouraguine avec son fils, a ce que j'ai entendu dire? [Его сиятельство князь Курагин с сыном, сколько я слышала?] – вопросительно сказала она.