Tengo un gran conjunto de eventos en Mathematica a los que necesito reaccionar, y no es práctico siempre verificarlo, especialmente porque los eventos se distribuyen aleatoriamente en el tiempo.
Así que quería agregar un sonido simple para recordarme ir a ver el evento. Quería usarlo Beep[]
pero no obtengo resultados, de hecho, hasta ahora no me había dado cuenta de que Mathematica no emitía ningún sonido.
Uso Debian Squeeze Stable y no tengo problemas con ninguna otra aplicación que use sonido.
Esto afecta a todas las versiones recientes (7, 8 y 9) de Mathematica y probablemente a versiones anteriores dependiendo de la configuración de sonido de su sistema.
linux
audio
mathematica
enedene
fuente
fuente
Respuestas:
Hasta donde yo sé, Mathematica nunca ha soportado realmente el sonido en Linux.El comandoPlay
se introdujo en la versión 3, y todo el sistema de sonido se revisó en la versión 6. Si busca comp.soft-sys.math.mathematica, encontrará preguntas que se remontan a la versión 3. En la versión 6, elEmitSound
Se introdujo el comando . Esto ahora subyace a la mayor parte de la generación de sonido de Mathematica, pero no pude encontrar una manera rápida de arreglarlo / hackearlo para Linux, ya queEmitSound
hace un preprocesamiento (averiguar qué tipo de objetos se le ha dado) antes de pasar el sonido a la interfaz para evaluar.El controlador de sonido / API predeterminado utilizado en la mayoría de las instalaciones de Linux es ALSA ( wiki ). Se convirtió en el valor predeterminado en 2002 en el kernel 2.6 de Linux y OSS se marcó como "depreciado" (aunque OSS todavía está en desarrollo activo). Muchas distribuciones de Linux ahora usan PulseAudio que se encuentra encima del sonido ALSA subyacente. (¡Cualquiera con una mejor comprensión del sonido de Linux debería editarlo!)
Mathematica introdujo el sonido en la versión 3 (1996) y, por lo tanto, utilizó OSS para sus variantes * nix. Este sigue siendo el caso, a pesar de que OSS ya no es el predeterminado en casi cualquier variante de Linux. Saber esto nos da una posible solución: usar una capa de emulación OSS (ver, por ejemplo, http://wiki.debian.org/SoundFAQ ).
Lo más simple es usar una emulación de modo de espacio de usuario y ejecutar Mathematica a través de
aoss
o el equivalente de PulseAudio
El problema con ambos es que solo funciona con sonidos MIDI, no con sonidos muestreados. Al menos esto es cierto en mi sistema Ubuntu 10.10 y el sistema Linux de Scott Kruger (del equipo de Soporte Técnico de WRI ). Se ha presentado un informe de error sobre este tema.
Alternativamente, puede cargar la compatibilidad OSS en su kernel
y se puede añadir
snd_pcm_oss
ysnd_mixer_oss
para/etc/modules
cargarlos al arrancar. Estos módulos no están disponibles en Ubuntu 10.10 ya que decidieron eliminar la compatibilidad con versiones anteriores. No puedo probar lo anterior sin recompilar mi kernel ...Dado que la emulación OSS anterior no funciona actualmente perfectamente, aquí hay un par de soluciones rápidas basadas en algunas de las discusiones que he visto (por ejemplo, a b c ) y reescritas para usar los comandos ALSA predeterminados.
Para el sonido muestreado, use
aplay
:por ejemplo,
ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
.También deberías poder acceder
Export
directamente al/dev/snd/
dispositivo apropiado ... pero no pude hacerlo funcionar.Para
midi
su usoaplaymidi
. Para que esto funcione, necesita algún tipo de sintetizador midi de software / hardware instalado. Me estoytimidity
ejecutando en el puerto 128. (Consulte aquí para obtener ayuda)p.ej,
ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
Ahora puede ajustar el
ALSASound
comando apropiado alrededor de cualquier objeto de sonido. También puede redefinirPlay
para usarALSASound
:Esto es esencialmente equivalente a configurar $ SoundDisplayFunction , como lo recomiendan muchas de las discusiones en Internet. El ajuste de esta opción reproducirá el sonido y luego emitirá los gráficos normales.
pero los botones de inicio / parada no funcionarán, ya que están basados en
EmitSound
.Para hacer un
Beep[]
equivalente simple , intenteFinalmente, si instala el texto a voz del festival (o cualquier otro programa de texto a voz ), puede reemplazar la
Speak
funcionalidad de Mathematica , por ejemplo,fuente