अर्डुइनो चिप्पट्यून्स

Arduino चिपट्यून्स: 8 स्टेप्स (तस्वीरों के साथ)

मैं प्रोग्रामिंग का बहुत बड़ा प्रशंसक नहीं हूं। मुझे यह पसंद आ सकता है, लेकिन मैं इसे इस ible की तरह 555 टाइमर तक सीमित रखने की कोशिश करता हूं। हालांकि, जब सिंथेसाइज़र की बात आती है, तो मुझे आईईए प्रोग्रामिंग की आवश्यकता होती है। एक दिन, सिंथेसाइज़र की खोज करते हुए, मुझे कुछ चीप ट्यूनट्स के रूप में जाना गया।

मैंने सुनने का फैसला किया और संगीत को वास्तव में भयानक पाया। इसलिए मैंने इसे Arduino के साथ बनाने की कोशिश की। काम नहीं किया। कोड Arduino भाषा में नहीं था। इंटरनेट फ़ोरम के कुछ ब्राउज़िंग ने मुझे यह पता लगाने के लिए प्रेरित किया कि स्टीमर के नाम से एक Arduino फ़ोरम उपयोगकर्ता ने Arduino को Linus Hardwarekesson's Hardware Chiptune Project में पोर्ट किया था।

और अब, यहां वह परियोजना है।

आपूर्ति:

चरण 1: लाभ और हानि।

आपको लाभ होगा:

एक मशीन जब आप इसे सक्रिय करने के लिए एक बटन धक्का हर बार एक धुन खेलने में सक्षम।


आप खो देंगे: (सामग्री)

एक अरुडुइनो
एक वक्ता + संभवतः एक amp
2 जम्पर तार (यदि आपके स्पीकर में पहले से ही नहीं है)

चरण 2: मुझे किस प्रकार के वक्ताओं का उपयोग करना चाहिए?

इन दिनों बाजार में कई स्पीकर उपलब्ध हैं।

कुछ में 3.5 मिमी जैक और एम्पलीफायर हैं। बहुत बुरा आप शायद उन्हें अपने फोन के लिए बचाना चाहते हैं।

कुछ में तार, कॉइल और एक चुंबक है - उजागर।

हेक, आप हेडफ़ोन का उपयोग भी कर सकते हैं - यह मानते हुए कि यह सुगंधर या किसी अन्य समान पदार्थ द्वारा एक साथ आयोजित नहीं किया गया है।

चरण 3: प्रोग्रामिंग।

नीचे से कोड कॉपी करके शुरू करें।

फिर, कोड को Arduino एडिटर में कॉपी और पेस्ट करें।

संकलित करें। अपलोड करें।

आप सॉफ्टवेयर के साथ कर रहे हैं।


#include #include #include #define TRACKLEN 32 #define मैक्सट्रैक 0x92 #define SONGLEN 0x37 #include एक्सटर्नल "C" {typedef unsc char char8; typedef अहस्ताक्षरित लघु u16; typedef char s8; typedef शॉर्ट s16; typedef अहस्ताक्षरित लंबे u32; const byte songdata [] PROGMEM = {0x77, 0x00, 0x2a, 0x84, 0x05, 0xbb, 0x90, 0x18, 0x40, 0x3c, 0x6c, 0x50, 0x01, 0xd1, 0x41, 0x3, 0x3, 0x3, 0x3। 0xa4, 0x44, 0x99, 0x30, 0x13, 0x67, 0x82, 0x50, 0x60, 0x0a, 0x53, 0x11, 0x2c, 0x9e, 0x45, 0x45, 0x188, 0x18, 0x18b, 0x3b, 0x183 0x39, 0x60, 0xc7, 0xf5, 0xe0, 0x1f, 0x1c, 0x64, 0x88, 0x84, 0x11, 0x3c, 0x482, 0x48, 0x49, 0x2d, 0x2d, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26 0x92, 0x53, 0x9e, 0x4a, 0x57, 0xb1, 0x2b, 0x8d, 0x45, 0xb5, 0x14, 0x97, 0x97, 0x32, 0x5e, 0x58, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83, 0x83 0x51, 0x63, 0x6c, 0xaa, 0xcd, 0xb8, 0xe1, 0x37, 0x10, 0x27, 0xe5, 0x54, 0x1d, 0xb9, 0x73, 0x7a, 0x72a, 0x72, 0x72, 0xf2, 0x2, 0x2, 0x2, 0x2 0x1b, 0x00, 0x00, 0xa8, 0xb5, 0x00, 0x80, 0x9b, 0x2b, 0x00, 0x00, 0x00, 0x002, 0x00, 0x00, 0x20, 0x90, 0x18, 0x18, 0x2, 0x2, 0x2 0x4c, 0x02, 0x09, 0x00, 0x25, 0x90, 0x00, 0x54, 0x0e, 0x09, 0xc0, 0x24, 0x90, 0x00, 0x4c, 0x02, 0x09, 0x00, 0x25, 0x90, 0x00, 0x54, 0x02, 0x09, 0x2, 0x24, 0x90, 0x50, 0x02, 0x89, 0x05, 0x25, 0x90, 0x90, 0x90, 0x90, 0x90, 0x902 0x90, 0x70, 0x4c, 0x02, 0x89, 0x07, 0x25, 0x90, 0x90, 0x5c, 0x0e, 0x89, 0xc6, 0x44, 0x60, 0x2c, 0x7c, 0x77, 0x77, 0x77, 0x77, 0x77 0xa9, 0x8d, 0x48, 0x88, 0x3e, 0xce, 0x48, 0xa0, 0xea, 0x90, 0x04, 0x2c, 0x4, 0xe9, 0xb0, 0x1a, 0x1a, 0x02, 0x892, 0x892, 0x89 0x89, 0x58, 0x25, 0x90, 0x90, 0x4, 0x02, 0x89, 0xd9, 0x24, 0x90, 0xa0, 0x51, 0x02, 0x89, 0xd8, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 0x82, 0xf0, 0x7c, 0x26, 0x35, 0x84, 0xf1, 0x64, 0x66, 0x35, 0x82, 0xf2, 0x6c, 0xe6, 0x82, 0x82, 0x9, 0x9, 0x84, 0x346, 0x346, 0x346 0x84, 0xc9, 0x8c, 0x66, 0x35, 0x8e, 0xc9, 0x8c, 0xe6, 0x34, 0x8c, 0xf8, 0xcc7, 0x34, 0x8c, 0x88, 0x88, 0x27, 0x27, 0x27, 0x8 0x8c, 0xf8, 0xcc, 0xe7, 0x34, 0x8c, 0xf8, 0xcc, 0xe7, 0x34, 0x8c, 0xf8, 0xcc, 0x27, 0x27, 0x35, 0x88, 0xed , 0xcc, 0xe7, 0x35, 0x90, 0xee, 0x28, 0x5a, 0x03, 0x09, 0x03, 0x08, 0xff, 0x07, 0x019, 0x09, 0x02, 0x02, 0x01, 0x09, 0x90, 0x90, 0x902 , 0x08, 0xff, 0x09, 0x03, 0x07, 0x02, 0x09, 0x02, 0x0b, 0x31, 0x01, 0x70, 0x05, 0x07, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02 , 0x0b, 0x31, 0x08, 0xff, 0x02, 0xf0, 0x07, 0x06, 0x02, 0x00, 0x07, 0x16a, 0x25, 0x25, 0x009, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 , 0x0b, 0x3d, 0x02, 0xf0, 0x07, 0x06, 0x02, 0x00, 0x07, 0x20, 0x02, 0x000, 0x009, 0x08, 0x08, 0x08, 0x7, 0x7, 0x7, 0x7 , 0x0b, 0x31, 0x07, 0x05, 0x02, 0xfe, 0x00, 0x09, 0x02, 0x01, 0x80, 0x0b, 0x3d, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08 , 0x07, 0x16, 0x0a, 0x34, 0x00, 0x09, 0x03, 0x08, 0xff, 0x02, 0xfc, 0x00, 0x003, 0x009, 0x03, 0x03, 0x08, 0x08, 0xff, 0x0, 0x08 , 0xff, 0x0b, 0x3d, 0x07, 0x03, 0x0b, 0x38, 0x07, 0x03, 0x0b, 0x34, 0x07, 0x03, 0x0b, 0x31, 0x31, 0x07, 0x07, 0x07 03, 0x04, 0x07, 0x00, 0x03, 0x00, 0x09, 0x03, 0x08, 0xff, 0x07, 0x01, 0x09, 0x06, 0x05, 0x02, 0x02, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x03, 0x03, 0x03, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x07, 0x03, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x03, 0x07, 0x07, 0x07, 0x03, 0x03, 0x07, 0x07, 0x07 का उपयोग करें। 0x03, 0x0b, 0x35, 0x07, 0x03, 0x0b, 0x31, 0x07, 0x03, 0x04, 0x07, 0x007, 0x003, 0x009, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03 0xff, 0x0b, 0x3d, 0x07, 0x03, 0x0b, 0x38, 0x07, 0x03, 0x0b, 0x36, 0x07, 0x03, 0x0b, 0x31, 0x07, 0x03, 0x04, 0x07, 0x00, 0x09, 0x03, 0x08, 0xff, 0x07, 0x01, 0x09, 0x00, 0x06, 0x05, 0x0b, 0x3d, 0x02, 0xf0, 0x07, 0x06, 0x02, 0x007, 0x06, 0x0a, 0x0a, 0x0a, 0x0, 0x0, 0x00, 0x00, 0x00, 0x00, 0x06 0x08, 0xc4, 0x09, 0x00, 0x06, 0x05, 0x0b, 0x3d, 0x02, 0xf0, 0x07, 0x06, 0x006, 0x07, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 0x0d, 0x2c, 0x23, 0x58, 0x23, 0x00, 0xb4, 0x81, 0x80, 0x44, 0xc44, 0x34, 0x90, 0x06, 0x02, 0x02, 0x32, 0x32, 0x02, 0x60, 0x8 0x6b, 0x04, 0xd2, 0x00, 0x00, 0x2c, 0x23, 0x00, 0x80, 0x35, 0x02, 0x00, 0x90, 0x06, 0x80, 0x80, 0x04, 0x00, 0x00, 0x00, 0x94, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38 0x96, 0x18, 0x12, 0x03, 0x90, 0x18, 0xc2, 0x42, 0x58, 0x00, 0xc2, 0x42, 0x4, 0x48, 0x09, 0x01, 0x21, 0x20, 0x20, 0x2b, 0x2b, 0x2, 0x2, 0x2, 0x2, 0x2 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, 0x118, 0x6a, 0x8d, 0x48, 0x23, 0x0d, 0x81, 0x81, 0x81, 0x65, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84 0x01, 0xd6, 0x08, 0xa4, 0x81, 0x65, 0x84, 0x08, 0xb5, 0x46, 0x20, 0x0d, 0x81, 0x81, 0x65, 0x84, 0x84, 0x08, 0x465, 0x465, 0x465, 0x465 0x6b, 0x04, 0x00, 0x20, 0x0d, 0x2c, 0x23, 0x44, 0x80, 0x35, 0x02, 0x40, 0x1b, 0x08, 0x98, 0x6, 0x32, 0x42, 0x42, 0x58, 0x04, 0x58, 0x58 0x32, 0x82, 0x35, 0x02, 0xcb, 0x08, 0x11, 0x20, 0x19, 0x22, 0x00, 0x6b, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00। 0xa7, 0xd1, 0x00, 0x20, 0x25, 0x84, 0x86, 0xcc, 0x90, 0x12, 0x12, 0x43, 0x6c, 0x8, 0x0c, 0xa1, 0x21 , 0x25, 0x84, 0x86, 0xcc, 0x90, 0x12, 0x12, 0x43, 0x66, 0x8b, 0x0b, 0xc7, 0xcd, 0x00, 0x00, 0x44, 0x60, 0x00, 0x48, 0x48, 0x20, 0x20, 0x20 , 0x44, 0x20, 0x22, 0x00, 0x82, 0x23, 0x02, 0x24, 0x07, 0x10, 0x01, 0x62, 0x23, 0x23, 0xa4, 0x87, 0x87, 0x00, 0x00, 0x3, 0x3, 0x3, 0x3, 0x3 , 0x00, 0x22, 0x30, 0x00, 0x04, 0x87, 0xd8, 0x10, 0x1a, 0x11, 0x20, 0x31, 0x80, 0x08, 0x10, 0x1a, 0x11, 0x20, 0x20, 0x4, 0x4, 0x4, 0x208 , 0x80, 0x00, 0x91, 0x1e, 0x80, 0xe4, 0x10, 0x21, 0x02, 0x44, 0x7e, 0x08, 0x11, 0x11, 0x3b, 0x3b, 0x1, 0x1, 0x1, 0x1, 0x21, 0x1, 0x1 , 0x03, 0x11, 0x00, 0xe9, 0x01, 0x00, 0x00, 0x00, 0x00, 0x28, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00b, 0x8b, 0x0d, 0x11, 0x20, 0x20, 0x20 , 0x88, 0x00, 0x48, 0x8c, 0x08, 0x1c, 0x1b, 0x11, 0x20, 0x20, 0x22, 0x40, 0x70, 0x701, 0x85, 0x86, 0x86, 0x88, 0x88, 0x00, 0x00, 0x00, 0x8 , 0x44, 0x80, 0xc4, 0x00, 0x00, 0x63, 0x0d, 0xe7, 0x3f, 0x25, 0x24, 0x86, 0x94, 0x10, 0x16, 0x16, 0x52, 0x 42, 0x62, 0x1c, 0x80, 0x94, 0x10, 0x5a, 0x66, 0x89, 0x85, 0x15, 0x55, 0x50, 0x29, 0x05, 0x14, 0x3c, 0x3c, 0xf9, 0xf9, 0x944, 0x944, 0x944 0x07, 0x2b, 0x0d, 0xe7, 0x3f, 0x19, 0x24, 0x83, 0xa0, 0x90, 0x0c, 0x52, 0x42, 0x58, 0x8, 0x8, 0x29, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19। 0xe2, 0x00, 0xa4, 0x94, 0x53, 0x50, 0x61, 0x01, 0x63, 0x0d, 0xe7, 0x3f, 0x31, 0x24, 0x83, 0xb0, 0x90, 0x12, 0x12, 0x92, 0x12, 0x80, 0x08, 0x90, 0x0c, 0xe7, 0x3f, 0x2c, 0xa4, 0x84, 0x64, 0x90, 0x12, 0x92, 0x00, 0x00, 0x84, 0x45, 0x45, 0x45, 0x8, 0x8, 0x8, 0x8, 0x8 0x20, 0x36, 0x00, 0xc1, 0x11, 0x01, 0x81, 0xd0, 0x90, 0x5d, 0x72, 0xc1, 0x21, 0x21b, 0xa4, 0x87, 0x87, 0x88, 0x88, 0x00, 0x00, 0x11, 0x11, 0x11 0x36, 0x00, 0x6b, 0x14, 0x12, 0x00, 0x00, 0x80, 0x008, 0x00, 0xc4, 0x10, 0x44, 0x16, 0x48, 0x03, 0x09, 0x20, 0x20, 0x00, 0x20, 0x20, 0x00, 0x00, 0x00, 0x20 0x00, 0xb0, 0x46, 0x01, 0x44, 0x40, 0x20, 0x0d, 0x10, 0x01, 0x90, 0x06, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x14, 0x00, 0x20, 0x15, 0x10, 0x01, 0x10, 0x08, 0x92, 0x40, 0x0c, 0xc8, 0x02, 0x59, 0x44, 0x44, 0x80, 0x80, 0x20, 0x20, 0x20 0x44, 0x60, 0x20, 0x08, 0x00, 0x0b, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x14, 0x01, 0x10, 0x08, 0x92, 0x40, 0x0c, 0x08, 0x02, 0x41, 0x00, 0x44, 0x80, 0x20, 0x88, 0xc0, 0x40, 0x44, 0x44, 0x60, 0x20, 0x20, 0x20, 0x20 0x00, 0x00, 0x80, 0x8c, 0x40, 0x04, 0x40, 0x56, 0x00, 0x40, 0x04, 0x88, 0x0a, 0x00, 0x88, 0x00, 0x41, 0x01, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x82, 0x22, 0x02, 0x44, 0x05, 0x00, 0x00, 0x00, 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x005 0x00, 0x00, 0x42, 0x02, 0x58, 0xf8, 0x00, 0x00, 0x1b, 0x19, 0x00, 0x00, 0xa0, 0x00c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x008, 0x008 0x80, 0x9c, 0x10, 0x14, 0x80, 0xa0, 0x10, 0x15, 0x00, 0x0a, 0x3e, 0x80, 0xb4, 0x00, 0xa4, 0x85, 0xa8 , 0x88, 0x00, 0x21, 0x11, 0x01, 0x32, 0x22, 0x02, 0x00, 0x43, 0x19, 0x00, 0x0a, 0x3f, 0x80, 0x00, 0x50, 0x50, 0x508, 0x018, 0x01, 0x018 , 0x20, 0x26, 0xb0, 0x06, 0x00, 0x00, 0x43, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 , 0x08, 0x80, 0x2c, 0x10, 0x07, 0xf2, 0x40, 0x008, 0x00, 0x42, 0x40, 0x20, 0x002, 0x40, 0x20, 0x20, 0x64, 0x11, 0x11, 0x11, 0x11, 0x02 , 0x0b, 0x80, 0x18, 0x90, 0x04, 0xa2, 0x40, 0x16, 0x00, 0x002, 0x00, 0x10, 0x07, 0x80c, 0x58, 0x58, 0x000, 0x000, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63 , 0x20, 0x0a, 0x84, 0x01, 0x22, 0x00, 0xa2, 0x40, 0x18, 0x08, 0x03, 0x44, 0x00, 0x804, 0x80c, 0x3c, 0x07, 0x07, 0x407, 0x407, 0x407 , 0x00, 0x90, 0x09, 0x80, 0x40, 0x10, 0x07, 0xb2, 0x40, 0x12, 0x39, 0xe4, 0x92, 0x4, 0x81, 0x81, 0x4, 0x4, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44, 0x44 , 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x63, 0x14, 0x00, 0x 00, 0x00, 0x80, 0x30, 0x00, 0xc4, 0x01, 0x00, 0x00, 0x00, 0x20, 0x0e, 0x00, 0x83, 0x14, 0x20, 0x20, 0x10, 0x01, 0x01, 0x01, 0x84, 0x84, 0x84, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x1d, 0x00, 0x00, 0x00, 0x86, 0x42, 0x00, 0x41, 0x11, 0x01, 0x82, 0x02, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84, 0x84 0x02, 0x04, 0x05, 0x00, 0x1b, 0x25, 0x00, 0x01, 0x01, 0xf2, 0x22, 0x02, 0x02, 0x19, 0x01, 0x8, 0x88, 0x90, 0x90, 0x90, 0x90, 0x90, 0x90 0xbc, 0x90, 0x11, 0x00, 0x23, 0x25, 0x00, 0x01, 0x01, 0x02, 0x23, 0x02, 0x02, 0x21, 0x01, 0x08, 0x898, 0x898, 0x08, 0x12, 0x12, 0x12 0x10, 0x18, 0x11, 0x20, 0x24, 0x00, 0x5b, 0x25, 0x11, 0x20, 0x1f, 0x80, 0x08, 0x90, 0x15, 0x11, 0x20b, 0x2b, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40 0x22, 0x40, 0x56, 0x44, 0x80, 0x7c, 0x00, 0x22, 0x40, 0x3e, 0x00, 0xb2, 0x22, 0x02, 0x02, 0xf9, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01 0x81, 0x81, 0x08, 0x80, 0xc0, 0x88, 0x00, 0x21, 0x01, 0x88, 0x09, 0x44, 0x00, 0xc4, 0x44, 0x44, 0x04, 0x88, 0 0x0c, 0x20, 0x02, 0x44, 0x46, 0x04, 0x88, 0x89, 0x08, 0x10, 0x19, 0x11, 0x00, 0xa3, 0x25, 0x42, 0x2d, 0x2d, 0x2d, 0x22, 0x22, 0x22, 0x22, 0x22 0x28, 0x22, 0x40, 0x50, 0x08, 0x0d, 0x41, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x003, 0x29, 0x42, 0x0a, 0x2a, 0x2a, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22। 0x28, 0x22, 0x40, 0x50, 0x00, 0x42, 0x43, 0x68, 0xa1, 0x85, 0x46, 0x04, 0x08, 0x0a, 0x44, 0x00, 0x45, 0x45, 0x45, 0x45, 0x4, 0x8, 0x8, 0x8 0x00, 0x00, 0x00, 0x00, 0x00, 0xc8, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x2b, 0x1d, 0x00, 0x00, 0x18, 0x6b, 0x91, 0x12, 0x80, 0xb0, 0x90, 0x18, 0x2, 0x42, 0x88, 0x8d, 0x8d, 0x8d, 0x8d, 0x8d 0x88, 0x0d, 0xc3, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00c, 0xa1, 0x5, 0x96, 0x5b, 0x70, 0x70, 0x70, 0x009, 0x009 0x00, 0x48, 0x0f, 0x40, 0x80, 0x00, 0xf2, 0x23, 0x02, 0x64, 0x07, 0x22, 0x00, 0x82, 0x03, 0x10, 0x1c , 0x11, 0x20, 0x3f, 0x64, 0x07, 0x03, 0x6e, 0x7e, 0x79, 0x05, 0x17, 0x5a, 0x661, 0x65, 0x65, 0x16a, 0x16a, 0x66a, 0x66, 0x66, 0x66, 0x66, 0x663 , 0x95, 0x18, 0x11, 0x20, 0x31, 0x22, 0x40, 0x62, 0x44, 0x80, 0x4, 0x00, 0x22, 0x40, 0x62, 0x44, 0x80, 0x804, 0x88, 0x88, 0x00, 0x89, 0x89, 0x004 , 0x2e, 0x12, 0x43, 0x62, 0x48, 0x0f, 0x89, 0x21, 0x3d, 0x44, 0x18, 0x60, 0x7e, 0x08, 0x89, 0x21, 0x21, 0x31, 0x31, 0x31, 0x04, 0x874 , 0x30, 0x3f, 0x00, 0xfb, 0x2d, 0x02, 0x24, 0x02, 0x84, 0x48, 0x04, 0x48, 0x6f, 0x4e, 0x9e, 0x70, 0x707, 0x707, 0x5, 0x2 , 0x1, 0x76, 0xc0, 0xde, 0x6f, 0xd7,0xeb, 0xc5, 0x76, 0xbf, 0xde, 0x6e, 0x17, 0xeb, 0xe1, 0x76, 0xbb, 0x1e, 0x6e, 0x87, 0x5, 0x5, 0x5, 0x4, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6, 0x6 0xa3, 0x0d, 0x00, 0x00, 0x48, 0x0c, 0x40, 0x68, 0x00, 0x32, 0x003, 0x00, 0x00, 0x89, 0x01, 0x8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 0x00, 0x00, 0x00, 0x80, 0xbd, 0x26, 0xb1, 0xcc, 0x00, 0x7f, 0x4, 0x41, 0x00, 0x48, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00। 0x2b, 0x21, 0x11, 0x20, 0x25, 0x80, 0x08, 0x90, 0x58, 0x62, 0x29, 0x11, 0x11, 0x52, 0x22, 0x02, 0x00, 0x29, 0x29, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 0x12, 0x11, 0x60, 0x25, 0x24, 0x02, 0x00, 0x29, 0x11, 0x01, 0x52, 0x22, 0x02, 0x444, 0x44, 0x04, 0x00, 0x00, 0xf, 0xf, 0x0, 0x0, 0x02 0xa4, 0x44, 0x04, 0x48, 0x86, 0x08, 0x90, 0x12, 0x11, 0x20, 0x19, 0x22, 0x40, 0x44a, 0x44, 0x80, 0x80, 0x88, 0x88, 0x00, 0x9, 0x10, 0x9, 0x9, 0x9 0xa4, 0x44, 0x04, 0x48, 0x86, 0x08, 0x90, 0x12, 0x11, 0xa0, 0x99, 0x01, 0x68, 0x46, 0x80, 0x80, 0x22, 0x22 , 0x02, 0xa4, 0x44, 0x04}; वाष्पशील u8 कॉलबैकवाइट; वाष्पशील u8 पिछले नमूना; वाष्पशील u8 टाइमटॉप; वाष्पशील u8 परीक्षण; वाष्पशील u8 टेस्टवाइट; u8 trackwait; u8 trackpos; u8 playong; u8 गीत; u32 noiseseed = 1; u8 प्रकाश [2]; / * स्थिरांक यू 16 freqtable [] = {0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165, 0x017a, 0x0191, 0x01a9, 0x01c2, 0x01dd, 0x01f9, 0x0217, 0x0237, 0x0259, 0x027d, 0x02a3, 0x02cb, 0x02f5, 0x0322, 0x0352 , 0x0385, 0x03ba, 0x03f3, 0x042f, 0x046f, 0x04b2, 0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5, 0x070a, 0x0775, 0x07e6, 0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c, 0x0bd6, 0x0c8b, 0x0d4a, 0x0e14 , 0x0eea, 0x0fcd, 0x10be, 0x11bd, 0x12cb, 0x13e9, 0x1518, 0x1659, 0x17ad, 0x1916, 0x1c94, 0x1c28, 0x1dd5, 0x1f5b, 0x1f5b, 0x2c0, 0x12cb, 0x1cb0, 0x1c5a, 0x1c5a, 0x2c08x0x08b0s0n08b0x05&vs=dr=08178&hl=hi&hl=hi, 0x1c5, 0x1c5, 0x1c5, 0x13bd, 0x1c5a, 0x2c0, 0x1c5, 0x13bd ; , 0x00c8, 0x00d4, 0x00e1, 0x00ee, 0x00fc, 0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165, 0x017a, 0x01aa, 0x01a9, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2। , 0x0352, 0x0385 , 0x03ba, 0x03f3, 0x042f, 0x046f, 0x04b2, 0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5, 0x070a, 0x0775, 0x07e6, 0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c, 0x0bd6, 0x0c8b, 0x0d4a, 0x0e14, 0x0eea , 0x0fcd, 0x10be, 0x11bd, 0x12cb, 0x13e9, 0x1518, 0x1659, 0x17ad, 0x1916, 0x1a94, 0x1dd28, 0x1dd5, 0x1f9b, 0x217c, 0x217c, 0x2177, 0x137, 0x137d, 0x12179, 0x2179, 0x137c, 0x137a }; const s8 sinetable [] = {०, १२, २५, ३able, ४ ९, ६०, able१, able१, able०, ९ able ९, ९ able२, ११able, ११able, १२१, १२२, १२२, १२२, १२२, १२२, १२२, १२२, ११२, ११२ , 106, 98, 90, 81, 71, 60, 49, 37, 25, 12, 0, -12, -25, -37, -49, -60, -71, -81, -90 और -98 में, -106, -112, -117, -122, -125, -126, -127, -126, -125, -122, -122, -117, -112, -106, -98, -90, -81 और -71 में , -60, -49, -37, -25, -12}; const u8 validcmds [] = "0dfijlmtvw ~ + ="; enum {WF_TRI, WF_SAW, WF_PUL, WF_NOI}; वाष्पशील संरचना थरथरानवाला {u16 freq; यू 16 चरण; यू 16 ड्यूटी; u8 तरंग; u8 मात्रा; // 0-255} दोस [4]; स्ट्रक्चर ट्रैकलाइन {u8 नोट; u8 इंस्ट्र; u8 cmd [2]; u8 परम [2]; }; स्ट्रक्चर ट्रैक {स्ट्रक्चर ट्रैकलाइन लाइन [ट्रैक]; }; स्ट्रक्चर अनपैकर {u16 nextbyte; u8 बफर; u8 बिट्स; }; स्ट्रक्चर चैनल {स्ट्रक्चर अनपैकर ट्रैकअप; u8 tnum; एस 8 ट्रांसप; u8 tnote; u8 lastinstr; u8 inum; u16 iptr; u8 iwait; u8 inote; s8 बेंडर्ड; s16 मोड़; s8 volumed; s16 ड्यूटिड; u8 vdepth; u8 vrate; u8 vpos; s16 जड़ता; u16 स्लर; } चैनल [4]; u16 संसाधन [16 + MAXTRACK]; संरचना अनपैकर गीत; बाइट रीड्सगॉन्बी (u16 ऑफसेट) {रिटर्न pgm_read_byte_near (& songdata [0] + ऑफसेट); } शून्य वॉचडॉग () {} शून्य इनिटअप (स्ट्रक्चर अनपैकर * अप, यू 16 ऑफसेट) {अप-> नेक्स्टाइट = ऑफसेट; अप-> बिट्स = 0; } u8 रीडबिट (स्ट्रक्चर अनपैकर * अप) {u8 val; if (अप-> बिट्स) {अप-> बफर = रीडसॉन्गबाइट (अप-> नेक्स्टाइट ++); अप-> बिट्स = 8; } अप-> बिट्स--; वैल = अप-> बफर & 1; ऊपर-> बफर >> = 1; वापसी घाटी; } u16 रीडचंक (स्ट्रक्चर अनपैकर * अप, u8 n) {u16 वैल = 0; u8 i; for (i = 0; i <n; i ++) {if (रीडबिट (अप)) = (1 << i); } वापसी घाटी; } शून्य रीडिनस्ट्रेट (बाइट संख्या, बाइट पॉज़, बाइट * डेस्ट) {डेस्ट [0] = रीड्सडॉन्बाइट (संसाधन [संख्या] + 2 * पॉज़ + 0); भाग्य [1] = readsongbyte (संसाधन [संख्या] + 2 * पॉस + 1); } void runcmd (u8 ch, u8 cmd, u8 param) {स्विच (वैधकांड [cmd]) {केस '0': चैनल [ch] .inum = 0; टूटना; मामला 'डी': दोस् [ch]। डुटुट = परम << 8; टूटना; मामला 'f': चैनल [ch] .volumed = param; टूटना; मामला 'i': चैनल [ch] .inertia = param << 1; टूटना; मामला 'जे': चैनल [ch] .iptr = परम; टूटना; मामला 'l': चैनल [ch] .bendd = param; टूटना; मामला 'm': चैनल [ch]। ड्यूट = param << 6; टूटना; मामला 't': चैनल [ch] .iwait = param; टूटना; मामला 'v': दोस् [ch] .volume = param; टूटना; मामला 'w': दोस् [ch] .waveform = param; टूटना; मामला '+': चैनल [ch] .inote = param + चैनल [ch] .tnote - 12 * 4; टूटना; मामला '=': चैनल [ch] .inote = परम; टूटना; मामला '~': अगर (चैनल [ch] .vdepth! = (param >> 4)) {चैनल [ch] .vpos = 0; } चैनल [ch] .vdepth = param >> 4; channel [ch] .vrate = param & 15; टूटना; }} शून्य playroutine () {// 50 हर्ट्ज u8 ch पर बुलाया; u8 रोशनी; if (playong) {if (ट्रैकवाइट) {trackwait--; } और {trackwait = 4; if (ट्रैकपोज़) {if (playong) {if (songpos> = SONGLEN) {playong = 0; } और {for (ch = 0; ch <4; ch ++) {u8 gottransp; u8 ट्रांसप; gottransp = readchunk (& songup, 1); चैनल [ch] .tnum = readchunk (& songup, 6); if (gottransp) = 0xf0; और {ट्रांसप = 0; } चैनल [ch] .transp = (s8) ट्रांसप; if (चैनल [ch] .tnum) {initup (& चैनल [ch] .trackup, संसाधन] [16 + चैनल [ch] .tnum - 1]); }} songpos ++; }}} अगर (playong) {के लिए (ch = 0; ch <4; ch ++) {if (चैनल [ch] .tnum) {u8 note, instr, cmd, param; u8 क्षेत्र; फ़ील्ड्स = रीडचंक (& चैनल [ch] .आट्रुप, 3); नोट = 0; instr = 0; cmd = 0; परम = 0; यदि (फ़ील्ड और 1) नोट = रीडचंक (और चैनल [ch] .ट्रैप, 7); if (फ़ील्ड & 2) instr = readchunk (& चैनल [ch] .trackup, 4); if (फ़ील्ड & 4) {cmd = readchunk (& चैनल [ch] .trackup, 4); param = readchunk (& channel [ch] .trackup, 8); } अगर (नोट) {चैनल [ch]। नोट = नोट + चैनल [ch] .transp; if (इं टर) instr = channel [ch] .lastinstr; } if (इंस्ट्र) {if (इंस्ट्र == 2) लाइट [१] = ५; if (instr == 1) {प्रकाश [0] = 5; if (चैनल [ch] .tnum == 4) {प्रकाश [०] = प्रकाश [१] = ३; }} अगर (instr == 7) {प्रकाश [०] = प्रकाश [१] = ३०; } चैनल [ch] .lastinstr = इंस्ट्र; चैनल [ch] .inum = इंस्ट्र; चैनल [ch] .iptr = 0; चैनल [ch] .iwait = 0; चैनल [ch] .bend = 0; चैनल [ch] .bendd = 0; चैनल [ch] .volumed = 0; चैनल [ch] .dutyd = 0; चैनल [ch] .vdepth = 0; } अगर (cmd) runcmd (ch, cmd, param); }} trackpos ++; trackpos & = 31; }}} के लिए (ch = 0; ch <4; ch ++) {s16 vol; यू 16 ड्यूटी; u16 स्लर; जबकि (चैनल [ch] .inum &&; चैनल [ch] .iwait) {u8 il [२]; readinstr (चैनल [ch] .inum, चैनल [ch] .iptr, il); चैनल [ch] .iptr ++; runcmd (ch, il [0], il [1]); } अगर (चैनल [ch] .iwait) चैनल [ch] .iwait--; if (चैनल [ch] .inertia) {s16 diff; slur = channel [ch] .slur; diff = freqtable [चैनल [ch] .inote] - स्लर; // diff >> = चैनल [ch] .inertia; if (diff> 0) {if (diff> चैनल [ch] .inertia) diff = चैनल [ch] .inertia; } और अगर (diff <0) {if (diff <-channel [ch] .inertia) diff = = -chan [ch] .inertia; } slur + = diff; channel [ch] .slur = slur; } और {slur = freqtable [चैनल [ch] .inote]; } osc [ch] .freq = slur + channel [ch] .bend + ((चैनल [ch] .vdepth * sinetable [चैनल [ch] .vpos & 63]) >> 2); चैनल [ch] .bend + = चैनल [ch] .bendd; vol = osc [ch] .volume + चैनल [ch] .volumed; if (vol <0) vol = 0; if (vol> 255) vol = 255; ऑस [च] .वोल्यूम = वॉल्यूम; कर्तव्य = दोस [ch]। डुट् + चैनल [ch]। ड्यूट; if (कर्तव्य> 0xe000) कर्तव्य = 0x2000; if (कर्तव्य <0x2000) कर्तव्य = 0xe000; दोस [सं-पु।] डूटी = कर्तव्य; channel [ch] .vpos + = channel [ch] .vrate; } रोशनी = 0; if (प्रकाश [0]) = 0x04; अगर (प्रकाश [1]) प्रकाश [1] -; लाइट्स PORTB = लाइट्स; } शून्य initresources () {u8 i; स्ट्रक्चर अनपैकर अप; initup (और ऊपर, 0); के लिए (i = 0; मैं <16 + MAXTRACK; i ++) {संसाधन [i] = readchunk (और ऊपर, 13); } initup (& songup, संसाधन [0]); } int main () {asm ("cli"); watchdogoff (); CLKPR = 0x80; CLKPR = 0x80; DDRC = 0x12; डीडीआरडी = 0xff; // PORTC = 0; pinMode (10, आउटपुट); pinMode (12, आउटपुट); समयावधि = 0; trackwait = 0; trackpos = 0; प्लेसॉन्ग = 1; गीत = ०; ऑस [को ०] ।वोल्यूम = ०; चैनल [0] .inum = 0; ऑस [१] .वोल्यूम = ०; चैनल [1] .inum = 0; ऑस [२] .वोल्यूम = ०; चैनल [2] .inum = 0; ऑस [३] .वोल्यूम = ०; चैनल [3] .inum = 0; initresources (); TCCR0A = 0x02; TCCR0B = 0x02; // clkIO / 8, इसलिए 1/8 मेगाहर्ट्ज OCR0A = 125; // 125; // 8 KHz TCCR2A = 0b10100011; TCCR2B = 0b00000001; TIMSK0 = 0x02; एएसएम ( "सेई"); (;;) के लिए {जबकि (समयरेखा); खेलने का समय--; playroutine (); }} ISR (TIMER0_COMPA_vect) // 8 KHz पर बुलाया {u8 i; s16 एसीसी; u8 newbit; OCR2B = lastsample; newbit = 0; if (noiseseed & 0x80000000L) newbit ^ = 1; if (noiseseed & 0x01000000L) newbit ^ = 1; if (noiseseed & 0x00000040L) newbit ^ = 1; if (noiseseed & 0x00000200L) newbit ^ = 1; noiseseed = (noiseseed << 1) | newbit; if (callbackwait) {callbackwait--; } और {टाइमटॉपप्ले ++; कॉलबैकविट = 180 - 1; } acc = 0; for (i = 0; i <4; i ++) {s8 value; // [-32,31] स्विच (थिस [[.waveform) {केस WF_TRI: if (थोर [i]। पेज़ <0x8000) {वैल्यू = -32 + (ऑस [i] .phase >> 9); } और {मान = 31 - ((दोस् थ [i .phase - 0x8000) >> 9); } टूटना; मामला WF_SAW: मान = -32 + (ऑस) [i .phase >> 10); टूटना; मामला WF_PUL: मान = (ऑस्स [i]। पेज़> थोस [i]। ड्यूट)? -32: 31; टूटना; मामला WF_NOI: मान = (noiseseed & 63) - 32; टूटना; डिफ़ॉल्ट: मान = 0; टूटना; } ऑस [i]। पेज़ + = ऑस [i] .freq; acc + = value * osc [i] .volume; // rhs = [-8160,7905]} // acc [-32640,31620] lastsample = 128 + (acc >> 8); // [1,251]}} 

चरण 4: विधानसभा।

आपको सॉफ्टवेयर के साथ किया जा सकता है, लेकिन हार्डवेयर समाप्त नहीं हुआ है।

अपने स्पीकर तारों में से एक ले लो, और फिर इसे पिन 3 में प्लग करें। फिर, दूसरे छोर को जमीन में प्लग करें ... या 5 वोल्ट, आपकी पसंद।

आपको संगीत बजाना सुनना चाहिए।

अब, रीसेट बटन को यहां से शुरू से हिट करें।

चरण 5: किया।

अब सुनो इसे धुन बजाओ।

चरण 6: एक जैक जोड़ना।

अपडेट के लिए रखें आपकी नजर ...

चरण 7: इसे संशोधित करें!

पिन 3 से जमीन पर एक एलईडी कनेक्ट करें।

फिर, लाइट श्रोता के साथ इसे सुनें।

मज़े करो!

चरण 8: इसे बीटबॉक्स बनाएं।

यहाँ बीटबॉक्स कोड है:

#include #include #include #define TRACKLEN 32 #define मैक्सट्रैक 0x92 #define SONGLEN 0x37 #include एक्सटर्नल "C" {typedef unsc char char8; typedef अहस्ताक्षरित लघु u16; typedef char s8; typedef शॉर्ट s16; typedef अहस्ताक्षरित लंबे u32; बाइट गीतडाटा [] PROGMEM = {0x34,0x80,0x0d, 0xe4,0x01,0x41,0x30,0x09,0x34,0x41,0x2c, 0xd0x05,0xc3,0x80,0x18, 0x14,0x03,0x63,0x70xx0x , 0x41,0x32,0x50,0x06,0xcb, 0xe0,0x1b, 0xcc, 0x83,0x83, 0xb0,0x11,0x5e, 0x42,0x51xd8,0x0a, 0x6f, 0x61,0x30,0x5c, 0x86,0x5c, 0x86,0x05 , 0xbc, 0xc3,0x7d, 0x80,0x10,0x02,0x08,0x06,0x40,0x90,0x60,0x00,0x00,0x06,0x08,0x06,080,0x90, 0x60,0x00,0x0a, 0x08,0x06x06x0x , 0x00,0x0a, 0x08,0x06,0xe0,0xa0,0x68,0x40, 0x02,0x08,0x86,0x43,0x90,0x90,0x60,0x00,06,0x08,0xc6,0x83,0x90,0x90,0x60,0xxxxxa, 0x00 , 0xc3,0xb0,0x60,0x00,0x0a, 0x08,0x86,0xe3,0xa0,0x68,0x40,0x09,0x02,0x08,0xa0, 0x01,0x80,0x0b, 0x19,0x07,0x04x02x2/2x02x , 0x00,0x08,0xff, 0x0b, 0x25,0x02, 0xf0,0x00,0x09,0x03,0x08,0xff, 0x07,0x01,0x09,0x02,0x01,0x90,0x0b, 0x31,0x00,0x00x00x00x , 0x09,0x03,0x08,0x80,0x02,0xe0,0x00,0x09,0x03,0x08,0xff, 0x07,0x01, 0x09,0x02,0x01,0x90,0x0b, 0x31,0x05,0x00xx0,0x007x , 0x08,0x80,0x02,0xf0, 0x00,0x09,0x01,0x08,0x60,0x0b, 0x31,0x02,0xf8,0x00,0x0,0x01,0x0,0x08,0x08xx0b, 0x31, 0x02,0xf0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xx, 0x04,0x80,0xa4,0x00, 0x04,0x03,0x0,0,029,0x29,0x00,0x00,0x00,0xx,0,0x0x0a। 0x40,0x3a, 0x00,0x92,0x02,0x00,0xeb, 0x04,0x80,0xa4,0x00,0x004x04,003,0x20,0x29,0x00xx9,0x00,0x48,0x0a, 0x40,0x3e, 0x00, 0x00, 0x00, 0x00,0x03,0x05,0x80,0xb0,0x00,0x04,0x04,0x20,0x2c, 0x00,0x01,0x01,0x08, 0x0b, 0x40,0x40,0x40,0x2,0x2,0x0,0x0,0x05,0x05x05x05x05xx 0x00,0x04,0x04,0x20,0x2c, 0x00,0x01,0x01,0x08xx0b, 0x40,0x44,0x00,0x00,0xe2,0x02,0x,0,0x23,0x05xx0,0x0,0x0,0x0,0x20,0x20xx 0x00,0x21,0x01,0x08,0x0c, 0x40,0x48,0x00,0x002x03xx33x00,0x23, 0x05,0x80,0xc0,0x00,0,084,0x0,0,0x,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x,08,0x08। 0x81,0x21,0x22, 0x00,0x71,0x21,0x22,0x00,0x23,0x05,0x80,0xc0,0x00,0x,0,0x,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x,09, 0x00,0xc8,0x09,0x40,0x36,0xc88। 0x06,0x39,0x21,0x27,0x00,0xx, 0x09,0x80,0xc0,0x00, 0x64,0x06,0x20,0x35,0x00,0x00,0x,09,0x,0,0x08,0x0c, 0x40,0x66,0x00,0x00,0x0,0x003x 0xab, 0x09,0x80,0xc0,0x00,0x64,0x06,0x20,0x35,0x00,0x00,0x009,0x01,0x08,0x0e, 0x40,0x6e, 0x00, 0x52,0x03,0x00,0xabx, 0x09,0x8 0,0xc0,0x00,0x64,0x06,0x20,0x30,0x00,0xc1,0x01,0xc8, 0x0d, 0x40,0x6a, 0x00,0x32,0x03x00,0xabx, 0x09,0x80,0xc0,0x00,0x64,0x0x6। 0x20,0x35, 0x00,0xa9,0x01,0x08,0x0c, 0x40,0x66,0x00,0x00,02,0x03,0x00,0xcb, 0x0c, 0x80,0x95,0x08, 0x29,0x61,0x99,0x02,0x00x12 0x58,0x66,0xb0,0x12,0x21,0x25,0x00,0xcb, 0x14, 0x80,0x95,0x08,0x00,0xcb, 0x0c, 0x80,0x95,0x0x08,0x29,0x61,0x99,0x02,0xb0,0x12,0x01 0x58,0x66,0x90,0x0c, 0x80,0x64,0xb0,0x4c, 0x21,0x19,0x2c, 0x33,0x00,0x00,0x83,0x1d, 0x80,0xc1,0x0c, 0x4b, 0x1d, 0x80,0x9c, 090 0x76,0x32,0x0c, 0x76,0x00,0x06,0x33, 0x2c, 0x75,0x00,0x96,0x32,0x00,0x00,0x00,0x63,0x1d, 0x80,0xb1,0x0c, 0x73,0x1d, 0x80,0xc4, 0x10 0x76,0x32,0x8c, 0x75,0x00,0x06,0x33,0xcc, 0x75,0x00,0xx6,0x32,0x00,0x00, 0x00,0x00,0x,0,0xx,0x00,0x30,0x30,0x01,0x88,0x0b, 0x40,0x58 0x00,0x72,0x42,0x52,0x58, 0xca, 0x00,}; वाष्पशील u8 कॉलबैकवाइट; वाष्पशील u8 पिछले नमूना; वाष्पशील u8 टाइमटॉप; वाष्पशील u8 परीक्षण; वाष्पशील u8 टेस्टवाइट; u8 trackwait; u8 trackpos; u8 playong; u8 गीत; u32 noiseseed = 1; u8 प्रकाश [2]; / * स्थिरांक यू 16 freqtable [] = {0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165, 0x017a, 0x0191, 0x01a9, 0x01c2, 0x01dd, 0x01f9, 0x0217, 0x0237, 0x0259, 0x027d, 0x02a3, 0x02cb, 0x02f5, 0x0322, 0x0352 , 0x0385, 0x03ba, 0x03f3, 0x042f, 0x046f, 0x04b2, 0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5, 0x070a, 0x0775, 0x07e6, 0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c, 0x0bd6, 0x0c8b, 0x0d4a, 0x0e14 , 0x0eea, 0x0fcd, 0x10be, 0x11bd, 0x12cb, 0x13e9, 0x1518, 0x1659, 0x17ad, 0x1916, 0x1c94, 0x1c28, 0x1dd5, 0x1f5b, 0x1f5b, 0x2c0, 0x12cb, 0x1cb0, 0x1c5a, 0x1c5a, 0x2c08x0x08b0s0n08b0x05&vs=dr=08178&hl=hi&hl=hi, 0x1c5, 0x1c5, 0x1c5, 0x13bd, 0x1c5a, 0x2c0, 0x1c5, 0x13bd ; , 0x00c8, 0x00d4, 0x00e1, 0x00ee, 0x00fc, 0x010b, 0x011b, 0x012c, 0x013e, 0x0151, 0x0165, 0x017a, 0x01aa, 0x01a9, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2, 0x01c2। , 0x0352, 0x0385 , 0x03ba, 0x03f3, 0x042f, 0x046f, 0x04b2, 0x04fa, 0x0546, 0x0596, 0x05eb, 0x0645, 0x06a5, 0x070a, 0x0775, 0x07e6, 0x085f, 0x08de, 0x0965, 0x09f4, 0x0a8c, 0x0b2c, 0x0bd6, 0x0c8b, 0x0d4a, 0x0e14, 0x0eea , 0x0fcd, 0x10be, 0x11bd, 0x12cb, 0x13e9, 0x1518, 0x1659, 0x17ad, 0x1916, 0x1a94, 0x1dd28, 0x1dd5, 0x1f9b, 0x217c, 0x217c, 0x2177, 0x137, 0x137d, 0x12179, 0x2179, 0x137c, 0x137a }; const s8 sinetable [] = {०, १२, २५, ३able, ४ ९, ६०, able१, able१, able०, ९ able ९, ९ able२, ११able, ११able, १२१, १२२, १२२, १२२, १२२, १२२, १२२, १२२, ११२, ११२ , 106, 98, 90, 81, 71, 60, 49, 37, 25, 12, 0, -12, -25, -37, -49, -60, -71, -81, -90 और -98 में, -106, -112, -117, -122, -125, -126, -127, -126, -125, -122, -122, -117, -112, -106, -98, -90, -81 और -71 में , -60, -49, -37, -25, -12}; const u8 validcmds [] = "0dfijlmtvw ~ + ="; enum {WF_TRI, WF_SAW, WF_PUL,WF_NOI}; वाष्पशील संरचना थरथरानवाला {u16 freq; यू 16 चरण; यू 16 ड्यूटी; u8 तरंग; u8 मात्रा; // 0-255} दोस [4]; स्ट्रक्चर ट्रैकलाइन {u8 नोट; u8 इंस्ट्र; u8 cmd [2]; u8 परम [2]; }; स्ट्रक्चर ट्रैक {स्ट्रक्चर ट्रैकलाइन लाइन [ट्रैक]; }; स्ट्रक्चर अनपैकर {u16 nextbyte; u8 बफर; u8 बिट्स; }; स्ट्रक्चर चैनल {स्ट्रक्चर अनपैकर ट्रैकअप; u8 tnum; एस 8 ट्रांसप; u8 tnote; u8 lastinstr; u8 inum; u16 iptr; u8 iwait; u8 inote; s8 बेंडर्ड; s16 मोड़; s8 volumed; s16 ड्यूटिड; u8 vdepth; u8 vrate; u8 vpos; s16 जड़ता; u16 स्लर; } चैनल [4]; u16 संसाधन [16 + MAXTRACK]; संरचना अनपैकर गीत; बाइट रीड्सगॉन्बी (u16 ऑफसेट) {रिटर्न pgm_read_byte_near (& songdata [0] + ऑफसेट); } शून्य वॉचडॉग () {} शून्य इनिटअप (स्ट्रक्चर अनपैकर * अप, यू 16 ऑफसेट) {अप-> नेक्स्टाइट = ऑफसेट; अप-> बिट्स = 0; } u8 रीडबिट (स्ट्रक्चर अनपैकर * अप) {u8 val; if (अप-> बिट्स) {अप-> बफर = रीडसॉन्गबाइट (अप-> नेक्स्टाइट ++); अप-> बिट्स = 8; } अप-> बिट्स--; वैल = अप-> बफर & 1; ऊपर-> बफर >> = 1; वापसी घाटी; } u16 रीडचंक (स्ट्रक्चर अनपैकर * अप, u8 n) {u16 वैल = 0; u8 i; for (i = 0; i <n; i ++) {if (रीडबिट (अप)) val} रिटर्न वैल; } शून्य रीडिनस्ट्रेट (बाइट संख्या, बाइट पॉज़, बाइट * डेस्ट) {डेस्ट [0] = रीड्सडॉन्बाइट (संसाधन [संख्या] + 2 * पॉज़ + 0); भाग्य [1] = readsongbyte (संसाधन [संख्या] + 2 * पॉस + 1); } void runcmd (u8 ch, u8 cmd, u8 param) {स्विच (वैधकांड [cmd]) {केस '0': चैनल [ch] .inum = 0; टूटना; मामला 'डी': दोस् [ch]। डुटुट = परम << 8; टूटना; मामला 'f': चैनल [ch] .volumed = param; टूटना; मामला 'i': चैनल [ch] .inertia = param << 1; टूटना; मामला 'जे': चैनल [ch] .iptr = परम; टूटना; मामला 'l': चैनल [ch] .bendd = param; टूटना; मामला 'm': चैनल [ch]। ड्यूट = param << 6; टूटना; मामला 't': चैनल [ch] .iwait = param; टूटना; मामला 'v': दोस् [ch] .volume = param; टूटना; मामला 'w': दोस् [ch] .waveform = param; टूटना; मामला '+': चैनल [ch] .inote = param + चैनल [ch] .tnote - 12 * 4; टूटना; मामला '=': चैनल [ch] .inote = परम; टूटना; मामला '~': अगर (चैनल [ch] .vdepth! = (param >> 4)) {चैनल [ch] .vpos = 0; } चैनल [ch] .vdepth = param >> 4; channel [ch] .vrate = param & 15; टूटना; }} शून्य initresources () {u8 i; स्ट्रक्चर अनपैकर अप; initup (और ऊपर, 0); के लिए (i = 0; मैं <16 + MAXTRACK; i ++) {संसाधन [i] = readchunk (और ऊपर, 13); } initup (& songup, संसाधन [0]); } शून्य प्लेरूटाइन () {// 50 हर्ट्ज यू 8 च पर बुलाया; u8 रोशनी; if (playong) {if (ट्रैकवाइट) {trackwait--; } और {trackwait = 4; if (ट्रैकपोज़) {if (playong) {if (songpos> = SONGLEN) {// playong = 0; songpos = 0; trackpos = 0; initresources (); } और {for (ch = 0; ch <4; ch ++) {u8 gottransp; u8 ट्रांसप; gottransp = readchunk (& songup, 1); चैनल [ch] .tnum = readchunk (& songup, 6); if (gottransp) = 0xf0; और {ट्रांसप = 0; } चैनल [ch] .transp = (s8) ट्रांसप; if (चैनल [ch] .tnum) {initup (& चैनल [ch] .trackup, संसाधन] [16 + चैनल [ch] .tnum - 1]); }} songpos ++; }}} अगर (playong) {के लिए (ch = 0; ch <4; ch ++) {if (चैनल [ch] .tnum) {u8 note, instr, cmd, param; u8 क्षेत्र; फ़ील्ड्स = रीडचंक (& चैनल [ch] .आट्रुप, 3); नोट = 0; instr = 0; cmd = 0; परम = 0; यदि (फ़ील्ड और 1) नोट = रीडचंक (और चैनल [ch] .ट्रैप, 7); if (फ़ील्ड & 2) instr = readchunk (& चैनल [ch] .trackup, 4); if (फ़ील्ड & 4) {cmd = readchunk (& चैनल [ch] .trackup, 4); param = readchunk (& channel [ch] .trackup, 8); } अगर (नोट) {चैनल [ch]। नोट = नोट + चैनल [ch] .transp; if (इं टर) instr = channel [ch] .lastinstr; } if (इंस्ट्र) {if (इंस्ट्र == 2) लाइट [१] = ५; if (instr == 1) {प्रकाश [0] = 5; if (चैनल [ch] .tnum == 4) {प्रकाश [०] = प्रकाश [१] = ३; }} अगर (instr == 7) {प्रकाश [०] = प्रकाश [१] = ३०; } चैनल [ch] .lastinstr = इंस्ट्र; चैनल [ch] .inum = इंस्ट्र; चैनल [ch] .iptr = 0; चैनल [ch] .iwait = 0; चैनल [ch] .bend = 0; चैनल [ch] .bendd = 0; चैनल [ch] .volumed = 0; चैनल [ch] .dutyd = 0; चैनल [ch] .vdepth = 0; } अगर (cmd) runcmd (ch, cmd, param); }} trackpos ++; trackpos & = 31; }}} के लिए (ch = 0; ch <4; ch ++) {s16 vol; यू 16 ड्यूटी; u16 स्लर; जबकि (चैनल [ch] .inum &&; चैनल [ch] .iwait) {u8 il [२]; readinstr (चैनल [ch] .inum, चैनल [ch] .iptr, il); चैनल [ch] .iptr ++; runcmd (ch, il [0], il [1]); } अगर (चैनल [ch] .iwait) चैनल [ch] .iwait--; if (चैनल [ch] .inertia) {s16 diff; slur = channel [ch] .slur; diff = freqtable [चैनल [ch] .inote] - स्लर; // diff >> = चैनल [ch] .inertia; if (diff> 0) {if (diff> चैनल [ch] .inertia) diff = चैनल [ch] .inertia; } और अगर (diff <0) {if (diff <-channel [ch] .inertia) diff = = -chan [ch] .inertia; } slur + = diff; channel [ch] .slur = slur; } और {slur = freqtable [चैनल [ch] .inote]; } osc [ch] .freq = slur + channel [ch] .bend + ((चैनल [ch] .vdepth * sinetable [चैनल [ch] .vpos & 63]) >> 2); चैनल [ch] .bend + = चैनल [ch] .bendd; vol = osc [ch] .volume + चैनल [ch] .volumed; if (vol <0) vol = 0; if (vol> 255) vol = 255; ऑस [च] .वोल्यूम = वॉल्यूम; कर्तव्य = दोस [ch]। डुट् + चैनल [ch]। ड्यूट; if (कर्तव्य> 0xe000) कर्तव्य = 0x2000; if (कर्तव्य <0x2000) कर्तव्य = 0xe000; दोस [सं-पु।] डूटी = कर्तव्य; channel [ch] .vpos + = channel [ch] .vrate; } रोशनी = 0; if (प्रकाश [0]) = 0x04; अगर (प्रकाश [1]) प्रकाश [1] -; लाइट्स PORTB = लाइट्स; } int main () {asm ("cli"); watchdogoff (); CLKPR = 0x80; CLKPR = 0x80; DDRC = 0x12; डीडीआरडी = 0xff; // PORTC = 0; pinMode (10, आउटपुट); pinMode (12, आउटपुट); समयावधि = 0; trackwait = 0; trackpos = 0; प्लेसॉन्ग = 1; गीत = ०; ऑस [को ०] ।वोल्यूम = ०; चैनल [0] .inum = 0; ऑस [१] .वोल्यूम = ०; चैनल [1] .inum = 0; ऑस [२] .वोल्यूम = ०; चैनल [2] .inum = 0; ऑस [३] .वोल्यूम = ०; चैनल [3] .inum = 0; initresources (); TCCR0A = 0x02; TCCR0B = 0x02; // clkIO / 8, इसलिए 1/8 मेगाहर्ट्ज OCR0A = 125; // 125; // 8 KHz TCCR2A = 0b10100011; TCCR2B = 0b00000001; TIMSK0 = 0x02; एएसएम ( "सेई"); (;;) के लिए {जबकि (समयरेखा); खेलने का समय--; playroutine (); }} ISR (TIMER0_COMPA_vect) // 8 KHz पर बुलाया {u8 i; s16 एसीसी; u8 newbit; OCR2B = lastsample; newbit = 0; if (noiseseed & 0x80000000L) newbit ^ = 1; if (noiseseed & 0x01000000L) newbit ^ = 1; if (noiseseed & 0x00000040L) newbit ^ = 1; if (noiseseed & 0x00000200L) newbit ^ = 1; noiseseed = (noiseseed << 1) | newbit; if (callbackwait) {callbackwait--; } और {टाइमटॉपप्ले ++; कॉलबैकविट = 180 - 1; } acc = 0; for (i = 0; i <4; i ++) {s8 value; // [-32,31] स्विच (थिस [[.waveform) {केस WF_TRI: if (थोर [i]। पेज़ <0x8000) {वैल्यू = -32 + (ऑस [i] .phase >> 9); } और {मान = 31 - ((दोस् थ [i .phase - 0x8000) >> 9); } टूटना; मामला WF_SAW: मान = -32 + (ऑस) [i .phase >> 10); टूटना; मामला WF_PUL: मान = (ऑस्स [i]। पेज़> थोस [i]। ड्यूट)? -32: 31; टूटना; मामला WF_NOI: मान = (noiseseed & 63) - 32; टूटना; डिफ़ॉल्ट: मान = 0; टूटना; } ऑस [i]। पेज़ + = ऑस [i] .freq; acc + = value * osc [i] .volume; // rhs = [-8160,7905]} // acc [-32640,31620] lastsample = 128 + (acc >> 8); // [1,251]}}

13 लोगों ने बनाया ये प्रोजेक्ट!

  • kd8bxp ने इसे बनाया है!

  • Strx इसे बनाया!

  • duBtrotterS ने इसे बनाया है!

  • alaafprojs ने इसे बनाया है!

  • नीलजामों ने बनाया!

  • जेम्सजेड 16 ने इसे बनाया!

  • deepak_paryani ने इसे बनाया है!

  • मारेन्हो ने बनाया!

  • एल मुतान्ते ने इसे बनाया!

  • युरीसंतोसटेक्सिरा ने इसे बनाया!

  • रॉड्रिगोमेकेनिका ने इसे बनाया!

  • Jean_Rolszt ने इसे बनाया है!

  • joesinstructables ने इसे बनाया है!

  • 4 और देखें

क्या आपने यह प्रोजेक्ट बनाया है? इसे हमारे साथ साझा करें!

अनुशंसाएँ

  • Arduino कोड नमूने को मैश करें

  • ओपन्ससोर्स ऑर्निथॉप्टर प्रोटोटाइप। Arduino संचालित और रिमोट नियंत्रित।

  • इंटरनेट ऑफ थिंग्स क्लास

  • बागवानी प्रतियोगिता

  • वुडवर्किंग प्रतियोगिता

  • IoT चैलेंज

67 चर्चा

1

डी-एफ

6 माह पहले

मूल निर्माता से लिंक: http://www.linusakesson.net/hardware/chiptune.php

क्योंकि मैं न केवल एक खिलाड़ी, बल्कि इसके लिए एक ट्रैकर की तलाश में था। थोड़ी देर खोज करने के बाद मैंने देखा कि खिलाड़ी की दिनचर्या के निर्माता ने अपनी वेबसाइट पर एक चिप-ट्रैकर भी बनाया है।

0

ToddD40

9 महीने पहले चरण 5 पर

जब मैं इसे अपलोड करने की कोशिश करता हूं तो यह कहता है कि 'TCCR2B' को इस दायरे में घोषित नहीं किया गया था।

मेरे द्वारा यह कैसे किया जा सकता है?

0

ruturajbendkhale

11 माह पहले

मेरा सवाल यह है कि "mp3 / oog / wav फ़ाइल" से "arduino साउंड" कैसे बनाया जाए, कृपया मुझे उत्तर दें। धन्यवाद

1 उत्तर 0

blinkyblinkyruturajbendkhale

11 महीने पहले उत्तर दें

यह थोड़ा और अधिक कठिन होगा, विशेष रूप से टुकड़े की लंबाई पर निर्भर करता है। आप पीसीएम ऑडियो (http://playground.arduino.cc/Code/PCMAudio) जैसे कुछ का उपयोग कर सकते हैं, लेकिन आप गीत की लंबाई के संदर्भ में सीमित हैं, क्योंकि अरुडिनो में परिमित मेमोरी है। एक मेगा या एक ड्यू मदद करेगा, लेकिन वे भौतिक आकार में भी बड़े हैं।

वैकल्पिक रूप से, आप वेव शील्ड (http://www.adafruit.com/product/94) का उपयोग कर सकते हैं। यह Arduino का उपयोग करके SD कार्ड से संगीत चलाने का एक बहुत अच्छा तरीका है। ध्यान दें कि आप Atmel 328 चिप्स के आधार पर Arduino बोर्डों तक सीमित हैं।

अंत में, एक दिलचस्प और अपेक्षाकृत नई विधि (यद्यपि बारीक विधि) यह एक है: http: //www.arduino.cc/en/Tutorial/SimpleAudioPlay ... मेरे एक मित्र का इस विधि से बहुत अधिक भाग्य नहीं है, हालांकि मैं खुद इसे आजमाया नहीं है। यदि आपके पास एक Arduino शून्य तक पहुंच है, तो एक शॉट को वॉर्थ करें।

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

0

eseixa

1 साल पहले

नमस्ते!

सभी के लिए जो आवश्यक है, यहां एक और कोड:

http: //aliencrack.ucoz.ru/Files/articles/AHCP/Hard ...

का आनंद लें।

1 उत्तर 0

eseixaeseixa

1 साल पहले उत्तर दें

पुनश्च: "बाइट" से पहले 36 सेंट लाइन पर "कॉन्स्ट" लगाने की आवश्यकता है

ऐशे ही:

कॉन्स्ट बाइट गीतदाता [] PROGMEM = {

0

joostvanpoppel

3 साल पहले

आज इस परियोजना पर ठोकर खाई, यह पता नहीं था कि यह करना संभव था :-)

ये प्रश्न जल्दी उठते हैं:

- क्या अन्य धुनें उपलब्ध हैं?

- क्या गाने जोड़ने का एक आसान तरीका है?

धन्यवाद,

जूस्ट

3 उत्तर 0

blinkyblinkyjoostvanpoppel

उत्तर 3 साल पहले

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

0

alaafprojsblinkyblinky

2 साल पहले उत्तर दें

मैंने कोशिश की कि लेकिन ...

ऐसा लगता है कि सॉफ्टवेयर लिनक्स के लिए है, मेरे पास खिड़कियां हैं।

क्या कोई विकल्प है?

धन्यवाद :-)

0

DIYJRAYblinkyblinky

2 साल पहले उत्तर दें

ठीक है, बैठ जाओ

0

Raphango

2 साल पहले

बहुत बढ़िया! : डी

1 उत्तर 0

RaphangoRaphango

2 साल पहले उत्तर दें

अच्छा गाना btw!

0

आर जॉर्डन क्रेन्डलर

2 साल पहले

बहुत ही रोचक।

0

duBtrotterS

2 साल पहले

क्या कोई एल ई डी जोड़ने और साथ ही एक लूप बनाने की व्याख्या कर सकता है। धन्यवाद

1 उत्तर 0

NekoBeMeduBtrotterS

2 साल पहले उत्तर दें

एक कदम: Arduino वेबसाइट पर जाएं।

चरण दो: आनन्द

0

आरए प्रोडक्शंस

3 साल पहले

ब्लिंकब्लिंकी, क्या कोई ऐसा तरीका है जिससे मैं पहले से रिकॉर्ड की गई आवाज को चला सकूं? गाने के बजाय, वैसे भी इसका कमाल।

0

ArduinoUshiroma

3 साल पहले

मैं पीडीएफ के रूप में यह सब मिल सकता है?

2 उत्तर 0

ArduinoUshiromaArduinoUshiroma

उत्तर 3 साल पहले

इसे न देखें। शायद इसके cuz मैं मोबाइल का उपयोग कर रहा हूँ

0

blinkyblinkyArduinoUshiroma

उत्तर 3 साल पहले

शीर्षक के ठीक नीचे पीडीएफ फ़ंक्शन के रूप में एक डाउनलोड है।

0

koubis

3 साल पहले

यह सू मजेदार है। क्या आप कृपया कोडिंग के बारे में अधिक जानकारी और कुछ मूल विवरणों के लिंक के बारे में बताएंगे कि कैसे ध्वनि उत्पन्न होती है? बस आवृत्ति और समय?