Ich habe eine große Anzahl von Ereignissen in Mathematica, auf die ich reagieren muss, und es ist nicht praktisch, immer danach zu suchen, zumal Ereignisse zufällig zeitlich verteilt sind.
Deshalb wollte ich einen einfachen Sound hinzufügen, um mich daran zu erinnern, das Ereignis zu überprüfen. Ich wollte verwenden, Beep[]
aber ich bekomme keine Ergebnisse, tatsächlich habe ich bis jetzt nicht bemerkt, dass Mathematica überhaupt keine Geräusche macht.
Ich benutze Debian Squeeze Stable und habe keine Probleme mit anderen Anwendungen, die Sound verwenden.
Dies wirkt sich auf alle neueren Versionen (7, 8 und 9) von Mathematica und wahrscheinlich auf ältere Versionen aus, abhängig vom Sound-Setup Ihres Systems.
linux
audio
mathematica
enedene
quelle
quelle
Antworten:
Soweit ich weiß, hat Mathematica Sound unter Linux nie wirklich unterstützt.Der BefehlPlay
wurde in Version 3 eingeführt und das gesamte Soundsystem in Version 6 überarbeitet. Wenn Sie nach comp.soft-sys.math.mathematica suchen, finden Sie Fragen, die bis zu Version 3 zurückreichen BefehlEmitSound
wurde eingeführt. Dies liegt nun dem größten Teil der Mathematica-Soundgenerierung zugrunde, aber ich konnte keinen schnellen Weg finden, um es für Linux zu reparieren / hacken, daEmitSound
einige Vorverarbeitungen (Herausfinden, welche Arten von Objekten es gegeben wurde) durchgeführt wurden, bevor der Sound an das Frontend übergeben wurde bewerten.Der in den meisten Linux-Installationen verwendete Standard-Soundtreiber / API ist ALSA ( Wiki ). Es wurde 2002 zum Standard im Linux-Kernel 2.6 und OSS wurde als "abgeschrieben" markiert (obwohl OSS noch in der aktiven Entwicklung ist). Viele Linux-Distributionen verwenden jetzt PulseAudio, das über dem zugrunde liegenden ALSA-Sound liegt. (Jeder, der den Linux-Sound besser versteht, sollte dies jederzeit bearbeiten können!)
Mathematica führte Sound in Version 3 (1996) ein und verwendete daher OSS für seine * nix-Varianten. Dies ist immer noch der Fall, obwohl OSS in fast jeder Linux-Variante nicht mehr die Standardeinstellung ist. Wenn wir dies wissen, erhalten wir eine mögliche Lösung: Verwenden Sie eine OSS-Emulationsebene (siehe z . B. http://wiki.debian.org/SoundFAQ ).
Am einfachsten ist es, eine Emulation im Userspace-Modus zu verwenden und Mathematica auszuführen
aoss
oder das PulseAudio-Äquivalent
Das Problem bei beiden ist, dass es nur mit MIDI-Sounds funktioniert, nicht mit gesampelten Sounds. Zumindest gilt dies für mein Ubuntu 10.10-System und das Linux-System von Scott Kruger (vom WRI Technical Support- Team). Zu diesem Problem wurde ein Fehlerbericht eingereicht.
Alternativ können Sie die OSS-Kompatibilität in Ihren Kernel laden
und Sie können hinzufügen
snd_pcm_oss
undsnd_mixer_oss
zu/etc/modules
ihnen beim Booten zu laden. Diese Module sind in Ubuntu 10.10 nicht ohne weiteres verfügbar, da sie beschlossen haben, die Abwärtskompatibilität zu entfernen. Ich kann das oben genannte nicht testen, ohne meinen Kernel neu zu kompilieren ...Da die oben genannte OSS-Emulation derzeit nicht einwandfrei funktioniert, finden Sie hier einige schnelle Umgehungen, die auf einigen der Diskussionen basieren, die ich gesehen habe (z. B. a b c ) und die neu geschrieben wurden, um Standard-ALSA-Befehle zu verwenden.
Verwenden Sie für gesampelten Sound
aplay
:zB ,
ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
.Sie sollten auch in der Lage sein,
Export
direkt auf das entsprechende/dev/snd/
Gerät zuzugreifen ... aber ich konnte das nicht zum Laufen bringen.Zur
midi
Verwendungaplaymidi
. Damit dies funktioniert, muss eine Art Software- / Hardware-Midi-Synthesizer installiert sein. Ich habetimidity
auf Port 128 ausgeführt. ( Hilfe finden Sie hier )z.B,
ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
Sie können jetzt den entsprechenden
ALSASound
Befehl um jedes Soundobjekt wickeln . Sie könnten auch neu definierenPlay
zu verwendenALSASound
:Dies entspricht im Wesentlichen dem Festlegen von $ SoundDisplayFunction , wie von vielen Diskussionen im Internet empfohlen. Diese Optionseinstellung spielt den Ton ab und gibt dann die normalen Grafiken aus.
Die Start / Stopp-Tasten funktionieren jedoch nicht, da sie auf basieren
EmitSound
.Beep[]
Versuchen Sie es mit einem einfachen ÄquivalentWenn Sie schließlich das Festival Text-to-Speech (oder ein anderes Text-to-Speech- Programm) installieren , können Sie die Mathematica-
Speak
Funktionalität ersetzen , z.quelle