1

Temat: Audio - odtwarzanie kilku plików na raz

Czy takie odtwarzanie (np. mix zapowiedzi na tle muzyki) załatwia alsa + madplay?
Normalnie madplay tego nie zrobi (zajęte urządzenie audio).

2

Odp: Audio - odtwarzanie kilku plików na raz

Alsa + odpowiednia konfiguracja (dmix)

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

3

Odp: Audio - odtwarzanie kilku plików na raz

Doinstalowałem alsa-utils, działa alsamixer, mam /dev/mixer ... madplay dalej działa po staremu - na pewno da się go zmusić do miksowania? Żeby zainstalować MPD muszę wyrzucić coś i przekompliować bo już mi się nie zmieści (nie potrzebuję MPD - madplay wystarczy w zupełności, byle by się dało uruchomić więcej niż jeden).

4

Odp: Audio - odtwarzanie kilku plików na raz

To nie madplay zmuszasz do tego, a alsę...

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

5 (edytowany przez mrox 2014-02-08 02:24:27)

Odp: Audio - odtwarzanie kilku plików na raz

To jak to zrobić? Link do asound.conf z poradnika jest nieaktualny. Próbowałem na ślepo różne znalezione przykłady.
Nie rozumiem kompletnie jak to ma działać - bo skoro madplay wysyła do /dev/dsp i najwyraźniej może tam wysyłać tylko jeden na raz, to co ma do tego alsa? No chyba, że po zainstalowaniu alsy to ona jest /dev/dsp... ale u mnie najwidoczniej nie jest.

Edit: aplay można uruchomić dwa razy i odtwarza... niestety co drugie uruchomienie trzeszczy (problem znany, ale znane rozwiązanie nie pomaga).

6

Odp: Audio - odtwarzanie kilku plików na raz

Przekompilować madplay ze wsparciem dla alsy lub zrób na alsie emulator oss i wtedy na dmixa. W sumie to opisywali to jeszcze w czasach prehistorycznych kiedy alsa wschodziła do linuksa.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

7

Odp: Audio - odtwarzanie kilku plików na raz

No to troszkę mnie wprowadziłeś w błąd bo teraz wyszło, że madplay jednak nie działa z alsą.
Uporałem się z tym trzeszczeniem i aplay mi działa tak jak chciałem (niestety tylko wav-y a nie mp3). Nie wiem teraz w którą stronę pójść -  czy zwolnić miejsce na mpd... ale mpd-em da się grać klika na raz?, czy walczyć z madplay+alsa (oss?), czy w ogóle przejść na wav-y.

8

Odp: Audio - odtwarzanie kilku plików na raz

Nie działa  - bo domyślnie nie jest z nią kompilowany. A nie sądzę żebyś samodzielnie kompilował madplay tylko zainstalowałeś sobie z repo.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

9

Odp: Audio - odtwarzanie kilku plików na raz

Akurat było odwrotnie: madplay kompilowałem (zaznaczyłem do kompilacji w menuconfig), natomiast alsę doinstalowałem i skonfigurowałem (zgodnie z Twoją sugestią).
1.Czy MPD umożliwia miksowanie (granie kilku plików na raz)?
2.Jak skompilować madplay z alsą - po prostu zaznaczając alsa-utils i madplay w menucinfig, czy trzeba grzebać w makefile madplaya?

10

Odp: Audio - odtwarzanie kilku plików na raz

Grzebać w makefile - pisałem, domyślnie nie jest z tym kompilowany.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

11

Odp: Audio - odtwarzanie kilku plików na raz

Nie skompiluje się.
Zmieniłem w makefile --without-alsa na --with-alsa, dopisałem też w DEPENDS:+alsa-lib.

mv -f .deps/audio_wave.Tpo .deps/audio_wave.Po
mips-openwrt-linux-uclibc-gcc -DHAVE_CONFIG_H -I. -Iintl -DLOCALEDIR=\"/usr/share/locale\"  -I/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include -I/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/include -I/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/usr/include -I/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/include   -Wall -pipe -Wno-error=unused-but-set-variable  -mno-branch-likely -mips32r2 -mtune=34kc -msoft-float -fhonour-copts -fomit-frame-pointer -MT audio_alsa.o -MD -MP -MF .deps/audio_alsa.Tpo -c -o audio_alsa.o audio_alsa.c
audio_alsa.c: In function 'play':
audio_alsa.c:288:4: warning: pointer targets in passing argument 1 of 'audio_pcm' differ in signedness [-Wpointer-sign]
audio_alsa.c:288:4: note: expected 'unsigned char *' but argument is of type 'char *'
mv -f .deps/audio_alsa.Tpo .deps/audio_alsa.Po
/bin/bash ./libtool --tag=CC   --mode=link mips-openwrt-linux-uclibc-gcc  -Wall -pipe -Wno-error=unused-but-set-variable  -mno-branch-likely -mips32r2 -mtune=34kc -msoft-float -fhonour-copts -fomit-frame-pointer  -L/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib -L/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/lib -L/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/usr/lib -L/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/lib  -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_alsa.o  -lasound     -lmad        -lid3tag -lm -lz
OpenWrt-libtool: link: mips-openwrt-linux-uclibc-gcc -Wall -pipe -Wno-error=unused-but-set-variable -mno-branch-likely -mips32r2 -mtune=34kc -msoft-float -fhonour-copts -fomit-frame-pointer -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_alsa.o  -L/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/lib -L/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/lib -L/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/usr/lib -L/home/mir/openwrt/trunk/staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/lib -lasound -lmad -lid3tag -lm -lz
audio_alsa.o: In function `set_hwparams':
audio_alsa.c:(.text+0x148): undefined reference to `snd_pcm_hw_params_set_rate_near@ALSA_0.9'
audio_alsa.c:(.text+0x200): undefined reference to `snd_pcm_hw_params_set_buffer_time_near@ALSA_0.9'
audio_alsa.c:(.text+0x258): undefined reference to `snd_pcm_hw_params_get_buffer_size@ALSA_0.9'
audio_alsa.c:(.text+0x28c): undefined reference to `snd_pcm_hw_params_set_period_time_near@ALSA_0.9'
audio_alsa.c:(.text+0x2ec): undefined reference to `snd_pcm_hw_params_get_period_size@ALSA_0.9'
collect2: ld returned 1 exit status
make[6]: *** [madplay] Error 1
make[6]: Leaving directory `/home/mir/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/madplay-0.15.2b'
make[5]: *** [all-recursive] Error 1
make[5]: Leaving directory `/home/mir/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/madplay-0.15.2b'
make[4]: *** [all] Error 2
make[4]: Leaving directory `/home/mir/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/madplay-0.15.2b'
make[3]: *** [/home/mir/openwrt/trunk/build_dir/target-mips_34kc_uClibc-0.9.33.2/madplay-0.15.2b/.built] Error 2
make[3]: Leaving directory `/home/mir/openwrt/trunk/feeds/packages/sound/madplay'
make[2]: *** [package/feeds/packages/madplay/compile] Error 2
make[2]: Leaving directory `/home/mir/openwrt/trunk'
make[1]: *** [/home/mir/openwrt/trunk/staging_dir/target-mips_34kc_uClibc-0.9.33.2/stamp/.package_compile] Error 2
make[1]: Leaving directory `/home/mir/openwrt/trunk'
make: *** [world] Błąd 2

Google podpowiada, że jest to problem nowego api alsy - madplay pisany jest pod stary, więc na razie chyba pozamiatane?

12

Odp: Audio - odtwarzanie kilku plików na raz

Na pewno zrobiłeś make oldconfig i skompilowałeś alsa-lib? Bo te funkcje właśnie w alsie są.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.

13

Odp: Audio - odtwarzanie kilku plików na raz

Oldconfig przywraca config.old ? Jeśli tak, to nie rozumiem co by to miało dać. Jeśli pytasz czy przywracałem config do ustawień "fabrycznych" to wydaje mi się, że takie przywrócenie robi się przy każdej zmianie platformy -  w każdym razie zaznaczyłem od nowa kmod-sound-core, kmod-usb-audio, alsa-utils (alsa-lib zaznacza się samo) i madplay + zmieniony makefile i nie kompiluje się. Spróbuję jeszcze zrobić to na AA, bo do tej pory próbowałem na trunk-u.

14

Odp: Audio - odtwarzanie kilku plików na raz

Nie, nie przywraca. Aktualizuje zależności.

Masz niepotrzebny router, uszkodzony czy nie - chętnie przygarnę go.