Saya memiliki serangkaian peristiwa besar dalam Mathematica yang perlu saya bereaksi, dan tidak praktis selalu memeriksanya, terutama karena peristiwa didistribusikan secara acak dalam waktu.
Jadi saya ingin menambahkan suara sederhana untuk mengingatkan saya untuk pergi memeriksa acara tersebut. Saya ingin menggunakan Beep[]
tetapi saya tidak mendapatkan hasil, pada kenyataannya, saya tidak menyadari sampai sekarang bahwa Mathematica tidak membuat suara apa pun.
Saya menggunakan Debian Squeeze Stable dan tidak memiliki masalah dengan aplikasi lain yang menggunakan suara.
Ini mempengaruhi semua versi terbaru (7, 8 dan 9) dari Mathematica dan mungkin versi yang lebih lama tergantung pada pengaturan suara sistem Anda.
linux
audio
mathematica
Enedene
sumber
sumber
Jawaban:
Sejauh yang saya tahu, Mathematica tidak pernah benar-benar mendukung suara di Linux.PerintahPlay
itu diperkenalkan di versi 3, dan seluruh sistem suara dirombak di versi 6. Jika Anda mencari comp.soft-sys.math.mathematica, Anda akan menemukan pertanyaan kembali ke versi 3. Dalam versi 6, perintahEmitSound
diperkenalkan. Ini sekarang mendasari sebagian besar generasi suara Mathematica, tapi saya tidak bisa menemukan cara cepat untuk memperbaiki / meretasnya untuk linux, karenaEmitSound
melakukan beberapa preprocessing (mencari tahu jenis objek apa yang telah diberikan) sebelum meneruskan suara ke frontend untuk evaluasi.Driver suara / API default yang digunakan di sebagian besar pemasangan linux adalah ALSA ( wiki ). Itu menjadi default pada tahun 2002 di kernel linux 2.6 dan OSS ditandai sebagai "disusutkan" (meskipun OSS masih dalam pengembangan aktif). Banyak distribusi Linux sekarang menggunakan PulseAudio yang berada di atas suara ALSA yang mendasarinya. (Siapa pun dengan pemahaman yang lebih baik tentang suara Linux harus merasa bebas untuk mengedit ini!)
Mathematica memperkenalkan suara dalam versi 3 (1996) dan dengan demikian menggunakan OSS untuk varian * nix-nya. Ini masih terjadi, meskipun OSS tidak lagi menjadi default di hampir semua varian Linux. Mengetahui hal ini memberi kami solusi yang memungkinkan: gunakan lapisan emulasi OSS (lihat, misalnya, http://wiki.debian.org/SoundFAQ ).
Yang paling sederhana adalah dengan menggunakan emulasi mode userspace dan menjalankan Mathematica
aoss
atau setara PulseAudio
Masalah dengan keduanya adalah bahwa ini hanya bekerja dengan suara MIDI, bukan dengan suara sampel. Setidaknya ini benar pada sistem Ubuntu 10.10 saya dan sistem linux Scott Kruger (dari tim Dukungan Teknis WRI ). Laporan bug telah diajukan tentang masalah ini.
Atau, Anda dapat memuat kompatibilitas OSS ke dalam kernel Anda
dan Anda dapat menambahkan
snd_pcm_oss
dansnd_mixer_oss
untuk/etc/modules
memuat mereka pada saat boot. Modul-modul ini tidak tersedia di Ubuntu 10.10 karena mereka memutuskan untuk menghapus kompatibilitas mundur. Saya tidak dapat menguji hal di atas tanpa kompilasi ulang kernel saya ...Karena emulasi OSS di atas saat ini tidak bekerja dengan sempurna, inilah beberapa cepat kerja-arounds berdasarkan beberapa diskusi yang pernah kulihat (misalnya, a b c ) dan ditulis ulang untuk menggunakan standar perintah ALSA.
Untuk sampel suara, gunakan
aplay
:misalnya
ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
,.Anda juga harus bisa
Export
langsung ke/dev/snd/
perangkat yang sesuai ... tapi saya tidak bisa berfungsi.Untuk
midi
penggunaanaplaymidi
. Agar ini berfungsi, Anda memerlukan semacam perangkat lunak / perangkat keras midi synth yang diinstal. Saya telahtimidity
menjalankan pada port 128. (Lihat di sini untuk bantuan)misalnya,
ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
Anda sekarang dapat membungkus
ALSASound
perintah yang sesuai di sekitar objek suara. Anda juga dapat mendefinisikan ulangPlay
untuk menggunakanALSASound
:Ini pada dasarnya setara dengan pengaturan $ SoundDisplayFunction , seperti yang direkomendasikan oleh banyak diskusi di internet. Pengaturan opsi ini akan memutar suara, lalu mengeluarkan grafik normal.
tetapi tombol start / stop tidak akan berfungsi, karena didasarkan pada
EmitSound
.Untuk membuat
Beep[]
padanan sederhana , cobaTerakhir, jika Anda menginstal text-to-speech festival (atau program text-to-speech lainnya ), maka Anda dapat mengganti
Speak
fungsi Mathematica , misalnya,sumber