สารบัญ:

Synthfonio - เครื่องดนตรีสำหรับทุกคน: 12 ขั้นตอน (พร้อมรูปภาพ)
Synthfonio - เครื่องดนตรีสำหรับทุกคน: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Synthfonio - เครื่องดนตรีสำหรับทุกคน: 12 ขั้นตอน (พร้อมรูปภาพ)

วีดีโอ: Synthfonio - เครื่องดนตรีสำหรับทุกคน: 12 ขั้นตอน (พร้อมรูปภาพ)
วีดีโอ: Woodwind Instruments (Instruments of the Symphony Orchestra Part 2) 2024, กรกฎาคม
Anonim
Image
Image
แผนภาพการเดินสายไฟ
แผนภาพการเดินสายไฟ

ฉันชอบซินธิไซเซอร์และตัวควบคุม MIDI แต่ฉันเล่นคีย์บอร์ดได้แย่มาก ฉันชอบเขียนเพลง แต่สำหรับการเล่นเพลงดังกล่าว คุณต้องเรียนรู้วิธีเล่นเครื่องดนตรี ที่ต้องใช้เวลา เวลาที่หลายคนไม่มี และมักจะกีดกันพวกเขาจากการฝึกฝนต่อไป ฉันกำลังพยายามเปลี่ยนสิ่งนั้น โปรเจ็กต์นี้เป็นความพยายามลดช่องว่างระหว่างช่วงเวลา "ฉันต้องการเรียนรู้วิธีเล่น X" กับช่วงเวลา "ฉันสนุกกับการเล่น X" ฉันรู้ว่าพวกเราส่วนใหญ่เคยเป็นหรือยังคงฝันถึงเพลงหลัง แต่ติดอยู่กับอดีต และฉันก็รู้ด้วยว่าช่วงเวลาที่ฉันสามารถเล่นและสนุกกับเพลงคอร์ดพื้นฐานสี่เพลงครั้งแรกของฉันบนกีตาร์เป็นช่วงเวลาที่ฉันจริงๆ เริ่มเรียนเครื่องดนตรีและไม่เคยยอมแพ้เลยตั้งแต่

นี่คืออะไร

นี่คือเครื่องดนตรีที่เรียนรู้ได้ง่าย ใช้งานง่าย เน้นด้นสด และมีความเป็นไปได้ที่ไม่มีที่สิ้นสุดของเสียง (ในฐานะตัวควบคุม MIDI) มันมีคีย์ 2 ชุด ชุดหนึ่งสำหรับกำหนดคอร์ดและลายเซ็นคีย์ และอีกชุดสำหรับเล่นโน้ตจริงๆ คอร์ดใดๆ ก็ตามที่ถูกกดลงในคีย์ที่คอของเครื่องดนตรีจะกำหนดระดับเสียงของคีย์บนที่จับเครื่องดนตรี คล้ายกับกีตาร์ ไวโอลิน และเครื่องสายอื่นๆ ด้วยความก้าวหน้าที่เพิ่มขึ้นว่านี่คืออุปกรณ์อัจฉริยะที่สามารถตีความมาตราส่วนที่กำลังเล่นจากโน้ตตัวเดียวหรือคู่ของโน้ต

มันทำงานอย่างไร

เรียบง่าย. คุณต้องการเล่นคอร์ด E หรือไม่? คุณเพียงแค่กดปุ่ม E ที่คอ (ดูแผนภาพในขั้นตอนที่ 11) และคุณก็สามารถยิงอะไรก็ได้ที่คุณต้องการบนปุ่มที่จับ ไม่ต้องกังวล มันจะอยู่ในการปรับแต่ง คุณสามารถใช้ปุ่มแฮนเดิลเพื่อเล่นคอร์ด ท่วงทำนอง และอาร์เพจจิโอในโทนเสียงใดก็ได้ที่คุณต้องการ เพียงแค่กดปุ่มสื่อที่คอ ในทำนองเดียวกัน การกดปุ่ม A ที่คอร่วมกับปุ่ม C (ส่วนรองของปุ่ม A) จะเปิดใช้งานโทนเสียง A รองสำหรับปุ่มจัดการ

วิธีนี้จะช่วยให้ผู้เล่นทุกคนสามารถเล่นเมโลดี้ 4 คอร์ดได้ (เพลงที่ได้รับความนิยมมากที่สุดคือ 4 คอร์ด) ดนตรีประกอบ หรือแม้แต่ด้นสด ในตำแหน่งไม่เกินสองสามนิ้ว

เครื่องมือนี้สามารถทำหน้าที่เป็นตัวควบคุม MIDI และฉันได้รวมซินธิไซเซอร์ในตัวที่เรียบง่ายสำหรับการเล่นโดยไม่ต้องใช้อุปกรณ์ภายนอก โปรเจ็กต์นี้อาจทำงานเป็นคอนโทรลเลอร์ USB MIDI หรือ MIDI บนคอนโทรลเลอร์ BLE ทั้งนี้ขึ้นอยู่กับบอร์ด Arduino ที่คุณเลือกใช้

