Daftar Isi:

Keytar Hero (Menggunakan Pengontrol Gitar Wii Sebagai Synthesizer): 7 Langkah (dengan Gambar)
Keytar Hero (Menggunakan Pengontrol Gitar Wii Sebagai Synthesizer): 7 Langkah (dengan Gambar)

Video: Keytar Hero (Menggunakan Pengontrol Gitar Wii Sebagai Synthesizer): 7 Langkah (dengan Gambar)

Video: Keytar Hero (Menggunakan Pengontrol Gitar Wii Sebagai Synthesizer): 7 Langkah (dengan Gambar)
Video: Миди-контроллер Guitar Hero! 2024, Juli
Anonim
Image
Image
Langkah 1: Raspberry Pi (Pengaturan Awal)
Langkah 1: Raspberry Pi (Pengaturan Awal)

Game Guitar Hero sangat populer belasan tahun yang lalu, jadi pasti ada banyak pengontrol gitar tua yang tergeletak di sekitar mengumpulkan debu. Mereka memiliki banyak tombol, kenop, dan tuas, jadi mengapa tidak menggunakannya dengan baik lagi? Pengontrol gitar biasanya tidak mengeluarkan suara sendiri, tetapi dalam tutorial ini saya akan menunjukkan cara mengonversi Pengontrol Wii Guitar Hero sehingga dapat dimainkan sebagai synthesizer.

Perlengkapan

  • Pengontrol Wii Pahlawan Gitar
  • Papan breakout Nunchucky (tersedia di Adafruit di sini)
  • 4ea kabel jumper (wanita ke wanita)
  • 2ea konektor crimp (opsional)
  • Raspberry Pi (3 B+ atau 4 lebih disukai)
  • Kartu MicroSD 16GB

Langkah 1: Langkah 1: Raspberry Pi (Pengaturan Awal)

Raspberry Pi adalah otak dan otot dari proyek ini, jadi hal pertama yang perlu kita lakukan adalah menyiapkannya untuk proyek kita. Saya sudah mencoba proyek ini pada Raspberry Pi 3 B+ dan 4, dan keduanya tampaknya berfungsi dengan baik.

Raspberry Pi adalah mikrokomputer yang menyimpan semuanya di kartu microSD, bukan di hard drive…termasuk OS. Cara umum untuk menggunakannya adalah dengan mengunduh OS terbaru dan membakar gambarnya ke kartu microSD sebagai berikut:

  • Di PC atau laptop terpisah, buka
  • Unduh OS Raspbian terbaru. (Buster pada saat penulisan ini). Ada beberapa versi yang tersedia di halaman yang memberikan lebih atau kurang perangkat lunak yang disertakan tergantung pada preferensi Anda. Semuanya harus berfungsi dengan baik, tetapi saya suka menggunakan opsi "Raspbian Buster dengan desktop dan perangkat lunak yang direkomendasikan" karena mencakup beberapa IDE pemrograman dan aplikasi praktis lainnya. Cara termudah adalah mengunduh versi zip.
  • Bakar gambar Raspbian ke kartu microSD. Ada banyak aplikasi yang dapat Anda gunakan untuk membakar gambar Raspbian ke kartu microSD Anda, tetapi saya menggunakan program balenaEtcher yang bisa Anda dapatkan di sini. Masukkan kartu microSD ke komputer Anda dan jalankan balenaEtcher. Untuk gambar disk, pilih file zip yang Anda unduh, lalu pilih kartu SD Anda, dan tekan flash. Alat ini akan membuka zip file gambar disk dan membakarnya ke kartu SD. PENTING: Pastikan drive yang Anda pilih adalah kartu microSD…alat ini akan menimpa drive apa pun yang Anda tentukan, jadi pastikan Anda memilih yang benar.
  • Jalankan Raspberry Pi Anda. Masukkan kartu microSD ke Raspberry Pi Anda. Sambungkan daya, mouse, keyboard, dan speaker Anda. Jika Anda mengikuti petunjuknya, cukup jelas… atur lokasi/waktu Anda, setel kata sandi, dan sambungkan WiFi.

Ini semua adalah pengaturan standar untuk Raspberry Pi jadi jika Anda memerlukan detail lebih lanjut, Anda dapat menemukannya di sini. Kami akan melakukan sisa langkah kami di Raspberry Pi.

Langkah 2: Langkah 2: Aktifkan I2c

Langkah 2: Aktifkan I2c
Langkah 2: Aktifkan I2c

Guitar Hero Controller menggunakan i2c untuk berkomunikasi (i2c adalah protokol yang cukup umum digunakan oleh perangkat elektronik untuk berbicara satu sama lain), jadi kita perlu mengaktifkan fitur ini di Raspberry Pi:

  • Instal perpustakaan untuk i2c. Pustaka i2c sekarang tampaknya menjadi bagian dari build standar Buster, tetapi untuk berjaga-jaga, kami akan menjalankan penginstal untuk mereka. Buka shell (ada ikon untuk itu di bilah tugas di bagian atas) dan ketik yang berikut ini:

    • sudo apt-get install -y python-smbus
    • sudo apt-get install -y i2c-tools
  • Aktifkan i2c di Raspberry Pi. Di shell Anda ketik: Sudo raspi-config. Ini akan memunculkan jendela konfigurasi Anda. Panah ke bawah ke InterfacingOptions->I2C untuk mengaktifkan i2c untuk perangkat. Untuk keluar dari jendela, panah kanan ke Kembali lalu ke Selesai untuk menyimpan pengaturan.
  • Menyalakan ulang. Di shell Anda, ketik: sudo reboot
  • Setel parameter i2c khusus. Baudrate i2c default (100k) terkadang membingungkan gitar, jadi kami akan memperlambatnya menjadi 50k sebagai berikut:

    • Dalam jenis shell: sudo nano /boot/config.txt
    • Ini akan membuka file konfigurasi Anda di editor teks. Panah ke bawah dan temukan baris yang mengatakan dtparam=i2c_arm=on. Jika dikomentari, batalkan komentarnya. Jika Anda tidak memiliki baris itu, tambahkan. Di bawah baris itu juga tambahkan yang berikut:

      • dtparam=i2c1=pada
      • dtparam=i2c1_baudrate=50000
    • Tekan Ctrl + O untuk menyimpan file konfigurasi dan kemudian tekan Ctrl + X untuk keluar.
  • Menyalakan ulang. Di shell Anda, ketik: sudo reboot

Langkah 3: Langkah 3: Instal Data Murni

Langkah 3: Instal Data Murni
Langkah 3: Instal Data Murni
Langkah 3: Instal Data Murni
Langkah 3: Instal Data Murni

Untuk suara synthesizer kami akan menggunakan program bernama Pure Data. Ini adalah suara generatif dan alat tampilan interaktif yang telah ada cukup lama. Ini memiliki beberapa fitur yang membuatnya ideal untuk proyek ini … ia memiliki UI berbasis simpul yang cukup mudah digunakan, dan dapat menerima sinyal dari sumber eksternal seperti skrip python.

  • Instal Data Murni. Dalam jenis shell: Sudo apt-get install puredata
    • Ini harus menginstal perangkat lunak pada Raspberry Pi Anda, tetapi jika itu mengeluh di shell tentang tidak dapat menemukan semua file yang dibutuhkan, coba ini:

      • sudo apt-get update
      • Kemudian jalankan perintah install lagi: sudo apt-get install puredata
    • Selama instalasi itu akan meminta Anda jika Anda ingin membuat direktori untuk ekstensi, Anda dapat mengatakan Ya.
  • Luncurkan Data Murni. Jika diinstal dengan benar, Anda akan melihat program yang terdaftar di Desktop Start Menu di bawah Sound & Video. Jalankan untuk memastikan itu diluncurkan.
  • Siapkan audio Data Murni. Audio di Data Murni biasanya tidak aktif secara default sehingga Anda harus mengaktifkannya.

    • Atur output audio ke ALSA. Saat Pure Data diluncurkan, Anda akan melihat jendela konsolnya. Buka menu Media dan Pilih ALSA sebagai output Anda. Anda mungkin melihat pesan peringatan di shell konsol yang mengatakan tidak dapat menemukan file tertentu, tetapi Anda dapat mengabaikannya.
    • Nyalakan audio DSP. Di jendela konsol, centang kotak yang bertuliskan DSP.
  • Uji keluaran audio. Di jendela konsol Data Murni, buka Media-> Uji Audio & MIDI. Ini akan membuka file uji yang dapat kita gunakan untuk memastikan Data Murni berfungsi dan kita dapat mendengar audio. Nyalakan speaker Anda tetapi pertahankan pada volume rendah pada awalnya (terkadang audio bisa sangat keras secara default). Di file tes, di sisi kiri Anda akan melihat bagian yang disebut Test Tones. Klik pada kotak yang bertuliskan 60 terlebih dahulu dan lihat apakah Anda mendengar suara apa pun dari speaker Anda. Jika tidak, coba klik kotak 80 lalu nyalakan speaker Anda hingga Anda mendengar suara. Jika Anda mendengar suara, coba seret ke dalam kotak yang bertuliskan Pitch di sebelah kanan Test Tones di mana Anda dapat mengubah frekuensi nada dan melihat apa yang terjadi.

Jika Anda dapat meluncurkan Data Murni dan mendengar suara dari patch uji, maka Anda siap untuk melanjutkan ke langkah berikutnya. Tapi Pure Data bisa sedikit rewel tentang output audio pertama kali, jadi jika Anda masih tidak mendapatkan audio coba yang berikut ini:

  • Mungkin audio dirutekan melalui kabel HDMI, jadi untuk memaksanya menggunakan jack headphone:

    • Dalam jenis shell: sudo raspi-config
    • Buka Opsi Lanjutan-> Audio-> Paksa jack 3.5mm ('headphone')
  • Coba reboot. Terkadang ini berhasil.
  • Periksa speaker dan koneksi Anda ke Raspberry Pi.

Langkah 4: Langkah 4: Menghubungkan Gitar

Langkah 4: Menghubungkan Gitar
Langkah 4: Menghubungkan Gitar
Langkah 4: Menghubungkan Gitar
Langkah 4: Menghubungkan Gitar
Langkah 4: Menghubungkan Gitar
Langkah 4: Menghubungkan Gitar

Cara termudah untuk menghubungkan pengontrol gitar ke Raspberry Pi adalah dengan papan breakout murah seperti Nunchucky*. Papan ini memungkinkan Anda untuk mengakses sinyal yang datang dari gitar tanpa memotong steker atau membuka gitar. Di satu sisi papan ada jejak datar yang dirancang agar pas dengan colokan yang berasal dari gitar. Ada juga dua takik kecil yang memungkinkan steker terkunci pada tempatnya sehingga mencegahnya lepas. Jejak mengarah ke empat pin header di sisi berlawanan dari papan.

Catatan: Nunchucky dilengkapi dengan pin header tetapi tidak disolder sehingga Anda harus melakukannya sendiri. Untuk milik saya, saya menggunakan pin header 90 derajat sebagai gantinya yang memungkinkannya untuk diletakkan rata di proyek akhir.

Anda memerlukan empat kabel untuk menghubungkan Nunchucky ke Raspberry Pi. Hubungkan kabel dari pin header Nunchucky ke pin GPIO Raspberry Pi sebagai berikut:

  • 3.3v -> Pin 1
  • Data -> Pin 3
  • Clk -> Pin 5
  • Gnd -> Pin 9

Dalam proyek saya, saya menggunakan konektor crimp untuk kabel sehingga tidak mudah ditarik. Tetapi jika Anda tidak memiliki konektor crimp, empat kabel jumper female-to-female akan berfungsi dengan baik. Jika Anda menggunakan konektor crimp, pastikan Anda memperhatikan urutan kabel pada pin header dan pin GPIO. Perhatikan juga, bahwa pada pin GPIO, kita melewatkan pin 7. Untuk menjelaskan hal ini, saya menggunakan konektor crimp lima kawat di satu ujung dan melewatkan satu slot.

Untuk memverifikasi bahwa Raspberry Pi Anda dapat mendeteksi pengontrol gitar, buka shell dan ketik: sudo i2cdetect -y 1

Itu harus mencetak kotak di shell dengan sebagian besar tanda hubung ganda di dalamnya. Jika komputer dapat mendeteksi gitar, Anda akan melihat ID gitar # 52 di salah satu slot … di mesin saya itu muncul di kolom 2, baris 5 … tetapi tidak masalah yang mana, selama Anda melihatnya nomor 52 di suatu tempat di sana.

