умылся простоuwrtey писал(а):Аватарку сменили?
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
умылся простоuwrtey писал(а):Аватарку сменили?
Тут мне что-то совсем не понятно.да, главное, надо учесть, что "отсутствию звука" в динамике соответствует не ШИМ со скважностью 0%, а ШИМ со скважностью 50%. то есть данные должны быть соответствующим образом "отнормированы" перед выдачей на ШИМ
.да, главное, надо учесть, что "отсутствию звука" в динамике соответствует не ШИМ со скважностью 0%, а ШИМ со скважностью 50%. то есть данные должны быть соответствующим образом "отнормированы" перед выдачей на ШИМ
Нет, не согласен и не очевидно.3. задайте сами себе вопрос: если у вас в файле записана тишина - какие данные будут в файле? очевидно, что нули - верно?
Код: Выделить всё
; Sample_rate 23452
.db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.db 0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80
.....Это я понял.ШИМ не может быть меньшей частоты, чем частота семплирования, но может быть сколь угодно большей частоты.
А вот это очень хорошая идея! Спасибо а подсказку!P.S. на самом деле, если мы говорим о ШИМ в микроконтроллерах AVR, следует учитывать, что FastPWM при задании 0-го уровня (или уровня 255 - это смотря по варианту "прямого" или "инверсного" выхода) будет давать не совсем корректный сигнал. поэтому следует нормировать данные в файле так, чтобы максимальное значение никогда не достигало значения 255 - достаточно остановиться на уровне в 250. тогда нулю будет соответствовать ровно половина, т.е. 125, и в коррекции вместо 127 вы должны будете использовать именно это значение. динамический диапазон слегка сузится, но для 8-битного звука это практически ничего не изменит...
Да я и сам не знал. Просто по Вашему совету начал логически рассуждать, а затем подтвердил свои догадки экспериментом. Страницей ранее мне с этим вопросом помог разобраться smacorp.ну, значит у вас уже отнормированы данные - откуда мне знать было?
можно сжатие аудио прмменить - AVR336: Декодер ADPCM http://www.gaw.ru/html.cgi/txt/app/micros/avr/index.htmНо из минусов то, что данных ( аудио ) станет намного больше....
zombie47 писал(а):Ну тоесть чтобы звук был каплю похож на оригинал, но тратить на это куча ресурсов мк я не хочу от слова совсем.
Код: Выделить всё
ffmpeg -i input.mp3 -ss 3:0.7 -t 0:1 -f wav -acodec pcm_u8 -ar 4000 output.wavну так теорема Котельникова: частота оцифровки сигнала должна быть хотя бы вдвое больше частоты самого сигнала. Причем это теоретический предел, лучше брать запас побольше.zombie47 писал(а):но если я сэмплирование меняют на меньше чем 2500гц, то этот звук на частоте 1200гц пропадает.
Фразу не расшифровал, но, возможно, спасет преобразование Фурье - разложение последовательности семплов на набор синусоид.zombie47 писал(а):Как мне из этого выдрать громкие частоты и их длительность?
Не так давно я делал демо-код воспроизведения 7 секунд wav-файла (9.6): https://karakatitsariscv.github.io/9.timers.htmlzombie47 писал(а):У меня задача стоит скопировать звук в микроконтроллер.
Код: Выделить всё
CFLAGS += -DAUDIOSRC='"_binary_src_audiodata_wav"'
...
$(builddir)/audiodata.o: $(srcdir)/audiodata.wav
mkdir -p $(builddir)
$(CROSS_COMPILE)ld -melf32lriscv -r -b binary -o $@ $<
$(CROSS_COMPILE)objcopy --rename-section .data=.rodata,alloc,load,readonly,data,contents $@ $@
Код: Выделить всё
extern const uint8_t adata_start[] asm(AUDIOSRC "_start");
extern const uint8_t adata_end[] asm(AUDIOSRC "_end");Код: Выделить всё
xxd -i input.bin > output.hНе совсем. Частота ШИМ и частота оцифровки это разные вещи. Например, при той же 4 кГц оцифровки у вас может быть 32 кГц ШИМ, тогда на один семпл уйдет 8 периодов ШИМ. А несущую ШИМ и стоит выбирать повыше - за пределами слышимости человека. Считается, что минимум 20 кГц, но некоторые и это слышат. Поэтому опять же берите с запасом. Другое дело, что на высокой частоте может не хватить скорости таймера. Также не лишним будут и обычные аналоговые фильтры.zombie47 писал(а):например там число 63 которое допустим равно 25% шима, это значит, что в этот сэмпл 25% времени этого сэмпла будет допустим подаваться напряжение и толкать мембрану какого либо динамика, а 75% времени нет.