ข้อจำกัดความรับผิดชอบตามปกติของฉัน:- ฉันไม่ใช่เจ้าของภาษา ดังนั้นจึงอาจมีข้อผิดพลาดเกิดขึ้น - นอกจากนี้ ฉันยังสอนตัวเองในด้านอิเล็กทรอนิกส์ การเขียนโค้ด และดนตรี ดังนั้น อาจมีข้อผิดพลาดเกิดขึ้นอีกครั้ง - นี่คือ "เครื่องมือสำหรับทุกคน" ในการเล่น ไม่จำเป็นต้องสร้าง คุณต้องมีความรู้เล็กน้อยในด้านอิเล็กทรอนิกส์และการเข้ารหัสเพื่อทำงานในโครงการนี้

_

เสบียง

- Arduino: Arduino ใด ๆ ควรใช้งานได้ ฉันขอแนะนำบอร์ดที่มีความสามารถ USB เช่น บอร์ดที่ใช้ ATmega32U4 (leonardo, micro เป็นต้น) เพื่อให้คุณสามารถใช้โปรเจ็กต์นี้เป็นคอนโทรลเลอร์ USB MIDI ได้ ฉันใช้ MKR1010 เพราะมันมีความสามารถบลูทูธและพอร์ตอนุกรมฮาร์ดแวร์สำรองด้วย

-ATmega328 บนเขียงหั่นขนม (ตัวเลือก): ใช้สำหรับซินธิ์รวม คุณสามารถใช้บอร์ด UNO ที่เหมาะสมได้ แต่ฉันเลือกใช้ระบบที่ง่ายกว่านี้

- โมดูลมัลติเพล็กเซอร์: 2 โมดูลหนึ่งชุดสำหรับปุ่มจัดการและอีกชุดสำหรับปุ่มคอ

-โมดูลเครื่องชาร์จแบตเตอรี่: ฉันแนะนำบางอย่างที่คล้ายกันในลิงก์ เพราะมีการป้องกันการชาร์จเกิน/การคายประจุ

-18650 แบตเตอรี่

-Voltage Step-up Elevator module: ระวังด้วย! ตรวจสอบให้แน่ใจว่าโมดูลที่คุณเลือกสามารถรับแรงดันไฟฟ้าขาเข้าได้ต่ำกว่า 5v โมดูลเครื่องชาร์จแบตเตอรี่มักจะส่งออก arround 4v และหากคุณป้อนแรงดันไฟฟ้านั้นไปยังโมดูล stepup ที่ไม่ได้รับการจัดอันดับสำหรับแรงดันไฟฟ้านั้น คุณอาจมีปัญหาได้ ฉันใช้โมดูลที่ต้องการแรงดันไฟฟ้าอินพุตอย่างน้อย 5v และฉันทอด Arduino ของฉัน (มีโครงการอะไรนำกลับมาใช้, รีไซเคิลกระดานทอด ? ฝากความคิดเห็นไว้)

-1/4 แจ็คเสียงหญิง

-10k โพเทนชิออมิเตอร์สเตอริโอ

-10k โพเทนชิออมิเตอร์ (x2)

สวิตช์ -x2: ฉันแนะนำตัวนี้ แต่สวิตช์ใด ๆ ที่ดำรงตำแหน่งอยู่จะทำ

-x14 Tact Switches: สำหรับปุ่มคอ

-x9 ลิมิตสวิตช์: ปุ่มจับ (7) และสวิตช์ทรานสโพสติ้ง (2)

ตัวต้านทาน -1k โอห์ม

ตัวต้านทาน -x2 220 โอห์ม (หากคุณกำลังสร้างเอาต์พุต MIDI 5v)

ตัวต้านทาน -33 โอห์มและ 10 โอห์ม (หากคุณสร้างเอาต์พุต MIDI 3.3v)

-เขียงหั่นขนมขนาดเล็ก: มากเท่าที่คุณต้องการ! ฉันสร้างทุกอย่างบนเขียงหั่นขนม 170 จุด

-สายจัมเปอร์: มีไม่พอ

ทำไมต้องแยก Arduinos สองตัว: ใช่ มันควรจะเป็นไปได้ที่จะเขียนภาพร่างเดียวที่ใช้ซินธ์ดิจิตอลด้วย USB MIDI, MIDI ผ่าน BLE และฟังก์ชั่น MIDI ปกติบนบอร์ดเดียวกัน มันควรจะเป็นไปได้ แต่ฉันทำไม่ได้ สิ่งนั้นคือ; ไลบรารีสังเคราะห์ส่วนใหญ่สร้างขึ้นสำหรับ ATmega328 ซึ่งไม่มีความสามารถของ USB ในทางกลับกัน บอร์ดที่ใช้ ATmega32U4 บางตัว (ที่สามารถใช้งาน USB) ที่รันไลบรารี synth ได้นั้นมีปัญหา ลืม MIDI บน BLE ไปได้เลย คุณต้องการบางอย่างเช่น MKR1010 สำหรับสิ่งนั้น (เท่าที่ฉันอ่านมา โมดูล hm-10 จะไม่ทำ MIDI) แต่ตระกูล MKR ใช้สถาปัตยกรรมที่แตกต่างออกไป และจะไม่แม้แต่ รวบรวมภาพร่างด้วยไลบรารีสังเคราะห์ใด ๆ ที่ฉันพบทางออนไลน์ ดังนั้นจึงเป็นตัวควบคุมไมโครสองตัวที่แยกจากกันสำหรับฉัน กระดานหลักทำหน้าที่ตรวจจับ ตีความ และสื่อเสียงทั้งหมด และอันที่สองสำหรับซินธ์รวม ซึ่งอ่านเฉพาะข้อมูล midi จากอันหลัก และสร้างเสียง เวอร์ชัน Arduino เดี่ยว (ตัวเลือก): ใช่ ถ้าคุณไม่สนใจฟังก์ชันบางอย่างที่ฉันต้องการจริงๆ คุณสามารถใช้ เพียงหนึ่งกระดานเดียว ตัวอย่างเช่น ATmega32U4 ตัวเดียวเป็นตัวควบคุม USB MIDI ที่มีไลบรารี synth แบบบั๊กกี้น้อยที่สุดที่คุณสามารถเรียกใช้ได้ (แต่ไม่มี MIDI BLE) หรือ ATmega328 ตัวเดียวที่รันไลบรารี synth ที่คุณต้องการ (ไม่มี USB MIDI)

