
DIYFACTORY.RU |
ФОРУМ |
УЧАСТНИКИ |
ПОМОЩЬ |
КАЛЕНДАРЬ |
ПОИСК |
ГАЛЕРЕЯ |
ФАЙЛЫ |
ПРАВИЛА |
РЕПУТАЦИЯ
|
Здравствуйте Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
Страницы: (18) « Первая ... 4 5 [6] 7 8 ... Последняя » ( Перейти к первому непрочитанному сообщению ) | ![]() ![]() ![]() |
azot |
Дата 19.03.2008 - 19:48
|
Unregistered ќткуда: ![]() |
Да что вы к алиазингу прицепились)) Если устройство не претендует на точную эмуляцию аналоговости то в этом даже есть своя изюминка. Вспомните PPG который алиазит мама не горюй. Но мы его любим не только за это
![]() Демки послушал. Достаточно клево звучит. Характер звука как раз и напомнил ппг. Не знаю как будет с басом, но середина хорошая, мясистая и шершавая как наждачка. Сюда бы еще фильтр на ссм2044)))))) ...и в микс... |
|
Diz |
Дата 19.03.2008 - 20:25
|
Unregistered ќткуда: ![]() |
Постараюсь объяснить на пальцах.
Хоть интегратор и аналоговый, но сбрасывается из цифры. Все цифровые ошибки в частоте сброса вылезают в виде частотной модуляции. Для получения нужной частоты есть несколько путей. Первый вариант - делать ее кратной клоку, в этом случае ошибка увеличивается с ростом частоты и на высоких нотах становится значительной, но побочных компонентов в спектре не будет. Так сделано в Roland Juno. Второй вариант - не кратной клоку (аккумулятор с переполнением). Тогда каждый период будет завершаться либо на такт раньше, либо на такт позже, но в среднем частота будет иметь нужную точность независимо от клока (точность будет определяться разрядностью аккумулятора). Проблема в том, что последовательность округлений к тому или иному такту будет не случайной, а повторяющейся, периодической, что вылезает в спектре в виде побочных негармонических составляющих. Грубо говоря, частота постоянно скачет между соседними дискретными значениями так, чтобы в среднем дать нужную частоту. Но скачет слишком предсказуемо (пилообразно), давая палки (spurs) в спектре. Можно сделать так, чтобы эти скачки были непредсказуемыми, промодулировав частоту шумом. Уровень шума поднимется, но мусор в спектре заметно опустится. Если значение аккумулятора использовать не напрямую, а как индекс в таблице с волновой формой (и выводить уже значение из таблицы), то получится типичный цифровой осциллятор. В немузыкальном мире это зовется DDS (Direct Digital Synthesis). Третий вариант - выводить при помощи DDS наружу синусоиду, хорошо фильтровать, подавать на аналоговый компаратор, а фронт компаратора использовать для сброса интегратора. Вот тогда получится спектрально чистая и точная пила :-) До третьего варианта я не добрался (хотя и осознаю его преимущества), и собираюсь остановится на втором. В последней демке, кстати, звучал первый вариант. Мусор при высоких нотах не из-за aliasing-а, а из за слишком высокой дискретности частоты на ВЧ. Грубо говоря, вместо 4400 Гц мы можем вывести или 4000 и 4800 Гц (цифры с потолка), а скачки между этими значениями при работе LFO и слышны как "шум вертолета" :-) Это сообщение отредактировал Diz - 19.03.2008 - 20:27 |
|
vilager |
Дата 19.03.2008 - 21:46
|
Unregistered ќткуда: ![]() |
>Третий вариант - выводить при помощи DDS наружу синусоиду,
хорошо фильтровать, подавать на аналоговый компаратор, а фронт компаратора использовать для сброса интегратора. не уверен. как только начинается "хорошая фильтрация", начинаются приколы интегрирования, тоесть качания уровня, в конечном итоге блуждания фронта-спада компаратора. по сути - последствия алайзинга, вернее псевдо-... думаю, алайзинг можно существенно снизить заменив (как уже указывалось) ШИМ с фильтрами на ЦАПы. правда, цапы нужны серьёзные. хотя нужно, действительно, определиться - оставлять алайзинг или бороться с ним, если оставлять - то всё упрощается, чего с ветряными мельницами сражаться, если нет - придётся решать серьёзные проблемы. |
|
Diz |
Дата 19.03.2008 - 23:28
|
Unregistered ќткуда: ![]() |
Серьезные производители DDS-генераторов (например, AD) делают
на выходе синусоиду. А потом, если нужно получить прямоугольник для клока, рекомендуют несколько пассивных RC-фильтров и компаратор (часто на борту того же DDS-чипа). Хотя, казалось бы, вывести прямоугольник из DDS элементарно. Если имеется в виду ШИМ в моей схеме, то он не при чем, так как влияет лишь на опору интегрирования - на амплитуду, а не на частоту. А так, меня aliasing абсолютно не смущает - пусть будет :-) azot: А фильтр хочу по мотивам Муговской лестницы. Сейчас думаю насчет организации модуляции. Склоняюсь к нескольким слотам (5-6), с выбором source, destination и amount для каждого. Это сообщение отредактировал Diz - 19.03.2008 - 23:35 |
|
vilager |
Дата 20.03.2008 - 01:55
|
Unregistered ќткуда: ![]() |
>пассивных RC-фильтров
вот! пассивных. с ними меньше интеграторных приколов. >Если имеется в виду ШИМ в моей схеме, то он не при чем, так как влияет лишь на опору интегрирования - на амплитуду, а не на частоту. хе-хе, мы про разный алайзинг говорим) я про тот, что является ошибкой от работы двух параметров - частота (которая, конечно же, имеет свой алайзинг) и "амплитуда", тоесть скорость интегратора плюс переходные процессы от ШИМ+фильтрА. немного в тему: делал я как-то девайс, где использовалась подобная идея - ШИМ->фильтр->скорость интегратора. скорость была переменной и менялась скачкообразно. и вот эти "приколы фильтрации ШИМа"- переходные процессы - сильно портили картину. попытки задрать частоту шима повыше и посильнее зафильтровать были малоэффективны. и тогда я оставил всего-навсего единственную RC-цепочку и "отпустил" частоту, тоесть оставил фильтрацию неглубокой, даже пила нефильтрованная осталась. и всё пошло! вот эта неотфильтрованная пила оказалась стабилизирующим фактором, следом же стоит интегратор. а время переходных процессов значительно снизилось и произошло "размытие" переходов. |
|
Diz |
Дата 22.03.2008 - 10:13
|
Unregistered ќткуда: ![]() |
Мысль понятна - что-то в этом есть, буду иметь в виду.
Специально для любителей ломографии - процесс записи синта в огрызках :-) |
|
Diz |
Дата 24.03.2008 - 02:46
|
Unregistered ќткуда: ![]() |
Однако, сколько в процессе вылезает тонкостей !
Сегодня написал логику распознавания нескольких нажатых нот. Оказывается, в классических моносинтах обычно использовался либо high-note приоритет, либо low-note приоритет - звучит всегда либо самая высокая из зажатых клавиш, либо самая низкая. В Pro-52 (эмуляции Prophet-5) забавнее - при отпускании клавиши делается глайд к ближайшей нажатой. В итоге сделал стек на N нот и при отпускании глайд к предыдущей нажатой (а если она уже отпущена - то к ее предыдущей и так до конца стека). На мой дилетантский взгляд, весьма играбельно :-) |
|
vilager |
Дата 24.03.2008 - 20:22
|
Unregistered ќткуда: ![]() |
по-хорошему, неплохо бы сделать переключение режимов: правая мажоритарность, левая, последняя нажатая-отпущенная, ближайшая при отпускании, остаётся отпущенная... или ещё какой.
|
|
Diz |
Дата 25.03.2008 - 00:46
|
Unregistered ќткуда: ![]() |
В принципе, можно и другие режимы добавить по мере необходимости.
|
|
vilager |
Дата 30.04.2008 - 23:06
|
||
Unregistered ќткуда: ![]() |
однако да... правда, это не тонкости, а основополагающие моменты. сейчас решаю эту же задачу. таки получается, что надо контролировать ВСЕ ноты! для имитации классического аналога, вернее приёмов игры на нём, всегда надо отыскивать ноту крайнюю правую из нажатых, но ниже отпущенной. вот и получается, что надо держать под контролем все ноты, тоесть или вести учет нажатых-отпущенных с сортировкой по возрастанию или перебирать. я иду по второму варианту. дауж, в аналоге - один операционник - и всё. а в цифре - столько заморок...!) |
||
|
Diz |
Дата 1.05.2008 - 20:58
|
Unregistered ќткуда: ![]() |
Думаю, такой приоритет сделать несложно. Можно на каждую ноту отвести один бит - итого 16 байт на все ноты. При отпускании ноты сбрасываем бит
и ищем ближайший установленный слева (справа). Если процессор имеет команду типа nlz (подсчет кол-ва ведущих нулей), то вообще халява. PS Вот здесь хорошо написано про приоритеты: http://www.soundonsound.com/sos/oct00/articles/synthsec.htm Да и вообще весь цикл Synth Secrets стоящий. Это сообщение отредактировал Diz - 1.05.2008 - 23:03 |
|
vilager |
Дата 2.05.2008 - 20:50
|
Unregistered ќткуда: ![]() |
так и сделано - ноты в виде битов. даже ещё проще - 8 байт на 5 октав, больше не требуется.
|
|
vilager |
Дата 10.05.2008 - 23:00
|
Unregistered ќткуда: ![]() |
какие интересные исполнительские эффекты получаются, когда в программе получаются косяки)) в частности с сигналами "гейт" и "триггер". особенно понравилась ситуация, когда огибающая запускается при нажатии ноты и при отпускании, причём любой. техника игры резко возрастает!
![]() |
|
Diz |
Дата 11.05.2008 - 01:14
|
Unregistered ќткуда: ![]() |
Да уж. Когда писал стек сыгранных нот, промахнулся с границами стека - в итоге пошло играться все содержимое RAM :-) Любой авангадный музыкант
многое бы отдал за обладание таким инструментом. А что такое разрабатываешь, расскажи ? Я сейчас размышляю над интерфейсом. Думаю, что 180 потенциометров - это явный перебор, хехе. Склоняюсь к матрице 8x8, как в Dave Smith's Evolver. |
|
BSVi |
Дата 11.05.2008 - 08:34
|
Unregistered ќткуда: ![]() |
кстате. Насчет сброса осциляторов. А если использовать вариант
"Грубо говоря, частота постоянно скачет между соседними дискретными значениями так, чтобы в среднем дать нужную частоту. Но скачет слишком предсказуемо (пилообразно), давая палки (spurs) в спектре." из твоего описания, только выход завести на ФАПЧ и сделать врямя подстройки фапча больше длительности такта. получим точно нужную частоту с небольшими пульсациями. Эдакий частотный фильтр получается ) |
|
Diz |
Дата 11.05.2008 - 20:51
|
Unregistered ќткуда: ![]() |
В принципе, есть такая топология - DDS driven PLL. Не вникал в подробности,
но подозреваю, что это оно и есть. А вообще, проще всего собрать осцилляторы на FPGA (или CPLD), сделать клок этак 60 Мгц - и палки будут едва различимы на уровне шумов :-) |
|
vilager |
Дата 11.05.2008 - 21:10
|
||
Unregistered ќткуда: ![]() |
>Да уж. Когда писал стек сыгранных нот, промахнулся с границами стека - в итоге пошло играться все содержимое RAM :-) Любой авангадный музыкант многое бы отдал за обладание таким инструментом. помнится, когда-то очень давно сделал нечто подобное - подал такт от цифрового генератора случайных чисел (шума, иными словами) - на цифровой интерфейс, который выдавал CV на VCO синтезатора. грубо говоря, получился случайный выбор ноты со случайным периодом. ну это был музон!) для 87-го года это было авангардом однозначно) кстати, музыканты оценили, но мы играли исключительно рок, и применение эффект не нашёл. >А что такое разрабатываешь, расскажи ? мидирование сов. синтов, аналоговый модуляр, итд... в этом ключе. >Склоняюсь к матрице 8x8 не, я за регуляторы, переключатели, и чем их больше, тем лучше)) |
||
|
vilager |
Дата 11.05.2008 - 21:13
|
Unregistered ќткуда: ![]() |
> выход завести на ФАПЧ и сделать врямя подстройки фапча больше длительности такта.
вот тут видятся подвохи неслабые. для стабильной основной частоты проблем нет, но при фм модуляции грязь появится однозначно. проверено. >"Грубо говоря, частота постоянно скачет между соседними дискретными значениями так, чтобы в среднем дать нужную частоту. Но скачет слишком предсказуемо (пилообразно), давая палки (spurs) в спектре." а вот тут виден резон, пробовать надо. |
|
Diz |
Дата 17.05.2008 - 16:03
|
Unregistered ќткуда: ![]() |
Затормозился с глубиной модуляций.
Поясню на примере модуляции питча. Хочется, чтобы можно было задать и очень глубокую модуляцию (скажем, на весь диапазон питча), и очень небольшую (на 10 центов, например). При этом глубину модуляции задавать либо с лицевой панели энкодером, либо мидишным CC. Численное значение глубины модуляциии хотелось бы ограничить 0..127, 0- модуляции нет, 1-минимальная модуляция, 127 - максимальная, на весь диапазон. Но в этом случае значение 1 уже получается слишком грубым, это модуляция почти на полутон. Большой диапазон значений (0..6000) делать неразумно - по миди такое не примешь (если не объединить два CC), а энкодер на панели замучаешься крутить. Если сказать иначе, хочется получить большой диапазон с хорошим разрешением, не усложняя интерфейс. Вариантов вижу несколько: забить на большой диапазон; забить на удобство :-) ; делать по два регулятора - coarse и fine; ввести нелинейную зависимость глубины от поворота регулятора. |
|
vilager |
Дата 17.05.2008 - 23:48
|
Unregistered ќткуда: ![]() |
последний вариант имхо лучший.
|
|
![]() |
![]() ![]() ![]() |