जहां तक मुझे पता है, Mathematica ने वास्तव में लिनक्स में ध्वनि का समर्थन नहीं किया है।
कमांड Play
को संस्करण 3 में पेश किया गया था, और पूरे साउंड सिस्टम को संस्करण 6 में ओवरहॉल किया गया था। यदि आप comp.soft-sys.math.mathematica खोजते हैं, तो आपको संस्करण 3 में सभी तरह से वापस जाने वाले प्रश्न मिलेंगे। संस्करण 6 में, आज्ञा दी EmitSound
गई। यह अब अधिकांश मैथेमेटिका साउंड जेनरेशन को रेखांकित करता है, लेकिन मैं इसे लिनक्स के लिए ठीक करने / हैक करने का एक त्वरित तरीका नहीं ढूंढ सका, क्योंकि EmitSound
ध्वनि को दृश्यपटल से गुजरने से पहले कुछ प्रीप्रोसेसिंग (यह पता लगाया जाता है कि किस प्रकार की वस्तुएं दी गई हैं)। मूल्यांकन करना।
अधिकांश लिनक्स इंस्टाल में इस्तेमाल होने वाला डिफ़ॉल्ट साउंड ड्राइवर / एपीआई एएलएसए ( विकी ) है। यह 2002 में लिनक्स कर्नेल 2.6 में डिफ़ॉल्ट हो गया और ओएसएस को "मूल्यह्रास" के रूप में चिह्नित किया गया था (हालांकि ओएसएस अभी भी सक्रिय विकास के अधीन है)। कई लिनक्स वितरण अब PulseAudio का उपयोग करते हैं
जो अंतर्निहित ALSA ध्वनि के शीर्ष पर बैठता है। (लिनक्स ध्वनि की बेहतर समझ वाला कोई भी व्यक्ति इसे संपादित करने के लिए स्वतंत्र महसूस करना चाहिए!)
Mathematica ने संस्करण 3 (1996) में ध्वनि पेश की और इस प्रकार अपने * nix वेरिएंट के लिए OSS का उपयोग किया। ओएसएस के लगभग किसी भी वैरिएंट में डिफ़ॉल्ट नहीं होने के बावजूद यह अभी भी मामला है। यह जानने से हमें एक संभावित समाधान मिलता है: OSS इम्यूलेशन लेयर (उदाहरण के लिए, http://wiki.debian.org/SoundFAQ ) का उपयोग करें।
सबसे सरल है कि यूजरस्पेस मोड एमुलेशन का उपयोग करें और मैथेमेटिका के माध्यम से चलाएं aoss
aoss mathematica
या पल्सएडियो समकक्ष
padsp mathematica
इन दोनों के साथ समस्या यह है कि यह केवल मिडी ध्वनियों के साथ काम करता है, न कि नमूना ध्वनियों के साथ। कम से कम यह मेरे उबंटू 10.10 सिस्टम और स्कॉट क्रूगर ( WRI तकनीकी सहायता टीम का) के लिनक्स सिस्टम पर सच है । इस मुद्दे पर एक बग रिपोर्ट दायर की गई है।
वैकल्पिक रूप से, आप अपने कर्नेल में OSS संगतता लोड कर सकते हैं
apt-get install alsa-oss
modprobe snd_pcm_oss
modprobe snd_mixer_oss
और आप उन्हें जोड़ने snd_pcm_oss
और
बूट snd_mixer_oss
करने के /etc/modules
लिए लोड कर सकते हैं । ये मॉड्यूल Ubuntu 10.10 में आसानी से उपलब्ध नहीं हैं
क्योंकि उन्होंने पीछे की संगतता को हटाने का फैसला किया है। मैं अपनी कर्नेल को फिर से देखे बिना उपरोक्त परीक्षण नहीं कर सकता ...
चूँकि उपरोक्त OSS एमुलेशन वर्तमान में पूरी तरह से काम नहीं कर रहा है, यहाँ कुछ क्विक वर्क-अराउंड्स के आधार पर मैंने जो कुछ चर्चाएँ देखीं (जैसे, a b c ) और डिफ़ॉल्ट ALSA कमांड का उपयोग करने के लिए फिर से लिखा।
नमूना ध्वनि के लिए, उपयोग करें aplay
:
ALSASound[snd_, "WAV"] := Module[{playCmd = "aplay", soundFileName},
soundFileName = "/dev/shm/" <> ToString[Unique["MmaSound"]] <> ".wav";
playCmd = playCmd <> " " <> soundFileName;
Export[soundFileName, snd, "WAV"];
Run["(" <> playCmd <> ";" <> "/bin/rm -f " <> soundFileName <> ")&"];]
जैसे, ALSASound[Play[Sin[1000 t^2], {t, 0, 1}], "WAV"]
।
आपको Export
उपयुक्त /dev/snd/
डिवाइस पर भी सीधे सक्षम होना चाहिए ... लेकिन मुझे वह काम नहीं मिला।
midi
उपयोग के लिए aplaymidi
। यह काम करने के लिए आपको किसी प्रकार के सॉफ़्टवेयर / हार्डवेयर मिडी सिंथेट को स्थापित करने की आवश्यकता है। मेरा timidity
पोर्ट 128 पर चल रहा है । ( मदद के लिए यहां देखें )
ALSASound[snd_, "MIDI"] :=
Module[{playCmd = "aplaymidi", port = "128:0", soundFileName},
soundFileName = "/dev/shm/" <> ToString[Unique["MmaSound"]] <> ".mid";
playCmd = playCmd <> " -p " <> port <> " " <> soundFileName;
Export[soundFileName, snd, "MIDI"];
Run["(" <> playCmd <> ";" <> "/bin/rm -f " <> soundFileName <> ")&"];]
जैसे, ALSASound[Sound[SoundNote /@ CharacterRange["A", "G"]], "MIDI"]
अब आप ALSASound
किसी भी ध्वनि ऑब्जेक्ट के चारों ओर उपयुक्त कमांड लपेट सकते हैं । तुम भी Play
उपयोग करने के लिए फिर से परिभाषित कर सकते हैं ALSASound
:
SetOptions[Play, DisplayFunction -> ((ALSASound[#, "WAV"]; #) &)];
यह अनिवार्य रूप से $ SoundDisplayFunction की स्थापना के बराबर है , जैसा कि इंटरनेट के आसपास कई चर्चाओं द्वारा अनुशंसित है। यह विकल्प सेटिंग ध्वनि को चलाएगा, फिर सामान्य ग्राफिक्स का उत्पादन करेगा।
Play[Sin[1000 t^2], {t, 0, 1}]
लेकिन स्टार्ट / स्टॉप बटन काम नहीं करेंगे, क्योंकि वे आधारित हैं EmitSound
।
एक साधारण Beep[]
समकक्ष बनाने के लिए , प्रयास करें
ALSABeep[] := Play[Sin[5000 t], {t, 0, .1},
DisplayFunction -> (ALSASound[#, "WAV"]&)]
अंत में, यदि आप त्योहार टेक्स्ट-टू-स्पीच (या कोई अन्य टेक्स्ट-टू-स्पीच प्रोग्राम) स्थापित करते हैं, तो आप मैथेमेटिका Speak
कार्यक्षमता को प्रतिस्थापित कर सकते हैं , जैसे।
FestivalSpeak[str_String] := (Run["(echo \"" <> str <> "\" | esddsp festival --tts)&"];)
FestivalSpeak[expr_] := FestivalSpeak[SpokenString[expr]]