ขั้นตอนที่ 1: แผนภาพการเดินสายไฟ

นี่คือไดอะแกรมที่สมบูรณ์ของโครงการ โปรดจำไว้ว่า คุณไม่จำเป็นต้องใช้บอร์ด MKR บอร์ดส่วนใหญ่จะใช้งานได้ คุณเพียงแค่ต้องตระหนักถึงความเป็นไปได้ที่แต่ละบอร์ดมี (ความสามารถ USB ความสามารถ BLE ฯลฯ) และปรับแรงดันไฟฟ้าที่จ่ายให้กับวินพิน ตอนนี้เรามาดูทุกส่วนอย่างละเอียดมากขึ้น:

ขั้นตอนที่ 2: แผนภาพการเดินสายไฟ: ตัวควบคุม MIDI และมัลติเพล็กเซอร์

แผนภาพการเดินสายไฟ: MIDI Controller และ Multiplexers
แผนภาพการเดินสายไฟ: MIDI Controller และ Multiplexers
แผนภาพการเดินสายไฟ: MIDI Controller และ Multiplexers
แผนภาพการเดินสายไฟ: MIDI Controller และ Multiplexers

- ฉันแชร์พินเกือบทั้งหมดระหว่างมัลติเพล็กเซอร์ทั้งสอง เพื่อลดจำนวนพิน Arduino ที่ใช้มากยิ่งขึ้น จริงๆ แล้ว เฉพาะพินสัญญาณของโมดูลมัลติเพล็กเซอร์แต่ละโมดูลเท่านั้นที่จำเป็นต้องมีพินอาร์ดิโนเฉพาะของตัวเอง การจัดเรียงนี้ไม่ก่อให้เกิดปัญหาหรือการรบกวนระหว่างปุ่มต่างๆ เนื่องจากการทำงานของภาพร่างเป็นแบบเส้นตรง และ Arduino จะตรวจสอบอินพุตครั้งละหนึ่งรายการเท่านั้น ไม่ว่ามัลติเพล็กเซอร์อื่นทำอะไร หรืออินพุตพินอื่นที่ได้รับระหว่างการตรวจสอบนี้ จะถูกละเว้น

- สวิตช์ 2 ตัวที่มีป้ายกำกับว่า Transposing Switches เป็นลิมิตสวิตช์ที่เปิดใช้งานโดยเลื่อนที่จับผ่านรูสไลด์ของตัวเครื่อง (ดูรายละเอียดเพิ่มเติมในขั้น "ที่จับ" และ "ตัวเครื่อง") และสลับเปลี่ยนโน้ตของที่จับทั้งหมดหนึ่งอ็อกเทฟขึ้นหรือลง.

-สำหรับการควบคุมระดับเสียง ฉันใช้โพเทนชิออมิเตอร์สเตอริโอ เพราะเราต้องควบคุมวอลลุ่มสองประเภท: แอนะล็อก (ซินธ์แบบรวม) และ MIDI

- วงจรเอาต์พุต MIDI มีตัวต้านทานสำหรับเอาต์พุต 3.3v จากบอร์ด MKR ของฉัน หากคุณใช้บอร์ด 5v คุณต้องเปลี่ยนตัวต้านทานตามแผนภาพ MIDI ในภาพที่สอง

ขั้นตอนที่ 3: แผนภาพการเดินสายไฟ: เครื่องสังเคราะห์เสียง

แผนภาพการเดินสายไฟ: ซินธิไซเซอร์
แผนภาพการเดินสายไฟ: ซินธิไซเซอร์

-การเชื่อมต่อกับ OSC2 บน ATmega328 (ผ่านตัวเก็บประจุ) ไปยังกราวด์บนพินดิจิตอล 5 ฉันทำสิ่งนี้เพียงเพื่อความสะดวก ดังนั้นทุกอย่างจึงเข้ากันได้ดีและอยู่ใกล้กับเขียงหั่นขนม หากคุณกำลังคิดที่จะทำแบบเดียวกัน เพียงให้แน่ใจว่าคุณประกาศพิน 5 เป็นอินพุตเสมอและไม่เคยเป็นเอาต์พุต

- ไลบรารี synth ที่ฉันเลือกส่งเสียงจากพิน 11 ดังที่แสดงในไดอะแกรมของฉัน ไม่ใช่ทุกไลบรารีที่จะใช้พินนั้น ตรวจสอบให้แน่ใจว่าได้เปลี่ยนตามนั้น ฉันขอแนะนำให้ใช้ตัวต้านทานและตัวพิมพ์ใหญ่เป็นตัวกรองเสมอ

