विषयसूची:

Arpeggiating सिंथेसाइज़र (मच्छर I): 6 कदम
Arpeggiating सिंथेसाइज़र (मच्छर I): 6 कदम

वीडियो: Arpeggiating सिंथेसाइज़र (मच्छर I): 6 कदम

वीडियो: Arpeggiating सिंथेसाइज़र (मच्छर I): 6 कदम
वीडियो: yeduta nilichindi choodu tutorial video on keyboard by Sreekaanth Ch 2024, जुलाई
Anonim
Arpeggiating सिंथेसाइज़र (मच्छर I)
Arpeggiating सिंथेसाइज़र (मच्छर I)

Mosquito I एक छोटा आर्पेगिएटिंग सिंथेसाइज़र है जो Arduino Nano और Mozzi साउंड सिंथेसिस लाइब्रेरी का उपयोग करता है। यह अट्ठाईस-चरणीय अनुक्रमों को चला सकता है लेकिन आप जितने चाहें उतने कस्टम अनुक्रम जोड़ सकते हैं। इसे स्थापित करना अपेक्षाकृत सरल है और इसके लिए बहुत सारे भागों की आवश्यकता नहीं होती है।

आपूर्ति:

  • Arduino नैनो (या किसी Arduino को वास्तव में काम करना चाहिए)
  • 5 ईए पोटेंशियोमीटर (10K रैखिक)
  • 2 ईए पुश बटन
  • 1 ईए एलईडी
  • 1 ईए प्रतिरोधी (330 ओम)
  • 2 ईए प्रतिरोधी (1K)
  • 1 ईए प्रतिरोधी (2K)
  • 1 ईए इलेक्ट्रोलाइटिक कैपेसिटर (100 यूएफ)
  • 1 ईए सिरेमिक कैपेसिटर (33 एनएफ)
  • 1 ईए स्टीरियो जैक
  • तार बांधना
  • ब्रेड बोर्ड

चरण 1: Arduino सेट करना

Arduino की स्थापना
Arduino की स्थापना
Arduino की स्थापना
Arduino की स्थापना

सबसे पहले, नैनो को ब्रेडबोर्ड पर लाएं और अपनी शक्ति स्थापित करें:

  1. नैनो को ब्रेडबोर्ड पर रखें। ऊपर इमेज में दिखाए अनुसार रखें। इसे ब्रेडबोर्ड के मध्य चैनल में फैला देना चाहिए। आप चाहते हैं कि यह ब्रेडबोर्ड के एक छोर की ओर स्थित हो, जिसमें USB पोर्ट उस तरफ हो। इस तरह जब हम इसे प्लग इन करते हैं तो केबल रास्ते में नहीं आएगी। यदि आप एक बड़े Arduino जैसे Uno या Mega का उपयोग कर रहे हैं, तो आप इसे निश्चित रूप से ब्रेडबोर्ड पर माउंट नहीं करेंगे।
  2. पावर रेल को Arduino से कनेक्ट करें। अपने ब्रेडबोर्ड के सकारात्मक (लाल) रेलों में से एक को तार या जम्पर तारों का उपयोग करके Arduino के 5V पिन से कनेक्ट करें। फिर किसी एक नेगेटिव (नीली) रेल को नैनो के GND पिन से कनेक्ट करें।
  3. पावर रेल को एक दूसरे से कनेक्ट करें। ब्रेडबोर्ड के दोनों किनारों पर रेल के साथ शक्ति प्राप्त करने के लिए, एक तरफ सकारात्मक रेल से दूसरी तरफ सकारात्मक रेल तक एक तार चलाकर ब्रेडबोर्ड के दोनों ओर रेल को एक दूसरे से कनेक्ट करें। इसे नकारात्मक रेल के साथ दोहराएं।

चरण 2: नियंत्रण जोड़ना

नियंत्रण जोड़ना
नियंत्रण जोड़ना

मच्छर I नियंत्रण के लिए पांच पोटेंशियोमीटर और दो बटन का उपयोग करता है।

पोटेंशियोमीटर:

  1. बर्तनों को ब्रेडबोर्ड पर रखें। बर्तन रखें ताकि प्रत्येक पिन अपनी पंक्ति में हो।
  2. बर्तनों को पावर रेल से कनेक्ट करें। ब्रेडबोर्ड पर किसी एक नेगेटिव रेल से प्रत्येक पॉट के लेफ्ट साइड पिन (यदि आप नॉब-साइड देख रहे हैं) को कनेक्ट करें। प्रत्येक बर्तन के दाहिने किनारे के पिन को ब्रेडबोर्ड के किसी एक सकारात्मक रेल से कनेक्ट करें।
  3. बर्तनों को Arduino से कनेक्ट करें। प्रत्येक पॉट के केंद्र पिन को Arduino पर एनालॉग पिन में से एक से कनेक्ट करें। पहले पॉट का सेंटर पिन A0 से कनेक्ट होता है, दूसरा पॉट A1 से और इसी तरह आखिरी पॉट A4 से जुड़ा होता है।

दबाकर लगाया जाने वाला बटन:

  1. ब्रेडबोर्ड पर बटन रखें। ब्रेडबोर्ड पर दो पुश बटन रखें ताकि वे केंद्र चैनल को फैला दें।
  2. सकारात्मक पक्षों को कनेक्ट करें। ब्रेडबोर्ड के एक तरफ, पुश-बटन के पिन में से एक को सकारात्मक रेल से कनेक्ट करें।
  3. नकारात्मक पक्षों को कनेक्ट करें। 1K रेसिस्टर्स में से एक को ब्रेडबोर्ड पर रखें ताकि एक सिरा पुश बटन के अप्रयुक्त पिन से जुड़ा हो और रेसिस्टर का दूसरा हिस्सा नेगेटिव रेल से जुड़ जाए।
  4. बटन को Arduino से कनेक्ट करें। पंक्ति पर एक तार चलाएँ जो बटन को नकारात्मक रेल से D2 पिन से जोड़ता है। दूसरे बटन के साथ भी ऐसा ही करें लेकिन इसे D3 से कनेक्ट करें।

चरण 3: आउटपुट जोड़ना

आउटपुट जोड़ना
आउटपुट जोड़ना

हम पिन 9 से ऑडियो आउटपुट कर रहे हैं और साथ ही प्रत्येक अनुक्रम के पहले चरण पर एक एलईडी फ्लैश कर रहे हैं। उसके लिए हार्डवेयर सेट अप करने का तरीका यहां बताया गया है।

एलईडी

  1. ब्रेडबोर्ड पर एक खाली जगह में एलईडी लगाएं।
  2. एलईडी के नेगेटिव (शॉर्ट) लेग को नेगेटिव रेल से कनेक्ट करें।
  3. करंट-लिमिटिंग रेसिस्टर लगाएं। 330 ओम रोकनेवाला के एक तरफ एलईडी के सकारात्मक (लंबे) पैर से कनेक्ट करें। Arduino के D4 को पिन करने के लिए रोकनेवाला के दूसरी तरफ कनेक्ट करें।

ऑडियो आउटपुट

  1. आरसी नेटवर्क लगाएं। Arduino से आउटपुट सिग्नल पिन 9 से आ रहा है लेकिन सिग्नल कुछ स्पीकर की तुलना में थोड़ा गर्म हो सकता है। इसे लाइन स्तर के करीब लाने के लिए, मैंने एक आरसी नेटवर्क जोड़ा है (नोट्स और वोल्ट द्वारा डिजाइन के आधार पर)। छवि/योजना में दिखाए गए अनुसार 2K रोकनेवाला के साथ 33nF और 100uF कैपेसिटर रखें। सुनिश्चित करें कि इलेक्ट्रोलाइटिक 100uF संधारित्र सही ध्रुवता के साथ जुड़ा हुआ है (सकारात्मक/लंबा पैर Arduino पर 9 पिन करने जा रहा है और जैक से जुड़ा नकारात्मक/छोटा पैर)।
  2. ऑडियो जैक के नकारात्मक पक्ष को जमीन से कनेक्ट करें। आपके द्वारा उपयोग किए जाने वाले प्रकार के आधार पर ऑडियो जैक कनेक्शन थोड़े भिन्न होंगे, लेकिन वे आम तौर पर समान काम करते हैं। हमें जैक की आस्तीन को जमीन से जोड़ने की जरूरत है। इसे कभी-कभी एक ऋण चिह्न के साथ चिह्नित किया जाता है या "आस्तीन", "अंगूठी", या "जीएनडी" के रूप में लेबल किया जाता है। यदि आपके ऑडियो जैक पर कोई लेबल नहीं हैं, तो आपको डेटाशीट से परामर्श करने की आवश्यकता हो सकती है या बस जैक का बारीकी से निरीक्षण करें और देखें कि क्या आप यह निर्धारित कर सकते हैं कि कौन सा पिन जैक की आस्तीन या बाहरी रिंग से जुड़ा है।
  3. ऑडियो जैक के सकारात्मक पक्ष को 100uF संधारित्र के नकारात्मक पक्ष से कनेक्ट करें। हमारा ऑडियो सिग्नल अब RC नेटवर्क के माध्यम से Arduino के पिन 9 से बहता है और 100uF कैपेसिटर के नकारात्मक पक्ष से निकलता है। हम इसे अपने ऑडियो जैक के सकारात्मक पक्ष से जोड़ेंगे। यह आमतौर पर एक प्लस चिह्न के साथ चिह्नित होता है या इसे "टिप" लेबल किया जा सकता है। दोबारा, यदि यह लेबल नहीं है, तो आपको यह पता लगाने के लिए इसका निरीक्षण करने की आवश्यकता हो सकती है कि कौन सा पिन जैक की नोक से कनेक्ट होगा। साथ ही, यदि आप स्टीरियो जैक का उपयोग कर रहे हैं, तो एल टिप और आर टिप कनेक्शन हो सकता है। चूंकि हम एक मोनो सिग्नल आउटपुट कर रहे हैं, आप केवल किसी एक टिप कनेक्शन से कनेक्ट कर सकते हैं।

महत्वपूर्ण: यदि आप पाते हैं कि ऑडियो बहुत शांत है तो आप चरण 1 में RC नेटवर्क को समाप्त करने और Arduino के पिन 9 से सीधे ऑडियो से कनेक्ट करने में सक्षम हो सकते हैं। यह ठीक होना चाहिए यदि आप बाहरी कंप्यूटर स्पीकर जैसे प्री-एम्प के साथ ऑडियो को किसी चीज़ से कनेक्ट कर रहे हैं, जहां आपके पास वॉल्यूम नॉब है, लेकिन मैं हेडफ़ोन, ईयरबड्स या स्पीकर से सीधे वायरिंग जैसी चीज़ों के लिए इसकी अनुशंसा नहीं करूंगा। यदि आप RC नेटवर्क को खत्म करने का निर्णय लेते हैं, तो मेरा सुझाव है कि Arduino को फायर करने से पहले अपने स्पीकर पर वॉल्यूम को पूरी तरह से कम कर दें, और फिर अपने स्पीकर को उड़ाने से बचने के लिए धीरे-धीरे वॉल्यूम बढ़ाएं।

सब कुछ सेट अप करने के बाद, दोबारा जांचें कि सभी कनेक्शन सही दिखते हैं और ऊपर की छवि और योजनाबद्ध से मेल खाते हैं

चरण 4: कोड अपलोड करना

अब जब हार्डवेयर पूरी तरह से सेटअप हो गया है, तो हम सॉफ्टवेयर पक्ष से निपटने के लिए तैयार हैं:

  1. Arduino IDE लॉन्च करें। अपने कंप्यूटर पर, Arduino IDE लॉन्च करें (यदि आपके पास यह नहीं है, तो आप इसे https://www.arduino.cc/en/software से डाउनलोड कर सकते हैं)।
  2. Mozzi लाइब्रेरी डाउनलोड करें। Mozzi लाइब्रेरी वह है जो हमें अपने Arduino को सिंथेसाइज़र के रूप में उपयोग करने की अनुमति देती है। इस लाइब्रेरी को अपने IDE में लाने के लिए Mozzi github पेज https://sensorium.github.io/Mozzi/download/ पर जाएं। हरे "कोड" बटन पर क्लिक करें और डाउनलोड ज़िप चुनें।
  3. ज़िप फ़ाइल से Mozzi लाइब्रेरी स्थापित करें। Arduino IDE में, Sketch->Include Library->Add. ZIP Library… पर जाएं। उस ज़िप फ़ाइल पर नेविगेट करें जिसे आपने इसे जोड़ने के लिए डाउनलोड किया था। अब आपको Mozzi को Sketch->Include Library अनुभाग के अंतर्गत सूचीबद्ध देखना चाहिए।
  4. मच्छर I Arduino कोड डाउनलोड करें। आप इसे मेरी जीथब साइट https://github.com/analogsketchbook/mosquito_one से प्राप्त कर सकते हैं। (ध्यान दें कि वायरिंग संदर्भ के लिए यदि आपको उनकी आवश्यकता है तो योजनाबद्ध भी उपलब्ध हैं।
  5. Arduino को कंप्यूटर से कनेक्ट करें और कोड अपलोड करें।

चरण 5: चारों ओर खिलवाड़

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

यहाँ नियंत्रण क्या करते हैं:

बर्तन:

दर: यह नियंत्रित करता है कि सीक्वेंसर कितनी तेजी से वापस खेलता है। इसे बंद करने से क्रम में असतत नोट्स बजता है। इसे ऊपर की ओर मोड़ने से नोट पूरी तरह से नए वेवफ़ॉर्म बनाने के लिए एक साथ स्मियर हो जाते हैं।

लेगाटो: दूसरा पॉट लेगाटो या नोट की लंबाई को नियंत्रित करता है। इसे और अधिक बाईं ओर मोड़ने से छोटे, स्टिकैटो नोट बनते हैं, जबकि इसे दाईं ओर मोड़ने से लंबे नोट बनते हैं।

पिच: यह अनुक्रम के लिए आधार पिच सेट करता है। पिच नियंत्रण MIDI मान सेट कर रहा है, इसलिए यह निरंतर पिच शिफ्ट के बजाय पिच को सेमीटोन में बढ़ाता/घटता है।

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

फिल्टर: यह नॉब लो पास फिल्टर की कटऑफ फ्रीक्वेंसी को नियंत्रित करता है। इसे बाईं ओर मोड़ने से उच्च आवृत्तियाँ कट जाती हैं, जिससे अधिक मफ़ल ध्वनि उत्पन्न होती है, जबकि इसे दाईं ओर मोड़ने से अधिक तेज़ ध्वनि उत्पन्न होती है।

बटन:

मच्छर के बीस से अधिक अलग-अलग दृश्य हैं जो इसे डिफ़ॉल्ट रूप से खेल सकते हैं। पुश बटन आपको यह चुनने की अनुमति देते हैं कि कौन सा क्रम चल रहा है। एक बटन आपको अनुक्रमों की सूची में ऊपर ले जाता है और दूसरा सूची में नीचे चला जाता है।

चरण 6: अनुकूलन

अनुकूलन
अनुकूलन

मैंने डिफ़ॉल्ट अनुक्रमों का एक गुच्छा जोड़ा है, ज्यादातर अलग-अलग पैमाने, लेकिन आप नोट्स के अनुक्रम को बदलने, नए जोड़ने, या अनुक्रम में नोट्स की संख्या बदलने के लिए कोड को काफी आसानी से अनुकूलित कर सकते हैं। यदि आप इसे कस्टमाइज़ करना चाहते हैं तो इसे कैसे किया जा रहा है, इसका विवरण नीचे दिया गया है।

मौजूदा क्रम में नोट्स बदलना

अनुक्रम नोट्स नामक सरणियों की एक सरणी में संग्रहीत होते हैं। प्रत्येक नोट को MIDI नोट मान के रूप में संग्रहीत किया जाता है, इसलिए यदि आप किसी विशेष क्रम में नोट बदलना चाहते हैं, तो बस उस क्रम के लिए MIDI नोट संख्या बदलें। डिफ़ॉल्ट सेटअप प्रति अनुक्रम 8 चरणों को चलाने के लिए है ताकि आपके पास अनुक्रम में केवल 8 MIDI मान हो सकें (यदि आप अलग-अलग अनुक्रम लंबाई चाहते हैं तो नीचे देखें)।

एक बात ध्यान देने योग्य है, पिच नॉब नोट्स सरणी में निर्दिष्ट MIDI मानों के लिए एक नोट ऑफ़सेट जोड़ता है। जब घुंडी केंद्रित होती है, तो यह सरणी में इंगित MIDI नोटों को बजाता है, लेकिन जैसे ही आप पिच नॉब को घुमाते हैं, यह खेले जा रहे नोटों में एक अर्ध-स्वर जोड़ता या घटाता है।

नए क्रम जोड़ना

आप केवल सूची के अंत में एक नया 8-नोट सरणी जोड़कर नोट्स सरणी में नए अनुक्रम जोड़ सकते हैं। यदि आप ऐसा करते हैं, तो आपको अनुक्रमों की नई संख्या से मिलान करने के लिए numSequences चर के मान को भी बदलना होगा। उदाहरण के लिए, नोट सरणी में डिफ़ॉल्ट रूप से 21 क्रम होते हैं, इसलिए numSequences चर 21 पर सेट होता है। यदि आप एक नया अनुक्रम जोड़ते हैं, तो आपको numSequences चर को 22 में बदलना होगा।

आप जितने चाहें उतने नए क्रम जोड़ सकते हैं।

अनुक्रम लंबाई बदलना

यदि आप अपने अनुक्रमों की लंबाई बदलना चाहते हैं (यदि आप 4-चरण या 16-चरण अनुक्रम कहना चाहते हैं), तो आप ऐसा कर सकते हैं, लेकिन एकमात्र चेतावनी यह है कि सभी अनुक्रमों की लंबाई समान होनी चाहिए। आपको अपने अनुक्रमों की लंबाई से मेल खाने के लिए numNotes चर भी सेट करना होगा।

अन्य परिवर्तन

ऐसे कई अन्य अनुकूलन हैं जो संभव हैं जैसे तरंग प्रकार स्विच करना, फ़िल्टर सेटिंग्स/मान, जो इस ट्यूटोरियल के दायरे से बाहर हैं। Mozzi कोड का पता लगाना पहली बार में थोड़ा चुनौतीपूर्ण हो सकता है, लेकिन मैंने कोड के विभिन्न हिस्सों को दिखाने के लिए जितना संभव हो सके कोड को दस्तावेज करने का प्रयास किया है।

Mozzi के लिए कोड के कुछ मुख्य भाग हैं जिनके काफी विशिष्ट उपयोग हैं और मैंने उन्हें नीचे सूचीबद्ध किया है ताकि आपको यह पता चल सके कि उनका उपयोग किस लिए किया जाता है:

  • सेटअप () - यदि आपने इस फ़ंक्शन से परिचित होने से पहले Arduinos के लिए प्रोग्राम किया है और Mozzi में इसका बहुत अधिक उपयोग किया जाता है। हम इसका उपयोग ज्यादातर ऑसिलेटर्स, फिल्टर्स आदि के लिए डिफ़ॉल्ट सेटिंग्स सेट करने के लिए करते हैं।
  • updateControl () - यह वह जगह है जहाँ Mozzi कोड के शेर का हिस्सा अपना काम कर रहा है। यह वह जगह है जहां हम पॉट और बटन मान पढ़ते हैं, मैप करते हैं और उन मानों को सिंथेसाइज़र में फीड करने के लिए बदलते हैं, और जहां अनुक्रमण किया जा रहा है।
  • updateAudio() - यह Mozzi लाइब्रेरी का अंतिम आउटपुट है। आम तौर पर यहां कोड बहुत छोटा और दुबला रखा जाता है क्योंकि Mozzi द्वारा इस फ़ंक्शन का उपयोग सभी घड़ी चक्रों को अधिकतम करने के लिए किया जा रहा है। जैसा कि आप मच्छर कोड में देख सकते हैं, यह थोड़ा गूढ़ हो सकता है लेकिन हम मूल रूप से अपने विभिन्न तरंगों का संयोजन/गुणा कर रहे हैं और फिर उन्हें एक विशिष्ट संख्या सीमा में फिट करने के लिए बिटशिफ्टिंग कर रहे हैं। इस फ़ंक्शन को बहुत हल्का रखना सबसे अच्छा है (सीरियल कॉल या रीडिंग पिन नहीं) और इसके बजाय अधिकांश सामान controlUpdate() फ़ंक्शन में रखें। Mozzi दस्तावेज़ीकरण इसका अधिक विस्तार से विवरण देता है।

सिफारिश की: