Воспроизведение звука поверх фоновой музыки с помощью библиотеки arduino uno tmrpcm

Мы разработали большое пианино с 15 кнопками. Каждая кнопка имеет датчик приближения. Всякий раз, когда пользователи взаимодействуют с датчиком, для этой кнопки воспроизводится определенный звук. Мой код отлично работает для этой цели, но теперь я хочу добавить фоновую музыку. Звук кнопки пианино должен играть поверх этой фоновой музыки. Я использую библиотеку tmrpcm и уже добавил музыку bg, но когда я взаимодействую с датчиком, музыка bg останавливается и начинается с начала сразу после прекращения звука кнопки пианино. Есть ли способ воспроизвести звук, не прерывая фоновую музыку. Будем признательны за любую помощь.

, 👍1

Обсуждение

используйте две ардуины, @jsotola


1 ответ


1

Предполагая, что вы используете Arduino Uno, вы не сказали. Так как в наши дни существует множество платформ Arduino.

Поскольку библиотека tmrpcm использует PWM (широтно-импульсный модулятор) HW (аппаратное обеспечение) для воссоздания звуковых волн из файла WAV на SDCard, PWM недоступен для создания звуков из вашего приложения для пианино (вы не скажите, какое приложение для пианино вы использовали). Тем не менее, нет ничего невозможного в том, чтобы переписать оба приложения для СУММИРОВАНИЯ двух волновых форм вместе математически перед передискретизацией СУММ и записью этого выборочного значения в аппаратное обеспечение ШИМ для имитации СУММЫ двух форм волн. Однако это, вероятно, не тривиально, и также вероятно, что Atmel ATmega328P) не будет достаточно мощным (выполните математические достаточно быстро), чтобы не отставать от нормального воспроизведения звука.

Вероятно, было бы намного проще использовать 2 платы Arduino Uno и суммировать звук из приложения звукового файла и приложения пианино, используя аналоговые методы, внешние для плат Arduno Uno.

,

Я думаю, что для этого можно было бы сделать один Uno, но если целесообразность является проблемой, нужно просто использовать два Arduino Uno., @Gabriel Staples

Возможно, вы правы, @GabrielStaples. Но проблем может быть больше, чем может решить ОП (или кто-либо другой). Может ли библиотека tmrpcm работать с WAV-файлами с разной частотой дискретизации? Если это так, то приложение для фортепиано необходимо настроить для создания той же ноты с этими новыми частотами дискретизации. Или Arduino Uno пришлось бы иметь дело с различиями в частотах дискретизации путем повторной выборки либо данных файла WAV, либо данных пианино., @st2000

Да, это, без сомнения, потребует много усилий и потребует много продвинутых навыков и решения проблем. Это может быть забавным проектом для тех, кто действительно любит расширять возможности Arduino, но просто кошмаром для тех, кто просто хочет получить желаемые результаты как можно скорее. И если у кого-то нет необходимых навыков заранее и он может работать только по ночам и выходным, это может быть 3-летний проект. У меня было много таких: я начинаю что-то, что я понятия не имею, как это сделать, поэтому мне потребовалось 3 года, чтобы в конечном итоге изучить все части, изучить техническое описание и понять это., @Gabriel Staples