- ฉันเพิ่มสวิตช์ที่ 5v ที่มาจากเมนบอร์ด ดังนั้นฉันจึงสามารถปิด ATmega และประหยัดพลังงานแบตเตอรี่ในขณะที่ใช้เครื่องมือนี้เป็นตัวควบคุม MIDI

ขั้นตอนที่ 4: แผนภาพการเดินสายไฟ: แหล่งพลังงาน

แผนภาพการเดินสายไฟ: แหล่งพลังงาน
แผนภาพการเดินสายไฟ: แหล่งพลังงาน

-ฉันรู้ บอร์ด MKR ทั้งหมดมีวงจรชาร์จ Li-Po ในตัว ประเด็นคือ ฉันไม่สามารถหาแบตเตอรี่ lipo (ราคาไม่แพง) ที่มีสเปคที่ต้องการได้ทุกที่ในประเทศที่ฉันอาศัยอยู่ (ชิลี อเมริกาใต้) และฉันมีโมดูลการชาร์จอยู่แล้ว และ 18650 สองสามตัวที่อยู่รอบๆ ฉันก็เลย หยิบมันขึ้นมา ยิ่งไปกว่านั้น ฉันคิดว่าคนส่วนใหญ่จะลองใช้โปรเจ็กต์นี้โดยใช้บอร์ดที่มีจำหน่ายทั่วไป ซึ่งปกติจะไม่มีวงจรชาร์จ

- อีกครั้ง ตรวจสอบให้แน่ใจว่าโมดูลที่คุณเลือกสำหรับเพิ่มแรงดันแบตเตอรี่ขึ้น สามารถรับแรงดันไฟฟ้าอินพุตต่ำกว่า 5v ได้ โมดูลเครื่องชาร์จแบตเตอรี่มักจะส่งออกประมาณ 4v และหากคุณป้อนแรงดันไฟฟ้านั้นลงในโมดูลแบบสเต็ปอัพที่ไม่ได้รับการจัดอันดับสำหรับแรงดันไฟฟ้านั้น คุณสามารถทอดบอร์ดของคุณได้ ฉันทำ. สองครั้งก่อนที่ฉันจะรู้เรื่องนี้):

-ฉันแนะนำให้วางสวิตช์ก่อนโมดูลเพิ่มแรงดันไฟ ไม่ใช่หลัง ไม่ค่อยเข้าใจว่าสิ่งนี้ทำงานอย่างไร แต่ฉันวัดกระแสบนทั้งสองตัวเลือก (สวิตช์ก่อนและหลัง) และเมื่อวางสวิตช์หลังจากลิฟต์แรงดันไฟฟ้า ฉันวัดกระแสเล็กน้อยที่รั่วจากแบตเตอรี่แม้ว่าสวิตช์จะ ปิด.

ขั้นตอนที่ 5: แนวคิดของรหัส

รหัสจะเรียกใช้การตรวจสอบปุ่มจัดการทั้งหมดอย่างต่อเนื่องจนกว่าจะตรวจพบการกดปุ่ม เมื่อเป็นเช่นนั้น มันจะตรวจสอบคีย์ที่กดที่คอ และตีความท่าทางที่ทำและดังนั้น โทนเสียงของดนตรี (หากไม่มีการกดปุ่มที่คอ โทนเสียงชุดสุดท้ายจะยังคงอยู่) สิ่งนี้จะกำหนดว่าโน้ตใดที่ปุ่มแฮนเดิลที่กดกำลังจะสร้าง สุดท้าย มีการตรวจสอบสวิตช์ย้ายสองสวิตช์ เพื่อย้ายโน้ตเป็นอ็อกเทฟขึ้น อ็อกเทฟลง หรืออ็อกเทฟเริ่มต้น ให้ช่วงเครื่องดนตรี 3 อ็อกเทฟ ตามตัวแปรทั้งหมดนี้ Synthfonio จะสร้างคำสั่ง midi ที่สัมพันธ์กัน

สำหรับโค้ด synth ให้ทำอย่างที่ฉันทำ และเพียงแค่คัดลอกและวางตัวอย่าง "midi in" แบบสเก็ตช์ของไลบรารี synth ที่เหมาะสมกับความต้องการของคุณที่สุด นี่คือคำแนะนำบางส่วน:-The_synth-Mozzi-poly-synth-Noodle-Synth

โอ้ ในกรณีที่คุณต้องการรวมฟังก์ชัน MIDI และ synth ไว้ในบอร์ดเดียวกัน ฉันขอแนะนำแบบร่างที่อธิบายไว้ในลิงก์นี้

ขั้นตอนที่ 6: รหัส

ก่อนอื่น คุณจะต้องมีไลบรารีต่อไปนี้: ไลบรารี MIDI: https://github.com/FortySevenEffects/arduino_midi_…Multiplexer library:

นอกจากนี้ หากคุณกำลังจะใช้บอร์ดที่รองรับ USB หรือ MKR 1010 คุณสามารถทดลองกับไลบรารีนี้ได้เช่นกัน:MIDI USB: https://github.com/tigoe/SoundExamples/blob/master…MIDI over BLE:

#รวม

