Eu tenho um grande conjunto de eventos no Mathematica aos quais preciso reagir, e nem sempre é prático procurá-lo, principalmente porque os eventos são distribuídos aleatoriamente no tempo.
Então, eu queria adicionar um som simples para me lembrar de ir verificar o evento. Eu queria usar, Beep[]
mas não obtive resultados; de fato, até agora não percebi que o Mathematica não emitia nenhum som.
Eu uso o Debian Squeeze Stable e não tenho problemas com nenhum outro aplicativo que utilize som.
Isso afeta todas as versões recentes (7, 8 e 9) do Mathematica e provavelmente as versões mais antigas, dependendo da configuração do som do seu sistema.
linux
audio
mathematica
enedene
fonte
fonte
Respostas:
Até onde eu sei, o Mathematica nunca realmente suportou som no Linux.O comandoPlay
foi introduzido na versão 3 e todo o sistema de som foi revisado na versão 6. Se você pesquisar comp.soft-sys.math.mathematica, encontrará perguntas desde a versão 3. Na versão 6, o comandoEmitSound
foi introduzido. Isso agora está na base da maior parte da geração de som do Mathematica, mas eu não consegui encontrar uma maneira rápida de corrigi-lo / hackear para o linux, já queEmitSound
faz um pré-processamento (descobrindo que tipos de objetos foram dados) antes de passar o som para o frontend. Avalie.O driver / API de som padrão usado na maioria das instalações Linux é o ALSA ( wiki ). Tornou-se o padrão em 2002 no kernel Linux 2.6 e o OSS foi marcado como "depreciado" (embora o OSS ainda esteja em desenvolvimento ativo). Muitas distribuições Linux agora usam o PulseAudio, que fica em cima do som ALSA subjacente. (Qualquer pessoa com uma melhor compreensão do som do Linux deve ficar à vontade para editar isso!)
O Mathematica introduziu o som na versão 3 (1996) e, portanto, usou o OSS para suas variantes * nix. Este ainda é o caso, apesar de o OSS não ser mais o padrão em quase todas as variantes do Linux. Saber disso nos dá uma solução possível: use uma camada de emulação OSS (consulte, por exemplo, http://wiki.debian.org/SoundFAQ ).
O mais simples é usar uma emulação no modo de espaço do usuário e executar o Mathematica através
aoss
ou o equivalente PulseAudio
O problema de ambos é que ele só funciona com sons MIDI, não com sons amostrados. Pelo menos isso é verdade no meu sistema Ubuntu 10.10 e no sistema linux de Scott Kruger (da equipe de Suporte Técnico do WRI ). Um relatório de bug foi arquivado sobre esse problema.
Como alternativa, você pode carregar a compatibilidade do OSS no seu kernel.
e você pode adicionar
snd_pcm_oss
esnd_mixer_oss
para/etc/modules
carregá-los na hora da inicialização. Esses módulos não estão disponíveis no Ubuntu 10.10, pois eles decidiram remover a compatibilidade com versões anteriores. Não consigo testar o acima sem recompilar meu kernel ...Como a emulação OSS acima não está atualmente funcionando perfeitamente, aqui estão algumas soluções rápidas, baseadas em algumas das discussões que eu já vi (por exemplo, a b c ) e reescritas para usar os comandos ALSA padrão.
Para som amostrado, use
aplay
:por exemplo
ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
,.Você também deve ser capaz de
Export
acessar o/dev/snd/
dispositivo apropriado ... mas não consegui fazer isso funcionar.Para
midi
usoaplaymidi
. Para que isso funcione, você precisa de algum tipo de software / hardware midi synth instalado. Estoutimidity
executando na porta 128. (Veja aqui para obter ajuda)por exemplo,
ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
Agora você pode envolver o
ALSASound
comando apropriado em torno de qualquer objeto de som. Você também pode redefinirPlay
para usarALSASound
:Isso é essencialmente equivalente à configuração de $ SoundDisplayFunction , conforme recomendado por muitas discussões na Internet. Essa configuração de opção reproduzirá o som e emitirá os gráficos normais.
mas os botões iniciar / parar não funcionarão, pois são baseados
EmitSound
.Para fazer um
Beep[]
equivalente simples , tentePor fim, se você instalar o festival de conversão de texto em fala (ou qualquer outro programa de conversão de texto em voz ), poderá substituir a
Speak
funcionalidade do Mathematica , por exemplo,fonte