Jika komputer tidak dapat mendeteksinya, berikut adalah beberapa hal yang harus dicoba:

  • Pastikan kabel Anda terhubung erat.
  • Pastikan Anda memiliki semua yang terhubung ke pin yang tepat.
  • Balikkan steker Gitar. Nunchucky tidak mencegah Anda menghubungkan steker secara terbalik, jadi mungkin terbalik.
  • Pastikan i2c diaktifkan pada Raspberry Pi (seperti yang ditunjukkan pada langkah 2)

*Jika colokan pada controller gitar terlihat familiar, itu karena sama dengan controller Wii Nunchuck standar…maka nama Nunchucky! Ini juga berarti bahwa Anda dapat menggunakan papan breakout yang sama ini untuk terhubung ke pengontrol nunchuck juga.

Langkah 5: Langkah 5: Menyatukan Semuanya

Langkah 5: Menyatukan Semuanya
Langkah 5: Menyatukan Semuanya
Langkah 5: Menyatukan Semuanya
Langkah 5: Menyatukan Semuanya

Sekarang semuanya sudah diatur di Raspberry Pi, kita hanya perlu sedikit kode untuk membuatnya berfungsi. Anda dapat mengunduh kode dan file lain yang diperlukan sebagai berikut:

  • Untuk mengunduh kode dan file lain ke Raspberry Pi, buka shell baru dan ketik perintah berikut (Anda mungkin perlu meletakkan 'sudo' sebelum itu): git clone
  • Ini akan membuat direktori di direktori home Anda yang disebut keytarHero (yaitu /home/pi/keytarHero) dan mengunduh file ke dalamnya.

Ada tiga file utama dalam paket ini:

  • WiiGHController.py: Ini adalah skrip python yang membuka koneksi i2c ke gitar dan mengembalikan nilai dari berbagai kontrol. Secara default ia juga mencetak nilai yang dibacanya ke shell sehingga Anda dapat melihat apa yang dilakukannya.
  • keytarHero.pd: Ini adalah file patch Data Murni yang saya buat untuk membuat musik yang akan Anda dengar. Ini diatur untuk membaca nilai yang masuk dari gitar dan mengarahkannya ke berbagai node untuk menghasilkan suara. Saya akan membahas detail tambalan di langkah berikutnya, tetapi pada akhirnya Anda dapat memodifikasi ini untuk melakukan apa pun yang Anda inginkan dari sini.
  • keytarHero.py: Ini adalah skrip yang memulai seluruh proses dan menyatukan semuanya. Ini meluncurkan Data Murni dan membuka patch keytarHero.pd. Ini membuka koneksi ke patch dan meneruskan nilai dari gitar ke patch.

Saat kebenaran! Pastikan gitar terhubung ke Raspberry Pi dan kemudian Anda siap untuk pergi. Untuk memulai, Anda hanya perlu menjalankan skrip keytarHero.py. Untuk melakukan ini:

  • Buka shell baru dan ketik: cd keytarHero
  • Kemudian jalankan perintah: python keytarHero.py

Itu dia! Jika semuanya berfungsi dengan benar, Data Murni harus diluncurkan dan mulai memainkan tambalan. Anda harus mendengar urutan not yang dimainkan, dan saat Anda menekan tombol pada gitar, nada tersebut akan meresponsnya.

Penyelesaian masalah

