O Mathematica não faz som no Ubuntu 11.04

4

Depois de esperar por dias pela minha licença, agora tive a oportunidade de instalar o Wolfram Mathematica 8 em casa. No entanto, nem as funções Play nem Speak estão fazendo nada, pois parece que o Mathematica não pode produzir nenhuma saída de som devido a razões desconhecidas. Alguém pode ter uma ideia de como eu posso consertar isso?

    
por Christian Ivicevic 17.06.2011 / 19:58

3 respostas

3

O Ubuntu usa o sistema de som PulseAudio . Ele vem com o comando paplay para reproduzir um arquivo de som. A abordagem que você encontrou no wiki do Ubuntu deve funcionar, mas você precisa usar paplay (ou algum outro equivalente programa) em vez dos já obsoletos aRts.

Aqui está um código adaptado do wiki do Ubuntu . Adicione-o ao seu ~/.Mathematica/Kernel/init.m ou a um arquivo incluído. Além de executar paplay em vez de artsplay , alterei-o para canalizar os dados em vez de armazená-los em um arquivo temporário. Não testado.

Begin["System'Private'"]
Unprotect[$SoundDisplayFunction]
Clear[$SoundDisplayFunction]
$SoundDisplayFunction =
    Module[{stream},
      stream = OpenWrite["!pacat", BinaryFormat -> True];
      BinaryWrite[stream, ExportString[#1, "WAV"]];
      Close[stream];
    ] &
Protect[$SoundDisplayFunction]
End[];

Veja também Não há som no Mathematica 8.0.1 no Linux , que relata que uma abordagem semelhante funcionou no Mathematica 8 (com o ALSA em vez do PulseAudio).

    
por 17.06.2011 / 22:03
1

O problema é que essa versão do Mathematica usa o OSS e que o seu Ubuntu usa o ALSA.

Adicione o seguinte script 'sound.m' a ~/.Mathematica/Kernel :

(* ::Package:: *)

(*
  * Set up a $SoundDisplayFunction for the
  * Linux version of Mathematica and potentially other unixes, too.
  *)

Begin["System'Private'"]

Unprotect[$SoundDisplayFunction]
Clear[$SoundDisplayFunction]

$SoundDisplayFunction :=
     Module[{playCmd,soundFileName},
            Export[$SoundDisplay, #1];
         (* is there a way to get the sample rate, etc. from the audio 
stream? *)
         playCmd = "/usr/bin/play";
         soundFileName = "/tmp/" <> ToString[Unique["sound"]] <> ".wav";
         playCmd = playCmd <> " " <> soundFileName;

         Export[soundFileName, #1, "WAV"];
         Run[playCmd];
         Run["/bin/rm -f " <> soundFileName];
        ] &

Protect[$SoundDisplayFunction]

End[];

(********************CODE ENDS***************************)

After creating 'sound.m', add the following line
to ~/.Mathematica/Kernel/init.m :

Get["sound.m"];

Reinicie o Mathematica para recarregar o kernel.

    
por 18.11.2013 / 11:55
0

Eu tive o mesmo problema. Após a atualização para o Mathematica 10, a geração de som funciona no Linux.

    
por 15.07.2014 / 07:54