Mam ogromny zestaw wydarzeń w Mathematica, na które muszę zareagować, i nie zawsze jest praktyczne sprawdzanie tego, zwłaszcza, że wydarzenia są losowo rozmieszczone w czasie.
Chciałem więc dodać prosty dźwięk przypominający mi, żebym poszedł sprawdzić wydarzenie. Chciałem użyć, Beep[]
ale nie otrzymuję żadnych rezultatów, w rzeczywistości nie zdawałem sobie sprawy, że Mathematica nie wydaje żadnych dźwięków.
Używam Debian Squeeze Stable i nie mam problemów z żadną inną aplikacją używającą dźwięku.
Wpływa to na wszystkie najnowsze wersje (7, 8 i 9) Mathematica i prawdopodobnie starsze wersje, w zależności od konfiguracji dźwięku twojego systemu.
linux
audio
mathematica
enedene
źródło
źródło
Odpowiedzi:
O ile mi wiadomo, Mathematica nigdy tak naprawdę nie obsługiwał dźwięku w Linuksie.KomendaPlay
została wprowadzona w wersji 3, a cały system dźwiękowy przebudowany w wersji 6. Jeśli przeszukujesz comp.soft-sys.math.mathematica, znajdziesz pytania sięgające wstecz do wersji 3. W wersji 6 polecenieEmitSound
zostało wprowadzone. To leży u podstaw większości generowania dźwięku Mathematica, ale nie mogłem znaleźć szybkiego sposobu, aby naprawić / zhakować go w systemie Linux, ponieważEmitSound
wykonuje pewne wstępne przetwarzanie (ustalenie, jakie typy obiektów zostało podane) przed przekazaniem dźwięku do interfejsu oceniać.Domyślny sterownik dźwięku / API używany w większości instalacji Linuksa to ALSA ( wiki ). Stał się domyślny w 2002 r. W jądrze Linuksa 2.6, a OSS został oznaczony jako „przestarzały” (chociaż OSS jest wciąż w fazie rozwoju). Wiele dystrybucji Linuksa korzysta teraz z PulseAudio, które znajduje się nad dźwiękiem ALSA. (Każdy, kto lepiej rozumie dźwięk Linuksa, powinien go edytować!)
Mathematica wprowadziła dźwięk w wersji 3 (1996) i tym samym wykorzystała OSS do swoich wariantów * nix. Tak jest nadal, mimo że OSS nie jest już domyślny w prawie żadnym wariancie Linuksa. Znajomość tego daje nam możliwe rozwiązanie: użyj warstwy emulacji OSS (patrz np. Http://wiki.debian.org/SoundFAQ ).
Najprościej jest użyć emulacji trybu użytkownika i uruchomić Mathematica
aoss
lub odpowiednik PulseAudio
Problem w obu przypadkach polega na tym, że działa tylko z dźwiękami MIDI, a nie z próbkowanymi dźwiękami. Przynajmniej tak jest w moim systemie Ubuntu 10.10 i systemie linux Scott Kruger (z zespołu pomocy technicznej WRI ). Zgłoszono błąd dotyczący tego problemu.
Alternatywnie możesz załadować kompatybilność OSS do jądra
i można dodać
snd_pcm_oss
isnd_mixer_oss
aby/etc/modules
załadować je na przy ładowaniu systemu. Moduły te nie są łatwo dostępne w systemie Ubuntu 10.10, ponieważ postanowiono usunąć kompatybilność wsteczną. Nie mogę przetestować powyższego bez ponownej kompilacji mojego jądra ...Ponieważ powyższa emulacja OSS obecnie nie działa idealnie, oto kilka krótkich obejść opartych na niektórych dyskusjach, które widziałem (np. A b c ) i przepisałem, aby używać domyślnych poleceń ALSA.
Aby uzyskać próbkowany dźwięk, użyj
aplay
:np
ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
.Powinieneś także mieć możliwość
Export
bezpośredniego połączenia z odpowiednim/dev/snd/
urządzeniem ... ale nie mogłem tego uruchomić.Do
midi
użytkuaplaymidi
. Aby to zadziałało, potrzebujesz zainstalowanego oprogramowania / sprzętowego syntezatora midi. Mamtimidity
uruchomiony na porcie 128. (Zobacz tutaj, aby uzyskać pomoc)na przykład,
ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
Możesz teraz zawinąć odpowiednie
ALSASound
polecenie wokół dowolnego obiektu dźwiękowego. Możesz także zdefiniowaćPlay
na nowoALSASound
:Jest to zasadniczo równoważne z ustawieniem $ SoundDisplayFunction , zgodnie z zaleceniami wielu dyskusji w Internecie. To ustawienie opcji odtworzy dźwięk, a następnie wyświetli normalną grafikę.
ale przyciski start / stop nie będą działać, ponieważ są oparte na
EmitSound
.Aby zrobić prosty
Beep[]
odpowiednik, spróbujWreszcie, jeśli zainstalujesz festiwalowy tekst na mowę (lub inny program do zamiany tekstu na mowę ), możesz zastąpić
Speak
funkcjonalność Mathematica , np.źródło