Jika tidak berfungsi, berikut beberapa hal yang perlu diperiksa:

  • Patch Data Murni tidak diluncurkan atau mendapatkan kesalahan karena tidak menemukan file? Skrip keytarHero.py memiliki jalur ke file patch Data Murni yang di-hardcode ke '/home/pi/keytarHero/keytarHero.pd'. Jika Anda telah memindahkan folder keytarHero atau file tambalan itu ke tempat lain, Anda harus memperbarui skrip untuk menggunakan jalur Anda. Untuk melakukan ini, buka file keytarHero.py dan cari variabel bernama PD_PATCH_PATH dan ubah untuk menunjuk ke direktori tempat file keytarHero.pd Anda berada. Simpan skrip dan jalankan kembali dan Anda harus siap.
  • Apakah gitar memancarkan sinyal? Script harus mencetak sinyal yang didapat dari gitar ke shell secara terus menerus sebagai rangkaian angka, masing-masing mewakili nilai kontrol pada gitar. Saat Anda menggunakan kontrol pada gitar, itu akan menyebabkan angka-angka ini berubah. Jika tidak, periksa apakah Anda telah melakukan pengaturan i2c dan koneksi gitar dengan benar pada langkah-langkah di atas.
  • Apakah audio Data Murni dihidupkan? Patch Data Murni yang disediakan dalam paket ini akan secara otomatis mengaktifkan audio tetapi memverifikasi bahwa kotak centang DSP di konsol Data Murni dicentang. Periksa juga pengaturan audio Anda seperti yang ditunjukkan pada Langkah 3.
  • Apakah Data Murni menerima sinyal dari gitar? Di sudut kanan atas patch adalah sekelompok node yang bertanggung jawab untuk membaca sinyal dari gitar dan mengirimkannya ke seluruh patch. Saat Anda menekan tombol pada gitar, angka-angka di bagian ini akan diperbarui juga memberi tahu Anda bahwa ia menerima sinyal dengan benar.
  • Inisialisasi variabel dalam tambalan. Data Murni bisa sedikit rewel tentang nilai di tambalan yang tidak diinisialisasi. Saya telah menambahkan mekanisme untuk memicu variabel ketika terbuka tetapi mungkin ada baiknya hanya mengklik beberapa kotak pesan (yang terlihat seperti sudah digigit). Hal ini menyebabkan mereka untuk menginisialisasi dan dapat membangunkan mereka.

Langkah 6: Tur Patch Data Murni

Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni
Tur Patch Data Murni

Pengaturan yang dijelaskan sejauh ini dalam tutorial ini akan membuat semuanya bekerja untuk Anda, tetapi salah satu hal menyenangkan tentang menggunakan Data Murni untuk proyek ini, adalah dapat disesuaikan untuk melakukan apa pun yang Anda inginkan. Ketika tambalan terbuka jika Anda menekan Ctrl + E itu menempatkan tambalan ke mode Edit dan Anda dapat mengubah tambalan. Detail penggunaan Data Murni berada di luar cakupan tutorial ini (ada banyak tutorial online untuk itu) tetapi bisa menyenangkan untuk mengotak-atiknya, jadi inilah tur umum tentang apa yang terjadi di patch keytarHero.pd jika Anda ingin menyesuaikannya:

  • Komunikasi gitar: Di kanan atas patch adalah pohon node yang bertanggung jawab untuk menangani sinyal dari gitar. Nilai dari gitar adalah string yang panjang, jadi node ini memecah string menjadi nilai individual untuk setiap kontrol, mengubahnya menjadi angka, dan kemudian meneruskannya ke node 'kirim' (yang dimulai dengan s). Node pengirim diberi nama dan memancarkan sinyal untuk 'menerima' node dengan nama yang sama. Misalnya node 'whammy', memancarkan nilai yang berasal dari whammy bar gitar dan node 'r whammy' di tengah patch menerima sinyal itu dan menggunakan sinyal itu untuk menghentikan sequencer. Node kirim/terima membantu mengurangi kekacauan jalur koneksi di patch. Saya tidak menyarankan bermain-main dengan bagian ini karena agak rewel untuk mendapatkan yang benar, tetapi Anda pasti dapat menambahkan node penerima tambahan di seluruh tambalan yang diperlukan untuk menerima sinyal darinya sesuai kebutuhan.
  • Bagian sequencer: Bagian tengah patch mengontrol sequencer. Di sisi kiri adalah bilah dengan kotak hitam bergerak yang menunjukkan not mana dari urutan 16 not yang dimainkan. Kunci strum mengontrol apakah urutan diputar maju atau mundur. Tombol plus/minus menambah/mengurangi kecepatan. Di sisi kanan ada lima set angka yang mengontrol not mana yang dimainkan selama setiap langkah. Setiap urutan ditetapkan untuk dimainkan ketika salah satu dari lima tombol pada fret ditekan. Angka-angka ini adalah nilai MIDI dan Anda dapat mengubahnya untuk memainkan nada apa pun yang Anda inginkan… cukup beri nilai antara 0 dan 127.
  • Bagian Osilator/FX: Di kiri bawah adalah osilator dan simpul FX yang benar-benar mengeluarkan suara. Osilator utama ada di sebelah kiri. Nilai midi dari bagian sequencer diubah menjadi frekuensi dan diumpankan ke osilator. Itu dicampur dengan osilator kedua yang datang dari sisi kanan. Frekuensinya juga dikendalikan oleh nilai midi tetapi dengan offset frekuensi tambahan yang digerakkan oleh sumbu X joystick. Ini menyebabkan efek detuned atau siulan saat Anda menggerakkan joystick ke kiri atau kanan. Di kanan bawah juga terdapat node low pass filter yang frekuensi cutoffnya terikat pada sumbu Y joystick. Filter lolos rendah menentukan seberapa banyak suara frekuensi tinggi dihilangkan dari suara. Ketika joystick dipindahkan ke posisi bawah, ia memotong sebagian besar frekuensi tinggi yang menghasilkan suara teredam. Ketika dipindahkan ke posisi ke atas, ia melewati semua frekuensi sehingga menghasilkan suara yang lebih terang.
  • Inisialisasi: Di kiri atas patch ada serangkaian node yang menginisialisasi patch saat diluncurkan seperti menyalakan audio dan 'menyentuh' berbagai node untuk membangunkannya. Sekali lagi Anda mungkin tidak perlu mengacaukan bagian ini, tetapi jika ada hal-hal yang Anda inginkan terjadi saat patch diluncurkan, hubungkan mereka ke node yang disebut 'loadbang'.
  • Saya telah mencoba mendokumentasikan tambalan dengan komentar di tambalan itu sendiri, jadi semoga itu akan memberi Anda informasi yang cukup untuk menjelajahi berbagai opsi dari sini.

Menikmati!

Langkah 7: Hal Tambahan untuk Dicoba

Menjalankan gitar 'tanpa kepala'

Seharusnya dimungkinkan untuk menjalankan proyek ini tanpa terhubung ke monitor/keyboard/mouse jika Anda menjalankan Raspberry Pi dari sumber daya portabel yang sesuai. Raspberry Pi tidak cukup pas dengan lubang di bagian belakang gitar tetapi jika Anda merasa berani, Anda dapat membuat modifikasi pada gitar untuk memperbaikinya…atau cukup pasang Pi ke belakang dengan sekrup dan tempelkan keluar sedikit. Ada banyak tutorial online tentang cara menjalankan skrip di Raspberry Pi tanpa kepala, tetapi pada dasarnya Anda ingin menjalankan perintah 'python /home/pi/keytarHero/keytarHero.py&' saat boot. Secara teoritis, Anda akan memiliki gitar dengan hanya satu kabel yang keluar darinya ke speaker…sama seperti gitar listrik asli!

Modifikasi Data Murni Tambahan

Saya memiliki beberapa ide lain tentang bagaimana gitar dapat mengontrol patch Data Murni tetapi tidak sempat mencobanya. Ini akan menjadi perubahan di patch yang mungkin menyenangkan untuk bereksperimen dengan:

  • Whammy bar: Pada patch saat ini, whammy bar hanya menghentikan pemutaran urutan, tetapi saya pikir akan lebih baik jika whammy bar juga menaikkan frekuensi pada saat yang sama seperti yang dilakukan oleh whammy bar yang sebenarnya. Saya mencoba membuatnya bekerja untuk sementara waktu, tetapi itu lebih sulit daripada yang saya kira. Saya pikir itu mungkin hanya masalah menambahkan ekspresi di bagian osilator yang menambahkan frekuensi sedikit lebih tinggi ke osilator berdasarkan nilai yang berasal dari whammy bar.
  • Strum bar: Saat ini strum bar memainkan urutan ke depan saat ditekan ke bawah dan ke belakang saat ditekan ke atas, tetapi mungkin lebih baik untuk menggilirnya melalui opsi urutan yang berbeda seperti langkah acak, dll.
  • Tombol plus/minus: Tombol plus/minus mengubah ketukan per menit tetapi agak kurang memuaskan kecuali Anda menekannya beberapa kali. Mungkin bagus untuk meningkatkannya dengan jumlah yang lebih besar setiap kali. Atau mungkin mengubah sequencer antara 16-beat, 8-beat, 4-beat, triplet playback.

Direkomendasikan: