После сборки различных эмуляторов кабинетов на БТ и ОУ, не устраивало звучание. Захотелось реализации плеера импульсов как во всех известных плагинах, и да на рынке есть такие железки как Pangaea, IRonCab и недавний CabZone и много других. Но почему то никто не спешил реализовать простейший IR плеер самостоятельно. И уже хочется толкнуть данную тему в массы, т.к. информации ничтожно мало, на русскоязычных форумах её нет от слова совсем.
В Pangaea, CabZone, IRonCab установлен DSP ADAU1701 в связке с МК STM32F405RGT6 по шине SPI и загрузкой импульса wav из Flash-карты в DSP, IRonCab два DSP ADAU1701.
Для теста (так дешевле чем разводить плату и заказ 10 плат) приобрел с ЧиДа платку по коду 9000433639, сам чип ADAU1701, EEPROM и запаял все навесы на неё, вышло чуть дороже, чем купить сразу готовое устройство RDC2-0027v2. Выбирал именно такую, чтоб влезла в будущем в G0124. Размеры основной платки 50х50мм, если спилить крепежные ушки.
Для связи и заливки прошивки приобрел модуль на Cypress CY7C68013A.
Подключил по I2C и подал на вход JFET 5150.
Немного изучив материал, можно понять специфику загрузки. Из WAV файла берутся значения амплитуд с помощью быстрого преобразования Фурье и в последующем загружается этот масcив в блок FIR фильтра DSP ADAU1701 в соответствии таблицы значения семплов. Сами значения можно получить несколькими способами
На сайте AMT http://s.shift-line.com/wav2fir/
Или с помощью Audacity->Инструменты->Экспорт данных сэмпла.
На выходе получится текстовой файл с массивами значений амплитуд, вот он то нам и нужен.
Можно также воспользоваться утилитой REW или выполнить преобразование Фурье в МК.
Данный массив загружаем в блок FIR ADAU1701, максимум можно загрузить в ADAU1701 - 940 семплов т.к. ограничены памятью в 1024 байт и как выяснилось в дальнейшим, только по SPI. (об этом ниже)
Вот собственно сам проект в Sigma Studio
Память подключена по i2C, т.к. по даташиту самозагрузку ADAU1701 поддерживает именно по данному интерфейсу.
Изначально на плате была установлена EEPROM M24C64 объемом 64 кбит, впоследствии заменил на M24M01-RMN6TP объемом 1 Мбит.
По даташиту на 1701 информацию так и не нашел, но опытным путем установил, что записать страницу более 32 Кбита нельзя, отсюда запись по I2C возможна только на EEPROM до 256 Кб. Отсюда получается что можно залисть только не более 240 семплов, но и этого достаточно как оказалось чтоб получить вполне приличный звук.
В даташите старшего собрата ADAU1452 сказано, что передача по I2C до 512Кбит, по SPI до 64Мбит (т.е. используемая память до 8 Мб).
В планах сделать шилд для данной платы для оформления в педаль, также связать STM32 с Flash картой, для последующего хранения импульсов.
Поправлюсь, опечатка. Не утилитой REW, а rePhase. Так же можно реализовать задержку (delay) до 20мс, фленджер, хорус. Для большей задержки нужен чип на больший объем инструкций вроде ADAU 1452, на нем также можно реализовать Distortion, кому интересно пример тут, ну это уже сильно на любителя.
Приношу извинения за скомканность материала, хотелось кратко всё это изложить.
А также буду очень благодарен, если помогут/подскажут по данному материалу.
Добавил опрос.
Сообщение отредактировал Fester: 16 октября 2019 - 20:39