สารบัญ:
- ขั้นตอนที่ 1: การพึ่งพา
- ขั้นตอนที่ 2: กำหนดค่า Midi Input Values
- ขั้นตอนที่ 3: เพิ่มโฟลเดอร์เพิ่มเติมพร้อมตัวอย่าง
- ขั้นตอนที่ 4: เพิ่มและกำหนดค่าตัวอย่างเพิ่มเติมภายในโฟลเดอร์ใหม่
- ขั้นตอนที่ 5: การอ้างอิงแป้นตัวเลข
วีดีโอ: เครื่องกลอง Raspberry Pi: 5 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:02
ตัวอย่างซีเควนเซอร์ ผ่าน Raspberry Pi + Python
ซีเควนเซอร์มี 4 โพลิโฟนี และอนุญาตให้ผู้ใช้จัดเก็บและคิวลำดับที่แตกต่างกัน 6 ลำดับ ซึ่งสามารถสลับกันได้แบบเรียลไทม์ และสนับสนุนความสามารถในการเปลี่ยนระหว่างตัวอย่างต่างๆ
ฉันเขียนสคริปต์ในลักษณะที่ใช้งานได้จริงกับตัวควบคุมและเสียง MIDI จริงๆ ฉันใช้คลังเสียงที่แตกต่างกัน 18 แบบ โดยแต่ละตัวอย่างมี 16 ตัวอย่าง อย่างไรก็ตาม การเพิ่มหรือลบคลังเสียงและตัวอย่างนั้นง่ายและไม่ต้องแก้ไขอะไรมากมาย หากคุณมีปัญหาใด ๆ ส่งอีเมลถึงฉัน: [email protected]
ค้นหารหัสบน GitHub ได้ที่:
โปรดแจ้งให้เราทราบหากคุณใช้งาน และโดยเฉพาะอย่างยิ่งหากคุณสร้างวิดีโอด้วย!
ขั้นตอนที่ 1: การพึ่งพา
โปรแกรมนี้ต้องการโมดูล Python (ไม่มีในตัว) ต่อไปนี้:
มิโด้
pygame
งี่เง่า
อย่างไรก็ตาม Mido ทำให้เกิดความยุ่งยากบางอย่างเนื่องจาก Mido ต้องการการพึ่งพาเล็กน้อย เพื่อให้แน่ใจว่าได้รับการติดตั้งทั้งหมด เพียงพิมพ์คำสั่งต่อไปนี้ลงในเทอร์มินัลของ Raspberry Pi ของคุณ (ไม่ต้องใส่ '$') แล้วทุกอย่างก็จะดีเอง ส่วนโมดูลอื่นๆ สามารถติดตั้งได้ตามปกติ
$ sudo apt-get update
$ sudo apt-get ติดตั้ง build-essential
$ sudo apt-get ติดตั้ง libasound-dev หรือ libasound2-dev
$ sudo apt-get ติดตั้ง libjack0
$ sudo apt-get ติดตั้ง libjack-dev
$ sudo apt-get ติดตั้ง python-pip
$ sudo apt-get ติดตั้ง python-dev
$ sudo pip ติดตั้ง python-rtmidi
$ sudo pip ติดตั้ง mido
ขั้นตอนที่ 2: กำหนดค่า Midi Input Values
ภายในสคริปต์ Python หลัก มีอาร์เรย์ที่เรียกว่า noteList ซึ่งประกอบด้วยจำนวนเต็ม 16 ตัว (บรรทัดที่ 165) ค่าเหล่านี้เป็นค่าบันทึก MIDI ที่ตัวควบคุมของเราส่งไปยัง Pi เพื่อกระตุ้นเสียง ตัวควบคุม midi ทุกตัวนั้นแตกต่างกัน ดังนั้นหากคุณไม่มี Akai LPD8 คุณจะต้องเปลี่ยนค่าเหล่านี้ให้ตรงกับอุปกรณ์ของคุณ
Github repo ยังมีสคริปต์อื่นที่เรียกว่า "midihelp.py" ซึ่งสร้างขึ้นเพื่อจุดประสงค์นี้โดยเฉพาะ! ทั้งหมดที่ทำได้คือพิมพ์ค่าอินพุตจากคอนโทรลเลอร์ MIDI ตัวแรกที่คอมพิวเตอร์รู้จักไปยังคอนโซล สิ่งที่คุณต้องทำคือแทนที่ค่าเหล่านี้ในอาร์เรย์ หากค่าเหล่านี้แตกต่างจากค่าที่รวมอยู่ใน noteList
ลำดับของโน้ตยังสัมพันธ์กับเอฟเฟกต์เสียงต่อโฟลเดอร์ที่เล่น ดังนั้นโปรดระลึกไว้เสมอว่า
ขั้นตอนที่ 3: เพิ่มโฟลเดอร์เพิ่มเติมพร้อมตัวอย่าง
ชุดตัวอย่างภายในสคริปต์จะถูกจัดเก็บผ่านโฟลเดอร์ในไดเร็กทอรีเดียวกัน โดยตั้งค่าให้ชุด 808 อยู่ในไฟล์ GitHub ด้วยวิธีนี้ ฉันสามารถเก็บชุดตัวอย่างต่างๆ ทุกประเภทไว้ในโฟลเดอร์ที่จัดระเบียบและแทนที่ได้อย่างง่ายดาย
สิ่งเดียวที่ต้องเปลี่ยนในสคริปต์คือตัวแปร foldNum ซึ่งเพิ่งบอกสคริปต์ว่ามีโฟลเดอร์ตัวอย่างกี่โฟลเดอร์ ขณะนี้สคริปต์ได้ตั้งค่า foldNum เป็นหนึ่งเนื่องจากมีโฟลเดอร์ย่อยเพียงโฟลเดอร์เดียวในไดเร็กทอรีเดียวกัน (ชุด 808) โฟลเดอร์สูงสุดที่สคริปต์สามารถจัดการได้ในขณะนี้คือ 18 โฟลเดอร์ ซึ่งเป็นจำนวนที่ฉันใช้อยู่ อย่างไรก็ตาม ค่อนข้างน้อย แก้ไขสิ่งนี้ แจ้งให้เราทราบหากคุณต้องการความช่วยเหลือ
ชื่อของโฟลเดอร์ไม่สำคัญ (ตราบใดที่มันต่างกันทั้งหมด) เนื่องจากสคริปต์จะอ่านจำนวนโฟลเดอร์ในไดเร็กทอรีเดียวกันและจับเส้นทางด้วยวิธีนี้ ชื่อของไฟล์เองมีความสำคัญมากกว่านั้นในขั้นตอนต่อไป
ขั้นตอนที่ 4: เพิ่มและกำหนดค่าตัวอย่างเพิ่มเติมภายในโฟลเดอร์ใหม่
เสียงจะถูกโหลดลงในแซมเพลอร์ผ่านโฟลเดอร์ในไดเร็กทอรีเดียวกันที่มีไฟล์.wav โดยมีชื่อเป็นตัวเลขระหว่าง 0-15 ดูโฟลเดอร์ 808 ที่รวมไว้สำหรับตัวอย่างนี้ ทุกโฟลเดอร์ย่อยที่มีตัวอย่างควรมีลักษณะเหมือนกันทุกประการ
ดัชนีของอินพุต MIDI ในอาร์เรย์ noteList สอดคล้องกับชื่อไฟล์.wav ทุกประการ
ตัวอย่างเช่น:
- เมื่อคุณทริกเกอร์บันทึก MIDI ที่เก็บไว้ใน noteList[0] ไฟล์ wav 0.wav จะเล่น
- เมื่อคุณเรียกบันทึก MIDI ที่เก็บไว้ใน noteList [8] ไฟล์ wav 8.wav จะเล่น
ฉันทำในส่วนนี้เพื่อให้ตัวควบคุม MIDI ทุกตัวสามารถตั้งค่าให้ทำงานกับสคริปต์ได้อย่างง่ายดาย และฉันสามารถขยายหรือจำกัดจำนวนตัวอย่างและจำนวนอินพุตได้ง่าย รวมทั้งจัดระเบียบไฟล์และสคริปต์เพื่อให้กลองกระฉับกระเฉง เสียงจะถูกบันทึกเป็น 0.wav เสมอและจะถูกกระตุ้นโดยบันทึก MIDI ตัวแรก
ฉันได้เลือกค่า 16 ค่าตามอำเภอใจเพื่อให้สอดคล้องกับอินพุต 16 ตัวบนคอนโทรลเลอร์ของฉัน ดังนั้นหากคุณต้องการสร้างซีเควนเซอร์ด้วยตัวอย่างเพียง 1 ตัวอย่างหรือมากกว่านั้น สิ่งที่คุณต้องทำก็คือการนับไฟล์เสียงตามลำดับและ ลบหรือบวกตัวเลขที่เก็บไว้ในอาร์เรย์ noteList เพื่อให้ตรงกัน
หากชุด 808 ที่รวมอยู่นั้นทำงานอย่างถูกต้อง แต่คุณมีปัญหากับตัวอย่างของคุณเอง วิธีแก้ปัญหาน่าจะเป็นการเปลี่ยนอัตราตัวอย่างของไฟล์ให้ตรงกับอัตราการสุ่มตัวอย่าง 22, 050khz ของ PyGame และความลึกบิตที่ 16 คุณสามารถทำได้ใน Audacity หรือ ซอฟต์แวร์แก้ไขเสียงอื่นๆ พวกเขาควรจะทำงานได้อย่างสมบูรณ์แบบจากที่นั่น!
ขั้นตอนที่ 5: การอ้างอิงแป้นตัวเลข
โอเค มีหลายสิ่งหลายอย่างเกิดขึ้นภายในซีเควนเซอร์ มากกว่าที่ฉันคิดไว้ในตอนแรก ดังนั้นฉันจึงยัดเยียดลงบน Number Pad เล็กน้อยเพื่อให้เข้ากับฟังก์ชันที่เพิ่มขึ้น ในความคิดนี้ เครื่องหมายดอกจัน * และจุด ทั้งสองทำงานเป็นปุ่มฟังก์ชั่น
อ้างอิง
ฟังก์ชันหลัก
[8] - เปิดและปิดเครื่องเมตรอนอม
[9] - สลับเปิดและปิดโหมดบันทึก
[Enter] - เล่น/หยุดซีเควนซ์
[0] - ลบบันทึกปัจจุบันในลำดับ
[Num Lock และ *] - ปิดเครื่อง
[MIDI Note และ.] - อย่าหาจำนวนเป็นเลขคู่
ฟังก์ชั่นจังหวะ
[+] - หลักสูตรเร่งความเร็ว BPM
[-] - หลักสูตรช้าลง BPM
[+ และ *] - เร่งความเร็ว BPM
[- และ *] - BPM ช้าลงอย่างรวดเร็ว
[+ และ.] - ปรับความเร็ว BPM
[- และ.] - ปรับ BPM ให้ช้าลง
ฟังก์ชันลำดับ
[1-6] เรียกคืนลำดับ 1-6
[1-6 และ.] ลำดับร้านค้า 1-6
[0 และ.] ล้างลำดับปัจจุบัน
การเปลี่ยนโฟลเดอร์ตัวอย่าง
[1-9 และ *] - เปลี่ยนเป็น Sample Pack ในโฟลเดอร์ 1-9
[1-9 และ * และ.] - เปลี่ยนเป็น Sample Pack ในโฟลเดอร์ 10-18
เคล็ดลับลำดับ:
- ล้างลำดับปัจจุบัน [0 และ.] และเก็บไว้ในลำดับใดๆ ที่คุณต้องการล้างออกจากหน่วยความจำ
- เรียกคืนลำดับและเก็บไว้ในหมายเลขอื่นเพื่อคัดลอก
แนะนำ:
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
LED กะพริบด้วย Raspberry Pi - วิธีใช้พิน GPIO บน Raspberry Pi: 4 ขั้นตอน
LED กะพริบด้วย Raspberry Pi | วิธีใช้ GPIO Pins บน Raspberry Pi: สวัสดีทุกคนในคำแนะนำนี้เราจะเรียนรู้วิธีใช้ GPIO ของ Raspberry pi หากคุณเคยใช้ Arduino คุณอาจรู้ว่าเราสามารถเชื่อมต่อสวิตช์ LED ฯลฯ เข้ากับหมุดของมันและทำให้มันทำงานได้ ทำให้ไฟ LED กะพริบหรือรับอินพุตจากสวิตช์ดังนั้น
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: 4 ขั้นตอน
อินเทอร์เฟซ ADXL335 Sensor บน Raspberry Pi 4B ใน 4 ขั้นตอน: ในคำแนะนำนี้ เราจะเชื่อมต่อเซ็นเซอร์ ADXL335 (accelerometer) บน Raspberry Pi 4 กับ Shunya O/S
HX1-DM - เครื่องกลอง DIY แบบ Upcycled Arduino DUE ที่ขับเคลื่อนด้วยเครื่องดรัม (สร้างจากเครื่อง MK2): 4 ขั้นตอน
HX1-DM - เครื่องกลอง DIY แบบ Upcycled Arduino DUE ที่ขับเคลื่อนด้วยเครื่องดรัม (สร้างจากเครื่อง MK2): The Spec. คอนโทรลเลอร์ Hybrid Midi / กลอง: Arduino DUE ขับเคลื่อน! 16 แผ่นตรวจจับความเร็วที่มีความหน่วงต่ำมาก 1>ms 8 ปุ่มที่ผู้ใช้กำหนดให้กับคำสั่ง Midi #CC ใดก็ได้ 16ch ซีเควนเซอร์ในตัว (ไม่ต้องใช้คอมพิวเตอร์!!) ฟังก์ชัน MIDI เข้า/ออก/ผ่าน
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI - เริ่มต้นใช้งาน Raspberry Pi 3B - การตั้งค่า Raspberry Pi ของคุณ 3: 6 ขั้นตอน
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI | เริ่มต้นใช้งาน Raspberry Pi 3B | การตั้งค่า Raspberry Pi ของคุณ 3: อย่างที่พวกคุณบางคนรู้ว่าคอมพิวเตอร์ Raspberry Pi นั้นยอดเยี่ยมมากและคุณสามารถรับคอมพิวเตอร์ทั้งหมดได้บนบอร์ดเล็ก ๆ ตัวเดียว Raspberry Pi 3 Model B มี ARM Cortex A53 แบบ 64 บิตแบบ quad-core โอเวอร์คล็อกที่ 1.2 GHz ทำให้ Pi 3 ประมาณ 50