Воспроизведение wav с заданной миллисекунды

Тема в разделе "Arduino & Shields", создана пользователем SEsin, 18 июн 2020.

  1. SEsin

    SEsin Нерд

    Всем привет! Подскажите пожалуйста в какую сторону копать.
    Реально ли воспроизвести файл с помощью Arduino не просто с начала, а с заданного положения?
    Я смотрел проекты с использованием мини mp3/WAV плеера. Но все команды запускают трек с начала. Либо продолжают воспроизведение с места, поставленного на паузу.
    Объясню нафига нужно:
    Проект музыкальный. Есть драм-машина, в которой программируются треки ударных. Задача - синхронизировать воспроизведение трека драм машины с произвольным аудиофайлом с флешки.
    Драм машина передает текущее положение в треке по MIDI. Также в процессе составления партии ударных есть необходимость останавливать трек. Отматывать назад/вперед, что-то в нем менять и снова запускать. Слушать, отматывать, запускать... и т.д. Короче - композить ))
    Соответственно, хотелось бы, чтобы аудиофайл так же отматывался на нужное положение и запускался с нужного места синхронно с MIDI дорожкой. Это реально?
     
  2. parovoZZ

    parovoZZ Гуру

    Реально. Зайди в ближайший муз. магаз - там подберут оборудование.
     
  3. SEsin

    SEsin Нерд

    Мне нравится ваше тонкое чувство юмора.
     
  4. b707

    b707 Гуру

    на большинстве ардуино-плееров нет, там не только с нужного места - там даже с начала файл запускается сзадержкой от 0.5 до 2 сек
     
  5. SEsin

    SEsin Нерд

    Насчет задержки я об этом догадывался, но можно её как-нибудь компенсировать, например, запуская сначала аудио файл, а через 0,5 сек отправляя команду Start на запуск MIDI дорожки. Но вот без запуска с выбранного места, в проекте смысла вообще не будет.
    А в "миньшинстве" ардуино-плееров? Хоть где-то такое есть? Или если, например, использовать не плеер как отдельный модуль, а как-то WAV файл самостоятельно воспроизводить с SD карты. Такие библиотеки/готовые решения существуют?
     
  6. parovoZZ

    parovoZZ Гуру

    "как-то" - это как и с помощью чего?
     
  7. SEsin

    SEsin Нерд

    Я думал, это ты мне как "гуру" скажешь. Но например, так: https://radioprog.ru/post/268
     
  8. parovoZZ

    parovoZZ Гуру

    Таки в чем же вопрос?
     
  9. SEsin

    SEsin Нерд

    Как с заданной секунды воспроизвести? Метода такого нет. По крайней мере в этой библиотеке. Есть ли другая библиотека с готовым методом? Или какой-то супер-мега-редкий-один-в-мире готовый внешний модуль (ЦАП) у которого есть уже готовое решение на этот счет?
     
  10. parovoZZ

    parovoZZ Гуру

    Очень быстро промотать до нужного фрагмента, отсчитывая при этом время.
     
  11. akl

    akl Гуру

    разве все нормальные люди не используют для этого просто комп с daw-плагинами и этим вот всем?
     
  12. parovoZZ

    parovoZZ Гуру

    я так понимаю, что здесь нужно что-то компактное. Я бы такую задачу решал на одноплатнике. Например, nanoPI. Они меньше, чем arduino leo и с GNU/Linux внутри.
     
  13. SEsin

    SEsin Нерд

    Готовых методов перемотки, насколько я вижу, тоже нет.
    Это так про все что угодно можно сказать, что на компе можно это сделать ) Да, интерес представляет маленькая "приставка" к драм-машине, чтобы без компа иметь возможность слышать дорожку ударных с остальным треком. Если комп раскочегарить, понятное дело там можно это совместить.
     
  14. parovoZZ

    parovoZZ Гуру

    Сперва надо подумать, как синхронизировать дорожки у приставки и драм машины.
     
  15. SEsin

    SEsin Нерд

    Так я в теме писал. Драм машина по MIDI передает позицию в треке. Из неё можно вычислить миллисекунду с которой надо запустить аудиофайл. Весь затык в запуске файла с этой миллисекунды. Я честно говоря ожидал, что хоть в какой-нибудь библиотеке реализован метод запуска трека где в качестве параметра можно передать стартовую позицию и все. А оказалось, что это просто сверхзадача. И я удивлюсь, что ни для одного проекта это никогда не было нужно.
     
  16. parovoZZ

    parovoZZ Гуру

    Драм машина в своём ритме работает, ардуина - в своём. В драм машине подкрутить ритм не проблема, а вот с ардуиной - вопрос.
     
  17. SEsin

    SEsin Нерд

    Трек изначально будет в том же темпе, что и трек драм-машины, он не будет каким-то произвольным. Но это все не имеет отношения к теме.
     
  18. b707

    b707 Гуру

    для Due и Teensy есть библиотека Audio https://github.com/PaulStoffregen/Arduino-1.6.2-Teensyduino
    (библиотека, как я понял, для проигрывания звука использует аппаратный DAC. поэтому на "обычных" ардуино не пойдет)
    В библиотеке тоже нет функции проигрывания трека с произвольной позиции, но мельком глянув в код - мне думается, такую функцию не слишком сложно будет добавить...

    Посмотрите, может пригодится.
     
    issaom нравится это.
  19. b707

    b707 Гуру

    SEsin - еще поискал в гугле, кроме DFPleer разных MP3 плееров куча продается

    вот - http://www.icstation.com/player-mod...ytes-flash-voice-playback-module-p-13454.html
    или вот - https://store.siqma.com/wtv020-sd-voice-player.html
    и вот - https://www.amazon.in/YX5300-Player-Module-Serial-Control/dp/B081Q86WYH

    но все они работают только с полными треками, ни в одном возможности проигрывать трек с произвольного места я не нашел. Так что не такая уж это очевидная задачка, как вам кажется. Единственный метод, как я вижу - писать свою библиотеку для прямого проигрывания звука на контроллере
     
    Последнее редактирование: 19 июн 2020
  20. SEsin

    SEsin Нерд

    Большое спасибо за ответ. Да, я тоже искал и везде одно и то же. Я вижу, что задачка вообще оказалась не простой! Боюсь, что написание своей библиотеки я не осилю и о подобном проекте остается только мечтать. )