สารบัญ:

เครื่องกลอง Raspberry Pi: 5 ขั้นตอน
เครื่องกลอง Raspberry Pi: 5 ขั้นตอน

วีดีโอ: เครื่องกลอง Raspberry Pi: 5 ขั้นตอน

วีดีโอ: เครื่องกลอง Raspberry Pi: 5 ขั้นตอน
วีดีโอ: แกะกล่อง Raspberry Pi 5 มีอะไรมาใหม่ มีอะไรเปลี่ยนไปบ้าง… 2024, พฤศจิกายน
Anonim
เครื่องกลอง Raspberry Pi
เครื่องกลอง Raspberry Pi

ตัวอย่างซีเควนเซอร์ ผ่าน 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

กำหนดค่าอินพุต Midi ค่า
กำหนดค่าอินพุต Midi ค่า

ภายในสคริปต์ 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 และ.] และเก็บไว้ในลำดับใดๆ ที่คุณต้องการล้างออกจากหน่วยความจำ

- เรียกคืนลำดับและเก็บไว้ในหมายเลขอื่นเพื่อคัดลอก

แนะนำ: