अच्छा कंपन


20

बीच बॉयज़ सॉन्ग गुड वाइब्रेशन्स में थेरिमिन की आवाज़ को अमर कर दिया गया है । कई लोग स्टार ट्रेक की मूल श्रृंखला के लिए थीम के साथ इसकी ध्वनि को भी जोड़ते हैं , हालांकि स्पष्ट रूप से यह एक सोप्रानो का अनुकरण था

इस चुनौती के लिए आपको एक उपचार लागू करना होगा ।

इनपुट

  • माउस या अन्य इनपुट डिवाइस (जैसे आप जॉयस्टिक का उपयोग कर सकते हैं) से 2 डायनामिक इनपुट लें, जो एक ऑडियो आउटपुट डिवाइस से एक टोन उत्पन्न करेगा जो निम्नानुसार है:
    • x बढ़ने से स्वर की आवृत्ति बढ़ जाएगी। ध्यान दें कि आवृत्ति संगीत के नोट के साथ तेजी से बढ़ती है, इसलिए आपको माउस एक्स स्थिति और संगीत नोट के बीच एक रैखिक संबंध लागू करना चाहिए, और
    • y बढ़ने से स्वर की मात्रा बढ़ जाएगी।
  • प्रतीत होता है कि असली थेरेमिन द्वारा निर्मित तरंग के बारे में भ्रम है , इसलिए सादगी के लिए, एक साइन वेव (या उसके करीब सन्निकटन) का उपयोग किया जाना चाहिए।

नियम

  • उत्पादित टोन में कम से कम 2-ऑक्टेव श्रेणी होनी चाहिए। अधिक रेंज स्वीकार्य है। A-440 की सीमा के भीतर होना चाहिए।
  • निरंतर चर आवृत्ति और आयाम की श्रव्य उपस्थिति बनाने के लिए, इनपुट डिवाइस से दोनों आयामों में विचार किए जाने वाले मानों की सीमा कम से कम 500 होनी चाहिए कार्यान्वयन माउस कर्सर स्थिति से इनपुट पढ़ने के लिए एक विंडो (कम से कम 500x500 पिक्सल) खोल सकते हैं। या खिड़की खोले बिना, निर्देशांक को सीधे माउस या अन्य इनपुट डिवाइस से पढ़ा जा सकता है।
  • कार्यक्रम को रोकने के लिए एक सरल साधन होना चाहिए - कुंजी-संयोजन, माउस-क्लिक या अन्य सामान्य इनपुट डिवाइस। CTRL-c पर्याप्त है।
  • किसी भी मानक पुस्तकालयों का उपयोग किया जा सकता है, जब तक कि वे किसी अन्य कार्य की आवश्यकता के साथ समाधान को पूरी तरह से लागू नहीं करते हैं।
  • कोड गोल्फ और I / O के लिए मानक नियम
  • आप माउस या इनपुट डिवाइस इनपुट बॉक्स पर ध्यान केंद्रित करने से रोक सकते हैं।

टिप्पणियाँ

  • क्योंकि आउटपुट टोन गतिशील रूप से उत्पन्न होता है, यह सुनिश्चित करने के लिए ध्यान रखा जाना चाहिए कि टोन एक सतत तरंग है; कि चरण या आयाम के अचानक परिवर्तन के कारण कोई श्रव्य क्लिक या चबूतरे नहीं हैं।
  • आप इनपुट आकार क्षेत्र को 500 से 500 तक सीमित कर सकते हैं लेकिन यह बड़ा हो सकता है।

यह , इसलिए किसी भी भाषा में सबसे कम जवाब जीतता है।

विशेष धन्यवाद

इस चुनौती को बनाने और सीक्रेट सांता के सैंडबॉक्स में पोस्ट करने के लिए डिजिटल ट्रॉमा का विशेष धन्यवाद। मैंने कुछ संपादन किए हैं और यहाँ मूल पोस्ट है।

जवाबों:


10

जावास्क्रिप्ट ईएस 6, 215 188 बाइट्स

यह Chrome और Edge में अच्छी तरह से काम करता है। फ़ायरफ़ॉक्स और सफारी इतना नहीं।

with(new AudioContext)o=createOscillator(onmousemove=e=>{o.frequency.value=9/innerWidth*e.x**2,v.gain.value=1-e.y/innerHeight}),v=createGain(),v.connect(destination),o.start(),o.connect(v)

@Darrylyeo की बदौलत 27 बाइट्स बचाए

इसे ऑनलाइन आज़माएं!

with(new AudioContext)o=createOscillator(onmousemove=e=>{o.frequency.value=9/innerWidth*e.x**2,v.gain.value=1-e.y/innerHeight}),v=createGain(),v.connect(destination),o.start(),o.connect(v)
<button onClick="o.stop()">Stop</button>


1
यह बहुत अच्छा है! मेरे पास बहुत ज्यादा मजेदार था
क्रिस्टोफर

2
धन्यवाद। मुझे लगता है कि यह वर्ग तरंग के साथ
powelles

1
इसे आज़माने और एक कान की बाली खो जाने के बारे में
क्रिस्टोफर

o.type='sine'यह अनावश्यक है क्योंकि यह डिफ़ॉल्ट है। आप document.onmousemoveबस को सरल बना सकते हैं onmousemove
darrylyeo

215 से 188 बाइट्स के लिए with(new AudioContext)o=createOscillator(onmousemove=e=>{o.frequency.value=9/innerWidth*e.x**2,v.gain.value=1-e.y/innerHeight}),v=createGain(),v.connect(destination),o.start(),o.connect(v)
गोल्फ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.