Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, McSeem2, Вы писали:
MS>>А там можно делать такие плагины, которые берут сигнал ASIO и используются в качестве источников? Ну и еще, первое, что бросается в глаза — выход один (Master), а мне надо много.
V>Вход ASIO есть. Насчет много выходов... А где взять много выходов у компа?
Да полно! Например, у Saffire Pro-40 их 20 штук — 2 монитора, 8 линейных, 2 SPDIF и 8 ADAT. И входов тоже 20. Девайс купил за 300$.
V>Именно, тупое перемножение и ФНЧ. Возможно, частоту среза этого ФНЧ придется корректировать для низких нот, ибо там частота среза должна быть где-то 20-40 Гц, что маловато для верхней струны.
Понятно. Но для начальной инициализации осцилятора надо все равно делать pitch detection, пусть не очень точно, скажем, +/-20 центов. Или как-то можно еще?
V>Настроить ФАПЧ и схему, им управляющую (помнишь "грубый детектор"), надо так, чтобы ФАПЧ осуществлял захват на уровне управляющего сигнала в районе 0-ля +- (ровно 90 градусов фаза). В этом случае совсем жестко привязывать амплитуды не надо будет, пусть обычный компрессор стоит на входе.
Вопрос про VCO — какова должна быть примерная характеристика вольтаж-частота? Скажем, на выходе детектора +-1, ноль соответствует синфазности. В каком диапазоне менять частоту?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>Понятно. Но для начальной инициализации осцилятора надо все равно делать pitch detection, пусть не очень точно, скажем, +/-20 центов. Или как-то можно еще?
Ну я же рассказывал как приближенно можно отдетектить частоту. Достаточно приблизиться хотя бы на пол-октавы, далее ФАПЧ поймает сам.
MS>Вопрос про VCO — какова должна быть примерная характеристика вольтаж-частота? Скажем, на выходе детектора +-1, ноль соответствует синфазности. В каком диапазоне менять частоту?
Это и есть т.н. "жесткость" ФАПЧ. Чем больше отклонение частоты на единицу уровня управляющего сигнала, тем сильнее обратная связь, но со всеми вытекающими, так то: более сильные переходные процессы, срыв на другие гармоники и т.д. Этот параметр лучше подобрать экспериментально.
В общем, у тебя будет схема грубого определения частоты. Она будет ошибаться на пол-октавы примерно после самой лучшей настройки. Т.е. в богатом гармониками сигнале скажет что частота чуть выше, в бедном пусть скажет что чуть ниже, ну чтобы в среднем было неплохо. Итого, исходное значение величины обратной связи таково, чтобы ФАПЧ отыгрывал этот диапазон с небольшим запасом. Реально потом величина обратной связи будет в 2-5 раз больше, но управляющий сигнал все-равно надо "обрезать" так, чтобы не выскакивать за заданный диапазон и не ловить другие гармоники.
Есть еще соображения, но они чисто умозрительные. Во-первых, фильтр ФНЧ управляющего сигнала в ФАПЧ лучше делать 1-го порядка, чтобы не мучаться с переходными процессами. Частота среза этого фильтра, по-идее, должна зависеть от частоты ловимой ноты (уже писал). Но так же, как мне кажется, частота среза должна зависеть от уровня входного сигнала. Пусть чем сигнал тише, тем меньше частота среза, т.е. ФАПЧ будет как бы "запоминать" ноту, изменяя частоту среза от десятков герц до менее одного герца в конце звучания, когда звук совсем тихий.
Че-то я вообще быстрой смены фазы не услышал, вполне чисто на любых пайплайнах все три приведенные. Вот прогнал через один из своих пресетов: http://www.realmusic.ru/songs/787268/
Здравствуйте, vdimas, Вы писали:
V>Ну я же рассказывал как приближенно можно отдетектить частоту. Достаточно приблизиться хотя бы на пол-октавы, далее ФАПЧ поймает сам.
Ну, я планирую сначала фильтр, потом посчитать автокорреляцию в районе переходов через 0. После фильтра этих переходов должно быть не много. Это должно быть весьма надежно. Мне главное, чтобы не было ошибок на октаву.
MS>>Вопрос про VCO — какова должна быть примерная характеристика вольтаж-частота? Скажем, на выходе детектора +-1, ноль соответствует синфазности. В каком диапазоне менять частоту?
V>Это и есть т.н. "жесткость" ФАПЧ. Чем больше отклонение частоты на единицу уровня управляющего сигнала, тем сильнее обратная связь, но со всеми вытекающими, так то: более сильные переходные процессы, срыв на другие гармоники и т.д. Этот параметр лучше подобрать экспериментально.
Понятно, спасибо. Я понимаю, что уже достал, но давай еще раз, на пальцах. Вот у меня есть осцилятор. Я его инциализирую начальной частотой (неточной). Далее, сигнал с выхода детектора находится, скажем, в диапазоне +/- 1, а осцилятор управляется, скажем, диапазоном от 80 до 1200, то есть, грубо говоря, просто в герцах. Не вполне понятно, что делать с выходом детектора, как именно его масштабировать? Или сигнал с детектора должен плавно инкрементировать/декрементировать частоту осцилятора во времени? Меня вот что смущает — на выходе детектора у нас фактически синус с частотой, равной разности частот между опорным сигналом и осцилятором. И как-то я не очень представляю, как именно этот синус должен управлять осцилятором.
Синий — опорный сигнал, я его генерирую типа так:
0.5*sin(p) + 0.4*sin(2*p*1.01) + 0.3*sin(3*p*1.01) + 0.2*sin(4*p*1.01) + 0.2*sin(5*p*1.01)
Зеленый — синус с осцилятора, красный — результат перемножения, черный — после фильтра.
Мне, кстати, очень понравилось, как работает gaussian blur в качестве ФНЧ, я о нем вот здесь писал: http://www.kvraudio.com/forum/viewtopic.php?t=294019
У него очень быстрый переходный процесс и очень хорошая, плавная ФЧХ.
V>Есть еще соображения, но они чисто умозрительные. Во-первых, фильтр ФНЧ управляющего сигнала в ФАПЧ лучше делать 1-го порядка, чтобы не мучаться с переходными процессами. Частота среза этого фильтра, по-идее, должна зависеть от частоты ловимой ноты (уже писал). Но так же, как мне кажется, частота среза должна зависеть от уровня входного сигнала. Пусть чем сигнал тише, тем меньше частота среза, т.е. ФАПЧ будет как бы "запоминать" ноту, изменяя частоту среза от десятков герц до менее одного герца в конце звучания, когда звук совсем тихий.
Это уже более продвинутый этап. Сейчас мне главное — понять, как в принципе должен реагировать осцилятор на сигнал с детектора, чтобы получилась ООС.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, vdimas, Вы писали:
V>Че-то я вообще быстрой смены фазы не услышал, вполне чисто на любых пайплайнах все три приведенные.
Я был неправ. Эффект ярко проявляется на высоких ладах, особенно после 12-го. Вот как он звучит после ФНЧ-overgain60dB-clipping-ФНЧ: http://antigrain.com/hex_project/sample_above_12th_hex_mag_distorted.mp3
Ну полная лажа на мой незатейливый слух! Ну просто слышно как вторая гармоника вертится. Это — один плюк на одной струкне.
Кстати, чисто в знак признательности за консультации — могу подарить безвоздмездно (то есть бесплатно) девайс MOTU 8pre. Вышлю тоже бесплатно. 8 line/mic входов (комбо), два линейных выхода, два на наушники и еще 8 ADAT по оптике. До 96kHZ sample rate. Подключается по Firewire. Просто мне уже не хватает выходов — мне надо как минимум 6+6+2, а в этом 8pre — всего 12. Девайс полностью рабочий, но я был по-началу резко недоволен им из за глючности виндовых драйверов под x64. Но сейчас ситуация изменилась, они выпустили два апдейта и нареканий нет. Но теперь я купил другой девайс, а этот просто валяется без дела. А может и пользу принести...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Исключил только первый ревербератор, который был до дисторшена, ибо в исходном звуке собственной реверберации достаточно. Похоже, звукосниматель был близко к струне. Там же в мыле есть график АЧХ типового резонансного ФНЧ, который стоит перед дисторшеном. Вот этот резонанс добавляет "певучести". А для большего "размазывания" фаз и большей певучести можно ставить еще хорус. Только надо помнить, что хорусы/фленжеры/фейзеры перед дисторшеном накручивают на очень небольшую глубину эффекта. Т.е. обчно без дисторшена на слух подбирают требуемую окраску (величину задержки, частоту и глубину модуляции). Затем включают дисторшен, и уменьшают коэф. обратной связи до тех пор, пока не пропадут всякие неприятные призвуки.
И насчет того резонансного фильтра. Я его делал как-то управляемым, т.е. управлял с того самого грубого определителя частоты, т.е. он как бы следящий получался. Настроил, чтобы следил за 2-й гармоникой. Ну очень даже неплохо для соляков выходило. Вот эти все повизгивания на октаву выше и прочие "шалости".
MS>Кстати, чисто в знак признательности за консультации — могу подарить безвоздмездно (то есть бесплатно) девайс MOTU 8pre. Вышлю тоже бесплатно. 8 line/mic входов (комбо), два линейных выхода, два на наушники и еще 8 ADAT по оптике. До 96kHZ sample rate. Подключается по Firewire. Просто мне уже не хватает выходов — мне надо как минимум 6+6+2, а в этом 8pre — всего 12. Девайс полностью рабочий, но я был по-началу резко недоволен им из за глючности виндовых драйверов под x64. Но сейчас ситуация изменилась, они выпустили два апдейта и нареканий нет. Но теперь я купил другой девайс, а этот просто валяется без дела. А может и пользу принести...
Спасибо, но пока отложим. У меня в планах на светлое будущее есть, конечно, мысль заняться всем этим плотнее. Но последние годы я подхожу к станку настолько нерегулярно, что будет так же жаль валяющийся неплохой девайс, но уже у меня. Лучше отдать тому, кто будет его более-менее регулярно юзать. Но буду иметь ввиду, если что.
Здравствуйте, McSeem2, Вы писали:
MS>Ну, я планирую сначала фильтр, потом посчитать автокорреляцию в районе переходов через 0. После фильтра этих переходов должно быть не много. Это должно быть весьма надежно. Мне главное, чтобы не было ошибок на октаву.
Все асбсолютно так, только с поправками. В который раз даю всю схему. Она такая же как у тебя, но все-таки двухтактная
1. На весь диапазон нужен будет фильтр ФНЧ с небольшим спадом, где-то 3ДБ на октаву, иначе высокие ноты будут совсем задавлены и точности не хватит.
2. кол-во переходов через ноль считать не надо, ничего не выйдет с точностью и быстродействием. Надо подавать на сглаживатель (ФНЧ управляющего сигнала) величину 1/период. Точный период можно подсчитывать через интерполяцию, если брать хотя бы пару отсчетов до 0-ля и пару после 0-ля (по 4-м точкам).
3. Ввиду низкой крутизны склона, ты таким образом получишь лишь некое приближение, где +- октава — это нормально. Но!
4. Этим приближением ты можешь настроить точно такую же вторую схему, но уже с крутизной фильтра 6ДБ на октаву, и точно так же вычисляя периоды, получишь уже очень хорошее приближение к тону основной гармоники.
Итого. Первый контур построен на статическом ФНЧ 3 ДБ на октаву. Второй — следящий, на ФНЧ со склоном 6 ДБ минимум.
В принципе, учитывая, что чем громче сигнал, тем больше в нем обычно гармоник, подмешивая огибающую громкости с нужным знаком можно компенсировать "вранье" этого сигнала, когда он показывает более высокие частоты из-за большого числа гармоник сразу после щипка.
Вот этим результирующим более точным сигналом уже можно управлять, например, частотой резонансного ФНЧ, которые стоят перед преобразователями спектра. Или просто полосовым-резонансным фильтром, после которого через триггер шмидта можно получать прямоугольный сигнал (это некоторые соло-примочки так делают). Этой же огибающей можно управлять окрашивающим фильтром после преобразователя спектра (на пару октав выше надо настраивать). Этот же сигнал можно подмешивать к огибающей амплитуды и подавать на квакушки, получается тоже очень неплохо.
Ну и наконец (повторюсь), этим же сигналом можно настроить диапазон ФАПЧ, который будет генерить импульсы для сустейна.
MS>Понятно, спасибо. Я понимаю, что уже достал, но давай еще раз, на пальцах. Вот у меня есть осцилятор. Я его инциализирую начальной частотой (неточной). Далее, сигнал с выхода детектора находится, скажем, в диапазоне +/- 1, а осцилятор управляется, скажем, диапазоном от 80 до 1200, то есть, грубо говоря, просто в герцах. Не вполне понятно, что делать с выходом детектора, как именно его масштабировать? Или сигнал с детектора должен плавно инкрементировать/декрементировать частоту осцилятора во времени?
Нет, не инкрементировать, а задавать смещение относительно некоей дефолтной. В принципе, можно и инкрементировать (частоты в фазы и обратно переходят легко), но это будет более сложная САУ с ПИД, для которой заколебешься расчитывать фильтр обратной связи, ибо там простым ФНЧ уже не обойдешься. Хотя, если есть интерес...
MS>Меня вот что смущает — на выходе детектора у нас фактически синус с частотой, равной разности частот между опорным сигналом и осцилятором. И как-то я не очень представляю, как именно этот синус должен управлять осцилятором.
Правильно, синус, если ФАПЧ не подхватил частоту. Этот синус, изменяя частоту генератора ФАПЧ должен превратиться в некий постоянный уровень, который пропорционален разности частот генератора на управляющем уровне 0 и реальной захваченной частоты. Если синус так и продолжает идти, значит либо ФАПЧ ожидает частоту не в том диапазоне, т.е. размаха этого синуса не хватает для сдвига частоты (вот тут можно подобрать усиление этой обратной связи, т.е. коэф. м/у уровнем и сдвигом частоты). Либо, у ФНЧ управляющего сигнала очень низкая частота среза, т.е. он просто не успевает подхватить частоту, ибо разностный синус лежит далеко за частотой среза этого ФНЧ. Помнишь я тебе говорил, что частоту среза ФНЧ управляющего сигнала придется регулировать в зависимости от диапазона. Регулировать, очевидно, можно тем же сигналом с системы грубого определения частоты.
MS>Кстати говоря, ты абсолютно прав — много гармоник для детектора не помеха, вот я тут полчаса потратил на эмуляцию:
Умножение синусоид раскладывается на сумму разностных и суммарных. Суммарные отфильтровываются легко. С разностными проблемнее. Т.е. близкие гармоники — помеха, ибо разность частот может лежать в пределах ФНЧ управляющего сигнала. Но гармоники струны — это 2,3,4.. и довольно легко будет для каждой такой частоты установить срез ФНЧ управляющего сигнала так, чтобы уже ближайшая гармоника была до фени.
Запостил, прочитал, и не уверен что понятно написал насчет принципа действия ФАПЧ.
Откуда вообще берется постоянный управляющий уровень? Дело в том, что после перемножения синусоиды саму на себя (считаем, что мы уже поймали частоту), мы получим синусоиду в 2 раза большей частоты. Но! В зависимости от разности фаз будет постоянная составляющая. +-90 градусов — это 0-я постоянная составляющая. 0 или 180 градусов — это +1 или -1. Т.е., чем больше коэф. обратной связи ФАПЧ, тем более точно он подберется к +90 или -90 градусов (зависит от знака обратной связи), т.е. более точно вычислит фазу. В любом случае, зная коэф обратной связи можно по устоявшемуся уровню управляющего сигнала точно определить разность фаз опорной синусоиды и входного сигнала, то бишь точно узнать фазу входного сигнала. Что нам и требуется.
я чего хотел спросить :
есть ли на современных синтезаторах типа коржа / ямахи такая функция :
я набираю на клаве какую-то мелодию, и она тут же появляется в нотном варианте на встроенном экране
после чего я например могу эту мелодию:
1. сохранить
2. записать на внешний носитель в формате миди или мп3
3. прокрутить по новой
если есть, то от скольки стОят такие синтезаторы ?
Здравствуйте, vdimas, Вы писали:
V>Правильно, синус, если ФАПЧ не подхватил частоту. Этот синус, изменяя частоту генератора ФАПЧ должен превратиться в некий постоянный уровень, который пропорционален разности частот генератора на управляющем уровне 0 и реальной захваченной частоты. Если синус так и продолжает идти, значит либо ФАПЧ ожидает частоту не в том диапазоне, т.е. размаха этого синуса не хватает для сдвига частоты (вот тут можно подобрать усиление этой обратной связи, т.е. коэф. м/у уровнем и сдвигом частоты). Либо, у ФНЧ управляющего сигнала очень низкая частота среза, т.е. он просто не успевает подхватить частоту, ибо разностный синус лежит далеко за частотой среза этого ФНЧ. Помнишь я тебе говорил, что частоту среза ФНЧ управляющего сигнала придется регулировать в зависимости от диапазона. Регулировать, очевидно, можно тем же сигналом с системы грубого определения частоты.
Спасибо! Я обязательно разберусь с этими делами. Мой источник непонимания был в том, что ФАПЧ в своей простейшей имплементации не лочит фазу, а только частоту. Ты все прекрасно объяснил, спасибо еще раз! Думаю, что подогнать фазу тоже вполне можно. Да, постоянный уровень с детектора-фильтра после захвата дает информацию о фазе. Но этот уровень очень непросто сопоставить с фазой — он зависит от уровней сигналов и спектра. Просто надо устремить систему к тому, чтобы на выходе фильтра был всегда ноль — тогда и фаза залочится. На этих выходных я забухал с приятелями и нифига не работал. Вот только сейчас попробовал простейшую эмуляцию: http://antigrain.com/hex_project/pll_test1.exe
К моему удивлению оказалось, что система очень-очень критична к параметрам. Например, с фильтрами 3-го и более порядков — не работает вообще. Более-менее стабильный вариант получился на каскаде из двух простейших однополюсных фильтров. Весь цикл таков:
struct one_pole_lpf
{
one_pole_lpf(double a_) { a = a_; b = 1.0 - a; z = 0; };
double process(double in) { z = (in * b) + (z * a); return z; }
double a, b, z;
};
В общем, ФАПЧ — это в основном подбор правильных параметров под конкретную задачу. Смущает вот какой момент — для захвата требуется 10-20 периодов сигнала — многовато будет. Хотя, если начальная частота определена довольно точно, то быстрее.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, vdimas, Вы писали:
V>Исключил только первый ревербератор, который был до дисторшена, ибо в исходном звуке собственной реверберации достаточно. Похоже, звукосниматель был близко к струне. Там же в мыле есть график АЧХ типового резонансного ФНЧ, который стоит перед дисторшеном. Вот этот резонанс добавляет "певучести". А для большего "размазывания" фаз и большей певучести можно ставить еще хорус. Только надо помнить, что хорусы/фленжеры/фейзеры перед дисторшеном накручивают на очень небольшую глубину эффекта. Т.е. обчно без дисторшена на слух подбирают требуемую окраску (величину задержки, частоту и глубину модуляции). Затем включают дисторшен, и уменьшают коэф. обратной связи до тех пор, пока не пропадут всякие неприятные призвуки.
Мне до всего этого еще очень далеко. Я же еще не настоящий электросварщик...
Насчет "кручения высоких гармоник" и эффекта "собственной реверберации" — да, гексафонические катушки довольно близко к струнам, иначе сигнал слабый и cross-talk очень большой. И еще, они очень близко к мосту. Но такой эффект — это свойство самой струны, поскольку наблюдается и на графтековских пьезо-седлах тоже. А так же и на хамбакере у грифа, но в меньшей степени, но хамбакеры вообще дают очень жирный звук из за гигантской индуктивности.
Кстати, можно попросить прогнать через твои примочки звук с пьезо? Мне просто надо понять — эти пьезо-пикапы вообще годны для эффектов или они только для эмуляции акустического звука? Дело в том, что сустейн-драйверы для магнитных пикапов — штука опасная, из за прямого ЭМ фидбэка начинается жуткий самовозбуд. А для пьезо — все пофиг по понятным причинам.
MS>>Хотя, на больших аккордах по-парный микс струн с последующиим дисторшеном звучит прикольно: MS>>http://antigrain.com/hex_project/sample_pair_mix_distorted_chords_hex_mag.mp3
V>Ну это вообще неподражаемо, согласен.
Смеешься надо мной убогим? Это чисто быдло-бреньк с быдло-клиппингом. Но если серьезно, то я действительно чувствую некий серьезный потенциал именно в полифонике. Просто до недавнего времени это было накладно и эффект/стоимость был мизерным — 6 параллельных хпрдварных примочек для одной гитары как-то не комильфо. А с приходом дешевых многоканальных девайсов, в софте можно хоть черта лысого озвучить — по всем 6 каналам и главное — с удобнвм управлением.
V>И насчет того резонансного фильтра. Я его делал как-то управляемым, т.е. управлял с того самого грубого определителя частоты, т.е. он как бы следящий получался. Настроил, чтобы следил за 2-й гармоникой. Ну очень даже неплохо для соляков выходило. Вот эти все повизгивания на октаву выше и прочие "шалости".
Стасибо! Блин, мне до этого еще далеко. Но глаза боятся, руки делают, может и дойду когда-нибудь, особенно при поддержке.
Спасибо за самплы, я просто еще раз убедился, что гитару сделал более-менее нормально. И даже хам с магнитных пикапов не так уж и страшен
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Здравствуйте, McSeem2, Вы писали:
MS>В общем, ФАПЧ — это в основном подбор правильных параметров под конкретную задачу. Смущает вот какой момент — для захвата требуется 10-20 периодов сигнала — многовато будет. Хотя, если начальная частота определена довольно точно, то быстрее.
10-20 — это даже круто. Но это не обсуждал, т.к. этот вопрос как бы не критичен, ведь в самом начале звучания обратная поддержка не нужна вовсе.
Здравствуйте, McSeem2, Вы писали:
MS>Все-таки, винда остой.
Это ещё что. Вот мне абсолютно не нравится, как в новой интерфейсе винды (начина с Висты) отображаются некоторые элементы, те же деревья например. Ну не нравятся. Хорошо, можно поставить классический вид. Но! тут появляются другие косяки
Обычный диалог с чек-боксами и радиокнопками. Стандартный. И что же? Стоит провести мышкой над контролам, они начинают мерцать! Какого икс спрашивается?
хрень полная.
Тут ещё поставил IE9. Так вот, окно для отправки баг репортов в классическом режиме — само повод написать баг репорт. Посмотрите, кому интересно
Здравствуйте, McSeem2, Вы писали:
MS>Все-таки, винда остой. Да, все красиво, все просто, даже иногда удобно. Но вот почему иногда, совершенно непредсказуемо, эта ваша винда прерывает поток данных? Все с большим запасом — Firewire, шина, проц. Примерно с десятикратным запасом. Но тем не менее, при обработке аудио-потоков возникают "пропукивания". Вот просто банально винда зависает в ядре на 10 миллисекунд и держит все! При этом 4 ядра! Но шина одна, да. Вы представляете, что такое 10 миллисекунд? — это гигантское время. Чего такого можно делать в ядре целых 10 миллисекунд?! На всякий случай, ситуация повторяется на самых разных конфигурациях. Люди! мне не нужен жесткий реал-тайм. Мне нужно просто, чтобы система не позволяла себе быдлить по 10 миллисекунд.
читал забавные мысли насчет планировщика процессов в новой винде — http://cbloomrants.blogspot.com/2010/09/09-12-10-defficiency-of-windows-multi.html возможно SetThreadIdealProcessor поможет в случае провалов и проблемы конфликта ресурсов
Так как если поток с максимальным приоритетом напарывается на то что его идеальный процессор обсели драйверы и они получают нереальный буст то вот они и щелчки.