MIDI_CREATE_DEFAULT_INSTANCE(); #รวม CD74HC4067 my_mux(4, 3, 2, 1); // สร้างวัตถุ CD74HC4067 ใหม่ด้วยหมุดควบคุมสี่ตัว #define mux_handle_pin 5 // กำหนดพินเพื่อแชร์กับช่องสัญญาณจากตัวจัดการมัลติเพล็กเซอร์ #define mux_neck_pin 0 // กำหนดพินเพื่อแชร์กับช่องสัญญาณจากมัลติเพล็กเซอร์คอ // กำหนดทรานสโพสสวิตช์ #define transposeUp 7 #define transposeDown 6 ไบต์ neckKeysNumbers = {12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; ไบต์ จำนวนนิ้ว = 0; ไบต์ neckKeyHolded = {0, 0, 0}; ไบต์รูท = 48; ไบต์รองที่สาม; ไบต์ handleKeyNote = {0, 48, 50, 52, 53, 55, 57, 59}; ไบต์ handleKeyNoteSent = {0, 0, 0, 0, 0, 0, 0, 0}; int อ็อกเทฟ = 0; การตั้งค่าเป็นโมฆะ () { pinMode (LED_BUILTIN, OUTPUT); MIDI.begin(1); // เปิด MIDI และฟังช่อง 1 pinMode (mux_handle_pin, INPUT_PULLUP); pinMode(mux_neck_pin, INPUT_PULLUP); pinMode(transposeUp, INPUT_PULLUP); pinMode(ย้ายลง, INPUT_PULLUP); } void loop() { //For-Loop เพื่อตรวจสอบทุกคีย์ (1-7) บน HANDLE สำหรับ (ไบต์ i = 1; i <8; i++) { my_mux.channel(i); // ตรวจสอบทุกคีย์ผ่านมัลติเพล็กเซอร์ // หากมีการกดสวิตช์ (คีย์) & หากสถานะของคีย์ "ไม่กด" if ((digitalRead(mux_handle_pin) == LOW) && (handleKeyNoteSent==0)) { ดีเลย์ไมโครวินาที (2400); //For-Loop เพื่อตรวจสอบ 12 ปุ่ม (0-11) บนคอ สำหรับ (ไบต์ k = 0; k 0)) { MIDI.sendNoteOff (handleKeyNoteSent , 0, 1); // หยุดบันทึกย่อ handleKeyNoteSent = 0; // กำหนดให้เป็น "ไม่ส่ง" ล่าช้า (18); } } } // ฟังก์ชันนี้ใช้คีย์คอที่ตรวจพบและอิงตามนั้น // ตั้งค่าจำนวนรูทโน้ต (ใน MIDI) // amd ยังตั้งค่าจำนวนของโน้ตที่จะเป็นโมฆะรูทเซ็ตติ้งที่สามเล็กน้อย () { สวิตช์ (neckKeyHolded[0]) { กรณีที่ 12: root = 47; ผู้เยาว์ที่สาม = 3; หยุดพัก; กรณีที่ 1: รูท = 48; ผู้เยาว์ที่สาม = 4; หยุดพัก; กรณีที่ 2: รูท = 49; ผู้เยาว์ที่สาม = 5; หยุดพัก; กรณีที่ 3: รูท = 50; ผู้เยาว์ที่สาม = 6; หยุดพัก; กรณีที่ 4: รูท = 51; ผู้เยาว์ที่สาม = 7; หยุดพัก; กรณีที่ 5: รูท = 52; ผู้เยาว์ที่สาม = 8; หยุดพัก; กรณีที่ 6: รูท = 53; ผู้เยาว์ที่สาม = 9; หยุดพัก; กรณีที่ 7: รูท = 54; ผู้เยาว์ที่สาม = 10; หยุดพัก; กรณีที่ 8: รูท = 55; ผู้เยาว์ที่สาม = 11; หยุดพัก; กรณีที่ 9: รูท = 56; ผู้เยาว์ที่สาม = 12; หยุดพัก; กรณีที่ 10: รูท = 57; ผู้เยาว์ที่สาม = 1; หยุดพัก; กรณีที่ 11: รูท = 58; ผู้เยาว์ที่สาม = 2; หยุดพัก; ค่าเริ่มต้น: รูท = 48; ผู้เยาว์ที่สาม = 4; หยุดพัก; } } // ฟังก์ชั่นนี้ตั้งค่าบันทึกจริงที่ปุ่ม hande-key จะเล่น // อันดับแรกจะตรวจสอบว่าการเปลี่ยนทรานส์โพสสวิตช์ และทรานสโพสอ็อกเทฟขึ้นหรือลงหากจำเป็น // จากนั้นจะตรวจสอบว่าจำนวนนิ้วที่อยู่ในตำแหน่งตรงกับคอร์ดหลักหรือรอง (1 หรือ 2 นิ้ว) // สุดท้าย หากตรวจพบ 2 นิ้วในตำแหน่ง มันจะตรวจสอบว่านิ้วที่สองอยู่ที่ // โน้ตตัวรองที่สามที่สอดคล้องกันหรือไม่ ถ้าไม่อย่างนั้น นิ้วที่ 2 จะถูกละเว้นและคอร์ดจะถูก // ตีความว่าเป็นคอร์ดหลัก หากนิ้วที่ 2 กำลังเล่นเป็นตำแหน่งรองลงมา ฟังก์ชันจะกำหนด // บันทึกย่อที่ปุ่มจัดการจะทำงาน ถือเป็นโมฆะ keyConstructor () { if (digitalRead (transposeUp) == LOW) { อ็อกเทฟ = 12; } else if (digitalRead(transposeDown) == LOW) { อ็อกเทฟ = -12; } อื่น ๆ { อ็อกเทฟ = 0; } // สเกลใหญ่ if (neckKeyHolded[1] == 0) { handleKeyNote[1] = root + octave; handleKeyNote [2] = รูท + อ็อกเทฟ + 2; handleKeyNote[3] = รูท + อ็อกเทฟ + 4; handleKeyNote[4] = รูท + อ็อกเทฟ + 5; handleKeyNote[5] = รูท + อ็อกเทฟ + 7; handleKeyNote[6] = รูท + อ็อกเทฟ + 9; handleKeyNote[7] = รูท + อ็อกเทฟ + 11; } // สเกลเล็กน้อย if (neckKeyHolded[1] == minorThird) { handleKeyNote[1] = root + octave; handleKeyNote [2] = รูท + อ็อกเทฟ + 2; handleKeyNote[3] = รูท + อ็อกเทฟ + 3; handleKeyNote[4] = รูท + อ็อกเทฟ + 5; handleKeyNote[5] = รูท + อ็อกเทฟ + 7; handleKeyNote[6] = รูท + อ็อกเทฟ + 8; handleKeyNote[7] = รูท + อ็อกเทฟ + 11; } }

ขั้นตอนที่ 7: เครื่องมือ (สิ่งที่ส่งมาด้วย)

ตราสาร (สิ่งที่ส่งมาด้วย)
ตราสาร (สิ่งที่ส่งมาด้วย)
ตราสาร (สิ่งที่ส่งมาด้วย)
ตราสาร (สิ่งที่ส่งมาด้วย)

และเช่นเคย ฉันไม่มีแผนการออกแบบและการวัดขนาดโครงการที่สมบูรณ์และมีรายละเอียด ฉันได้เปลี่ยนแปลง แก้ไข และออกแบบสิ่งต่างๆ ผ่านกระบวนการทั้งหมดในการสร้างจริงๆ และการเปลี่ยนแปลงส่วนใหญ่เหล่านี้ขึ้นอยู่กับวัสดุและส่วนประกอบที่ฉันมีอยู่ในขณะนั้น

ที่กล่าวว่าในโอกาสนี้ ฉันมีเนื้อหาและข้อมูลเกี่ยวกับขั้นตอนการออกแบบมากกว่าในโครงการก่อนหน้านี้ เพราะฉันใช้บริการการพิมพ์ 3 มิติและการตัดด้วยเลเซอร์เพื่อสร้างชิ้นส่วนจำนวนมาก ฉันไม่ได้จะทำการวัดและตัด MDF ทั้งหมดที่ฉันทำในเครื่องสุดท้ายของฉัน ฉันได้แนบไฟล์ที่ฉันออกแบบมาสำหรับการตัดด้วยเลเซอร์สำหรับชิ้นส่วนส่วนใหญ่ และโมเดล 3 มิติของเครื่องมือ โปรดทราบ ไฟล์ทั้งหมดเหล่านี้ส่วนใหญ่เหมือนกับของจริงที่ฉันสร้าง แต่มีความคลาดเคลื่อน เนื่องจากฉันทำการเปลี่ยนแปลงมากมายหลังจากการตัดด้วยเลเซอร์ดั้งเดิมและการสร้างแบบจำลอง 3 มิติ ใช้ไฟล์เหล่านี้เป็นจุดเริ่มต้นสำหรับโครงการของคุณ ไม่ใช่เป็นเทมเพลตที่ชัดเจน

โปรดให้ความสนใจกับคำอธิบายประกอบที่ฉันเขียนบนรูปภาพในขั้นตอนต่อไปนี้ด้วย

ขั้นตอนที่ 8: เครื่องมือ: คอ

Image
Image
เครื่องดนตรี: คอ
เครื่องดนตรี: คอ
เครื่องดนตรี: คอ
เครื่องดนตรี: คอ
เครื่องดนตรี: คอ
เครื่องดนตรี: คอ

โดยพื้นฐานแล้วนี่คือชิ้นส่วน MDF ตัดด้วยเลเซอร์แบบยาวสองสามชิ้นที่วางซ้อนกัน เพื่อสร้างคอที่หนาเพียงพอ โดยมีพื้นที่เพียงพอภายในสำหรับสวิตช์ชั้นเชิง (ปุ่มคอ) และโมดูลมัลติเพล็กเซอร์ และยังมีแผ่น MDF ที่ตัดด้วยเลเซอร์ 14 ชิ้นในรูปทรงคีย์เปียโนเพื่อปิดสวิตช์ สวิตช์ติดตั้งอยู่บนบอร์ดและต่อสายเข้ากับมัลติเพล็กเซอร์

ขั้นตอนที่ 9: เครื่องมือ: จัดการ

Image
Image
เครื่องมือ: มือจับ
เครื่องมือ: มือจับ
เครื่องดนตรี: มือจับ
เครื่องดนตรี: มือจับ

นี่เป็นส่วนที่ยากที่สุดสำหรับฉัน ฉันไม่รู้ว่าฉันแก้ไขส่วนนี้ทั้งหมดได้หรือไม่ แต่อย่างน้อยก็ใช้งานได้ดีสำหรับผู้ที่มีปัญหา มีสวิตช์ 7 ตัวผ่านมัลติเพล็กเซอร์ และสามารถเลื่อนผ่านรูในตัวเครื่องมือได้ จะไม่พยายามอธิบายดังนั้นนี่คือภาพ …

ขั้นตอนที่ 10: เครื่องมือ: ร่างกาย

Image
Image
เครื่องดนตรี: ร่างกาย
เครื่องดนตรี: ร่างกาย
เครื่องดนตรี: ร่างกาย
เครื่องดนตรี: ร่างกาย

นี่เป็นส่วนที่ง่ายที่สุดของทุกส่วน แค่กล่องตัดด้วยเลเซอร์ที่มีรูปร่างคล้ายกับเครื่องดนตรีชิ้นใดชิ้นหนึ่ง ฉันยังคิดที่จะใช้กล่องใส่ซิการ์แบบกล่อง แต่ถ้าฉันจะตัดด้วยเลเซอร์ ฉันอาจจะตัดด้วยเลเซอร์ดีๆ ก็ได้ คุณสมบัติหลักที่ร่างกายควรมีอันดับแรกคือ รูทั้งหมดสำหรับขั้วต่อที่จำเป็น แจ็ค ฯลฯ (บวกหนึ่งช่องเพื่อป้อนสายไฟเข้ากับวงจรคอ) รูที่ใหญ่กว่าหนึ่งรูด้านบนซึ่งที่จับสามารถเลื่อนผ่านได้ (ดังแสดงในวิดีโอและรูปภาพแรก) และสุดท้ายสวิตช์ย้ายตำแหน่งสองตัวที่วางอยู่ที่ปลายแต่ละด้านของรูเลื่อนเพื่อตรวจจับการเคลื่อนไหวของที่จับ (ดูวิดีโอที่สองและ คำอธิบายประกอบทั้งหมดในภาพ)

ขั้นตอนที่ 11: วิธีเล่น

วิธีเล่น
วิธีเล่น
วิธีเล่น
วิธีเล่น

เล่นคอร์ด

มาลองเล่นคอร์ดไมเนอร์และนายกเทศมนตรีง่ายๆ ตามที่อธิบายไว้ในตอนต้นในส่วน "วิธีการทำงาน" โดยพื้นฐานแล้ว ปุ่มใดๆ ที่คุณกดที่คอจะให้มาตราส่วนหลักของโน้ตนั้นบนปุ่มจัดการ นอกจากนี้ หากคุณนับ 3 คีย์ขึ้นไป (เลื่อนไปทางที่จับ) และกดปุ่มนั้น ขณะที่กดปุ่มเดิมค้างไว้ คุณจะยังคงมีสเกลของโน้ตดั้งเดิมนั้นบนปุ่มแฮนเดิล แต่คราวนี้จะเป็นสเกลย่อย ผู้อ่านที่ได้รับการฝึกฝนทางดนตรีจะเข้าใจ (ดีกว่าฉันจริงๆ) ว่าการกดปุ่มที่สามจากโน้ตใด ๆ ก็เหมือนกับการเล่นที่สาม

นอกจากนี้ หากคุณรู้สึกว่าโน้ต 7 ตัวไม่เพียงพอสำหรับคุณ คุณสามารถเลื่อนขึ้นหรือลงที่จับทั้งหมดผ่านรูสไลด์ของตัวหลัก และคุณจะมีโน้ต 7 ตัวเดียวกันหนึ่งอ็อกเทฟขึ้นหรือลง

การเล่นคอร์ด (คำอธิบายสำหรับผู้เริ่มต้น)

คอร์ดคือโน้ตตั้งแต่สองตัวขึ้นไปที่เล่นด้วยกันลองนึกถึงนักเปียโนหรือนักกีตาร์ที่กำลังเล่นโน้ตหลายตัว (คีย์เปียโนหรือสายกีตาร์) พร้อมกันและปล่อยให้มันดัง พวกเขาร้องประโยคเล็กๆ ทับท่อนนั้น จากนั้นพวกเขาก็ตีโน้ตอีกชุดหนึ่งแล้วร้องอีกประโยคหนึ่ง พวกเขากำลังเล่นคอร์ดและร้องเพลง นี่คือแก่นแท้ของเพลงพื้นฐาน แล้วเราจะทำสิ่งนี้กับ Synthfonio ได้อย่างไร? เรียบง่าย. คุณต้องการเล่นคอร์ด E หรือไม่? คุณเพียงแค่กดปุ่ม E ที่คอ และคุณก็สามารถยิงอะไรก็ได้ที่คุณต้องการบนปุ่มที่จับ ไม่ต้องกังวล มันจะอยู่ในท่วงทำนอง แล้วคอร์ดรองล่ะ? (คอร์ดที่มีชื่อลงท้ายด้วยตัวอักษร "m" เช่น Am, Em, G#m, C#m เป็นต้น) มาเล่นคอร์ด A minor (Am) กัน เรากดปุ่ม A (ดูแผนภาพที่แนบมา) แต่เรานับสามปุ่มขึ้นไปด้วย (เลื่อนไปทางที่จับ) และเราก็กดปุ่มนั้นเช่นกัน (ในกรณีนี้คือ C) สิ่งนี้จะเปลี่ยนคอร์ด A ให้เป็นคอร์ด Am (A minor) ได้อย่างมีประสิทธิภาพ

เล่นเพลง

ตอนนี้ อย่างที่บางคนอาจทราบแล้ว มีเพลง 4 คอร์ดมากมาย มักจะสร้างทับคอร์ดหลักและรองอย่างง่าย สมบูรณ์แบบ. เรา google “คอร์ดชื่อเพลง” หาคอร์ดที่เราต้องการ (นี่คือตัวอย่างง่ายๆ สองสามตัวอย่าง) หากคอร์ดเป็นคอร์ดหลัก เราก็แค่กดคีย์เดียวบนคอของ Synthfonio แล้วเล่นอะไรก็ได้ที่คุณรู้สึก ที่จับ หากมีคอร์ดเล็ก ๆ ปรากฏขึ้นในเพลง เราก็แค่กดคีย์ที่สัมพันธ์กันและคีย์ที่สามขึ้น เท่านี้เราก็พร้อมแล้ว แค่นั้นแหละ. คุณสามารถใช้ปุ่มแฮนเดิลเพื่อเล่นคอร์ดและร้องเพลง หรือเล่นท่วงทำนอง อาร์เพจจิโอ ฯลฯ

ขณะนี้ฉันกำลังอยู่ระหว่างการรวมคอร์ดที่มีการเสริมและลดขนาด โดยการวางนิ้วที่สามในตำแหน่ง หรือแม้แต่เพียงสองนิ้วด้วยนิ้วที่สองที่กำหนดส่วนที่ห้าที่เพิ่มหรือลดลง

นี่เป็นโครงการระหว่างดำเนินการ ในระหว่างนี้ เล่นต่อไป ทดลอง และสนุกไปกับมัน ฉันยอมรับข้อเสนอแนะ (:

เครื่องชั่งต่างๆ

ปัจจุบันจัดการคีย์สร้างบันทึกที่ 1 ถึง 7 ของมาตราส่วนที่ประกาศ ฉันใช้การกำหนดค่านี้ในคำแนะนำนี้เพื่อให้เข้าใจง่าย แต่สิ่งนี้สามารถเปลี่ยนแปลงได้อย่างง่ายดายเพื่อสร้างมาตราส่วนที่แตกต่างกันโดยการแก้ไขฟังก์ชัน keyConstructor() ฉันกำลังใช้การกำหนดค่าเพนทาโทนิกสำหรับแฮนเดิล เพราะช่วยให้ฉันมีโน้ตรูทหนึ่งอ็อกเทฟในตำแหน่งสไลด์ของแฮนเดิลเดียวกัน ในการกำหนดค่าปัจจุบัน คุณต้องเลื่อนที่จับขึ้นหรือลงเพื่อให้มีโน้ตในอ็อกเทฟอื่น

ขั้นตอนที่ 12: การปรับเปลี่ยนที่เป็นไปได้

ดังที่ได้กล่าวไปแล้วในตอนต้น ฉันพยายามทำให้บทช่วยสอนนี้เรียบง่ายที่สุดเท่าที่จะทำได้ โดยลดโครงการให้อยู่ในรูปแบบพื้นฐานที่สุด ด้วยเหตุนี้ ฉันจึงละเว้นคุณสมบัติบางอย่างที่ฉันเพิ่ม (หรือวางแผนที่จะเพิ่ม) ใน Synthfonio ของฉันเอง นี่คือบางส่วน:

-MIDI over BLE: หากคุณมีบอร์ด MKR WIFI 1010 การรวมเข้าด้วยกันนั้นค่อนข้างง่าย ไลบรารีนี้มีตัวอย่าง midi ที่ตรงไปตรงมามาก คุณสามารถเพิ่มคำสั่ง midi จากไลบรารีนั้นไปยังคำสั่ง MIDI ปกติที่เรียกโดยสเก็ตช์ของ Synthfonio หรือเพื่อประหยัดแบตเตอรี่ ให้เพิ่มสวิตช์เพื่อเปิดใช้งานฟังก์ชันบลูทูธเมื่อจำเป็นเท่านั้น (การใช้การขัดจังหวะของ Arduinos และระบบรีเซ็ตอัตโนมัติเช่นนี้จะเป็นความคิดที่ดี)

-PitchBend: แม้ว่าไลบรารี synth จะไม่สามารถจัดการคำสั่ง pitch bend ของ MIDI ได้ แต่ไลบรารี MIDI ก็อนุญาตให้คุณส่งได้ สิ่งสำคัญคือต้องตัดสินใจว่าจะควบคุมมันอย่างไร โพเทนชิออมิเตอร์ใดๆ ควรทำงานได้ดี แต่ฉันกำลังคิดเกี่ยวกับทางเลือกอื่นที่น่าสนใจกว่า เช่น เซ็นเซอร์! ความใกล้ชิด แสง ฯลฯ

การประกวดเครื่องดนตรี
การประกวดเครื่องดนตรี
การประกวดเครื่องดนตรี
การประกวดเครื่องดนตรี

รางวัลรองชนะเลิศการประกวดเครื่องดนตรี

แนะนำ: