as32888 писал(а):А бывают ли ЦАПы и АЦП, которые могут работать с частотой дискретизации килогерц этак 800?
В микроконтроллере STM32F100 как раз такие. 12 бит.
А в STM32F103 -- одномегагерцовые. Тоже 12 бит.
А в atXmega и во всяких tms32f28xx -- двухмегагерцовые. И тоже 12 бит.
Ну а внешние так да, можно и гораздо шустрее.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Здравствуйте, уважаемые коты.
Воспроизводить одну ноту с помощью МК я научился - дергать ногой раз в полпериода, чего сложного-то. А вот как играть одновременно две ноты (то бишь аккорд по-научному)? Пробовал быстро чередовать частоты - фигня получается, а не звук.
Причем на выходе должны получаться именно прямоугольные импульсы, не синусоида. Такое вообще возможно с аккордами?
Enman, я "складывал" их программно с одного вывода - чередованием частот. Но это не то что нужно, я уже понял.
Аналоговое сложение мне не подходит по той причине, что мне на выходе нужен цифровой сигнал двух уровней - "0" и "1".
Кстати, ШИМ для этой цели не подойдет? Допустим, написать функцию амплитуды от двух частот и времени А=F(f1,f2,t) и по дискретным значениям t получать соответствующую А, которую потом "воспроизводить" с помощью ШИМа. Или расходы процессорного времени на вычисление этой функции будут настолько велики, что про это можно забыть?
Когда нечего сказать - лучше промолчать.
Где в моих постах хоть одно слово "хочу"? Я спрашивал, возможно ли то, что я задумал. И задумал я это не потому, что мне так захотелось, а потому что по-другому нельзя.
Какой-то непонятный выпад в мою сторону, будто я денег прошу или в гости набиваюсь.
Shutilla писал(а):Кстати, ШИМ для этой цели не подойдет? Допустим, написать функцию амплитуды от двух частот и времени А=F(f1,f2,t) и по дискретным значениям t получать соответствующую А, которую потом "воспроизводить" с помощью ШИМа. Или расходы процессорного времени на вычисление этой функции будут настолько велики, что про это можно забыть?
Именно так и нужно -- «получать соответствующую А». А уж дальше на «честный» ЦАП или на ШИМ-ЦАП -- уже не важно.
Времени достаточно, если на асме и очень аккуратно.
У Чана где-то есть на 45-той тини, если правильно помню, 6-голосый синтезатор.
По сути -- многоканальный DDS.
Таблица амплитуд синусоиды, шесть 24-битных фазовых аккумуляторов каждый со своей частотой. Частоты для каналов берутся из массива во флеше. Не midi-формат, но рядом.
Сумма каналов поступает на ШИМ.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Shutilla писал(а):Здравствуйте, уважаемые коты.
Воспроизводить одну ноту с помощью МК я научился - дергать ногой раз в полпериода, чего сложного-то. А вот как играть одновременно две ноты (то бишь аккорд по-научному)? Пробовал быстро чередовать частоты - фигня получается, а не звук.
Причем на выходе должны получаться именно прямоугольные импульсы, не синусоида. Такое вообще возможно с аккордами?
asteroid7 писал(а):
Ещё как возможно. Это 1 битный звук на Z80
Кошмар ! Услышав такое, аудиофил повесился. Лучшая иллюстрация того, что так делать можно, но не нужно, а нужно делать нормальный ЦАП
Хотя для современных слушателей современной "музыки", у которых завал частотки в ушах начинается уже за тремя килогерцами, может быть, это и есть самое то.
Shutilla писал(а):Здравствуйте, уважаемые коты.
Воспроизводить одну ноту с помощью МК я научился - дергать ногой раз в полпериода, чего сложного-то. А вот как играть одновременно две ноты (то бишь аккорд по-научному)? Пробовал быстро чередовать частоты - фигня получается, а не звук.
Причем на выходе должны получаться именно прямоугольные импульсы, не синусоида. Такое вообще возможно с аккордами?
Это уже не мелкие вопросы по цифровой технике, это уже нечто другое-проект целый.
Вообще если делать чередование частот, то уж точно не получится аккорд,а если вот с функцией делать, то получится.как было сказано выше- таблица с временными интервалами и поехали.
Обычное чередование частот не получится, поскольку само чередование частот даст скважность звучания одной из них 0.5, т.е. 1 часть времени занимает одна частота, другую часть времени - соответственно, другая. И это дополнительно искажает звук, который, вы, естественно, и услышали...
Не умеешь - не берись, но не взявшись не научишься...
Света писал(а):Аккорд - это сложный звук и никак там прямоугольного импульса не получится.
Мой первый компьютер был БК0010 (тактовая частота 3 МГц).
У него на динамик был выведен один бит.
Так вот для него существовал трехголосый музыкальный редактор, и он позволял
играть аккорды из трех нот на этот однобитный динамик.
Так что это возможно - играть на один бит аккорды, проверено!
Попробую поискать в архивах алгоритм. Потом отпишу.
А еще я делал для него дельта-сигма оцифровщик (тоже однобитный), и проигрывал
вообще музыку (Depeche Mod) на тот же динамик. Конечно, быстродействия не
хватало, и музыка прорывалась через сильное шипение, но играло вполне узнаваемо,
да и голос свой записывал, речь воспроизводилась вполне разборчиво.
Вот здесь можно почитать: http://bk0010.narod.ru/pashigorov/ , если интересно.
Пока искал, сообразил сам.
Вначале выбираешь наивысшую частоту ноты, ну пусть 2 кГц.
Она определит длительность импульса на выход для всех частот:
Т = 1/(2*2кГц) = 250 мкс.
То есть, на выход выдаем не меандр, а импульсы длительностью 250 мкс и
с периодом, соответствующим нужной частоте.
Суммирование голосов, надеюсь, понятно из рисунка: