|
|
|
|
У меня на выходе стояла RC-цепочка. Про искажения сигнала страшно подумать |
|
|
Здесь обсудили расчёт частот музыкального звукоряда. AnSi: почему не используете встроенный в 628 ЦАП Потому, что, как уже говорил выше, это будет не тон-генератор, а сэплер (выше так же давал очень полезную ссылку). Кстати, ЦАПа, в чистом виде, в 628 нет. Мне встречались два пути реализации: - цифровой код выводится на порты, а далее - резистивная матрица R-2R - используют ШИМ. Второй способ, мне кажется более оптимальным. Пока ещё не пробовал. Вернёмся к нашим тон-генератором. В данном случае, "трёхканальный" и "трёхголосный" - синонимы, поскольку многоголосность, это - способность воспроизводить одновременно некоторое количество нот. Относительно конкретного девайса, то, как показали эксперименты с МИДИ, 8-ми битным способом можно воспроизвести, с нормальной точностью звучания 2-3 октавы. Для большего диапазона, на верхних частотах, становится заметна погрешность. Применив 16-битную систему, я перекрыл весь диапазон миди-нот. На слух, правда, проверил только октав семь (по причине ограниченности клавиатуры, а изгаляться не было времени). Даже если края диапазона и имеют большую погрешность, их вряд ли, кто-нибудь играть будет. Если же использовать сэмплер, то им также нельзя перекрыть весь диапазон, просто меняя частоту "тактового генератора". Необходимо иметь несколько сэмплов (об этом в в/у книжке подробно написанно), что приведёт к необходимости большой памяти. Вряд ли удасться это запихнуть в контроллерные 2 килобайта. Есть задумка применить данную штуку, для драм-машинки. Опять-таки вопрос, как можно "выковырить" из вавки "чистый" звук? Помниться несколько лет назад, в журнале, нечто подобное было. Но там, кажись, на конечном этапе, программа, помимо самих сэмплов, добавляла свою служебную информацию, для МК. Может кто пробовал, и я ошибаюсь? AHTOXA: звучало очень прилично Как музыкальная шкатулка, не более. Демка, она и есть - демка. |
|
|
Короче говоря, промежуточный итог следующий: 8-ми битные версии отбрасываются. Для версии звонка, к часам, (условное название ) придётся пожертвовать памятью мелодий, поскольку таблицы нот (а это 256 строк) придётся разместить в памяти программ, а не описАть директивой EQU, как это сделано в 8-ми битной версии. Парадокс, но сам программный код увеличится не на много. А может, даже, и уменьшится. Для миди-версии, в принципе, всё работает. Есть, правда, небольшой глюк (касается всех версий), связанный, как полагаю, с опросом клавиатуры. Надо будет устранить. Что касаемо самого генератора, может кто всё-таки поможет с формантными фильтрами? Или, может, что-то другое, на выход, что б тембр был получше простого меандра? Ну, и надо подумать, по поводу увеличения голосов. А вообще-то, надо бы добавить восприятие команды Питч Бэнд (это, когда строй смещается). Надо умножать/делить коэффициенты. Что-то, я пока с таким не сталкивался. Разве только деление на 2. Кто поможет?
|
|
|
Gregory: Как музыкальная шкатулка, не более. Демка, она и есть - демка. Может, выложите для сравнения небольшой пример звучания Вашего устройства? |
|
|
to Gregory ЦАП прячется под названием "внутренний источник опорного напряжения". разрешение конечно маловато, но гармоники в разЫ снизятся(посмотрите свой сигнал на спектроанализаторе) я немного не в курсе музыкальных примочек - сэмплер "любит" прямоугольный сигнал или "чистый" тон без гармоник всё-же лучше??? мелодии(если много) вполне реально запихать во внешний епром(24Сххх) - цена реальная. хотелось-бы кратенько услышать алгоритм работы вашего "звонка", если я правильно понял из "вступления" вы генерите частоты тремя таймерами и затем выводите на три ноги контроллера??? - извините, разгребать чужие исходники лень тем более что можно "принцип" описать кратко в словах.
|
|
|
> поскольку таблицы нот (а это 256 строк) Достаточно таблицы из 12-и значений -- всего для одной октавы, самой низкой. Значения коэффициентов для других октав получаются элементарными делениями на 2. Код немного усложнится. Но вам, видимо, это будет в радость (вы же сами выбрали 628-й для данной задачи ). > с формантными фильтрами? Это предполагает цифровую обработку аудиопотока в реальном времени, что опять возвращает нас к вопросу об адекватности выбора. > Или, может, что-то другое, на выход, что б тембр был получше простого меандра? Из элементарного могу предложить генерацию тона с помощью 2-х (и более) генераторов меандра с кратными частотами (а лучше всего -- с неидеально кратными, чтобы появились мало-мальские биения, оживляющие звук). Вопрос о количестве одовременно звучащих тонов станет еще более актуальным... > когда строй смещается). А зачем это надо? Транспонировать мелодию или ее фрагменты можно в процессе ее подготовки. |
|
|
IDiod: ...самой низкой. Значения коэффициентов для других октав получаются элементарными делениями на 2. Либо не низкой, а высокой, либо не делением, а умножением . ИМХО. |
|
|
Мелкий: Либо не низкой, а высокой, либо не делением, а умножением . ИМХО. Не Низкая частота - длинный период. Его и делить |
|
|
AHTOXA: Низкая частота - длинный период. Его и делить А, ну, тады - да, тады - ой Просто, мне почему-то запомнилось, что в музыке определения "выше/ниже" относятся именно к частоте, а не к периоду ... |
|
|
AHTOXA: Может, выложите Сперва его надо до ума довести. AnSi: сэмплер "любит" прямоугольный сигнал Сэмплер "воспроизводит" заранее оцифрованные и записанные звуковые фрагменты - сэмплы. Поэтому, он "любит" качественный ЦАП и хорошие сэмплы. вполне реально запихать Как раз мелодии запихивать не обязательно. У меня поместилось три сложных и одна простая мелодии. Для будильника вполне хватит. Надоест, прошью другие. А вот сэмплы можно и попробовать. Я уже над этим думал. вы генерите частоты тремя таймерами Именно так. Только это уже как бы три отдельных мелодии, засинхронизированные между собой, и являющиеся тремя голосами одной песни. Это, что касаемо будильника. Где и когда будет звучать, известно заранее и сведено в таблицу. Главное достоинство, что составить её может человек абсолютно не владеющий программированием, но немного понимающий в нотной грамоте. Что же относительно варианта МИДИ, то там, по приходу команды NoteON, меандр соответствующей частоты появляется на первом свободном канале. Если все каналы уже заняты, он просто игнорируется. |
|
|
|
|