पर ध्वनि रिकॉर्ड करने के लिए रूबी में पोर्टऑडियो डिपर का उपयोग करके मैं हाल ही में रूबी के साथ खेल रहा हूं, और मैंने एक रूबी स्क्रिप्ट लिखने के लिए एक सरल प्रोजेक्ट शुरू करने का निर्णय लिया जो .wav
फ़ाइल में लाइन-इन ध्वनि रिकॉर्ड करता है। मैंने पाया कि रूबी हार्डवेयर उपकरणों (और शायद यह नहीं होना चाहिए) तक बहुत अच्छी पहुंच प्रदान नहीं करता है, लेकिन पोर्टऑडियो ऐसा करता है, और मैंने पीए here के लिए एक महान रैपर खोजा (यह एक मणि नहीं है, मुझे लगता है क्योंकि यह रूबी का उपयोग करता है PortAudio से जुड़ने के लिए ffi
, और पीए लाइब्रेरी विभिन्न स्थानों में हो सकती है)। मैं पोर्टऑडियो के दस्तावेज और उदाहरणों के माध्यम से गड़बड़ कर रहा हूं कि यह पता लगाने के लिए कि पीए कैसे काम करता है। मैंने वर्षों में C
लिखा या पढ़ा नहीं है।.wav
मैं सृजन के दौरान एक धारा में गुजरने वाले पैरामीटर के साथ कठिनाई में भाग रहा हूं, और सृजन के दौरान एक बफर। उदाहरण के लिए, frame
वास्तव में क्या है, और यह channel
और sample rate
जैसे अन्य पैरामीटर से कैसे संबंधित है। मैं सामान्य रूप से ऑडियो प्रोग्रामिंग के लिए पूरी तरह से नया हूं, इसलिए अगर कोई मुझे कुछ सामान्य ट्यूटोरियल आदि पर इंगित कर सकता है, तो डिवाइस स्तर ऑडियो के बारे में, मैं इसकी सराहना करता हूं।
ruby-portaudio
एक ऐसा उदाहरण प्रदान करता है जो एक स्ट्रीम और बफर बनाता है, बफर को पाप लहर लिखता है, फिर बफर को स्ट्रीम करने के लिए स्ट्रीम भेजता है। कुछ रूबी मुझे उदाहरण में विशेष रूप से लूप ब्लॉक में परेशानी हो रही है।
PortAudio.init
block_size = 1024
sr = 44100
step = 1.0/sr
time = 0.0
stream = PortAudio::Stream.open(
:sample_rate => sr,
:frames => block_size,
:output => {
:device => PortAudio::Device.default_output,
:channels => 1,
:sample_format => :float32
})
buffer = PortAudio::SampleBuffer.new(
:format => :float32,
:channels => 1,
:frames => block_size)
playing = true
Signal.trap('INT') { playing = false }
puts "Ctrl-C to exit"
stream.start
loop do
stream << buffer.fill { |frame, channel|
time += step
Math.cos(time * 2 * Math::PI * 440.0) * Math.cos(time * 2 * Math::PI)
}
break unless playing
end
stream.stop
अगर मैं जा रहा हूँ रिकॉर्ड कर रही है, मैं सही एक बफर में एक धारा को पढ़ने जाना चाहिए, तो वह बफर जोड़ तोड़ और इसे लिखने दायर करने के लिए?
इसके अलावा, अगर मैं यहां गलत पेड़ को भड़क रहा हूं, और ऐसा करने का एक आसान तरीका है (रूबी में), कुछ दिशा अच्छी होगी।
यहां http: // stackoverflow से संबंधित (डुप्ली नहीं) प्रश्न होने लगता है।कॉम/प्रश्न/2716987/रिकॉर्डिंग-ऑडियो-थ्रू-आरटीएमपी-रेल –