Tentang proyek ini
Baru Jenis Instrumen
Kravox telah dibuat sebagai bagian dari proyek penelitian di Universitas Lund (Swedia) dengan tujuan untuk memberikan pengontrol instrumen musik digital perasaan instrumen mekanis konvensional.
Sekarang Kravox dapat diakses oleh semua orang dan berfungsi sebagai platform eksperimen musik, jadi tutorial terperinci ini telah dibuat untuk memungkinkan sebanyak mungkin orang menggunakan instrumen baru yang menarik ini!
Cara Memainkan Kravox
Memainkan Kravox cukup mudah. Bayangkan saja Anda bermain-main dengan objek biasa seperti sapu dan cara Anda menyentuh dan memindahkannya melalui ruang mengontrol bagaimana suara dihasilkan. Lihat dan dengar cara memainkan Kravox di video ini.
Apa itu Kravox?
Kravox adalah alat musik digital open source yang kompatibel lintas platform yang terdiri dari tiga komponen – pengontrol, penerima, dan perangkat lunak.
Pengontrol/s
Hingga tiga perangkat pengontrol nirkabel dapat dihubungkan. Setiap pengontrol memproses data orientasi dan akselerasi dari giroskop digital MPU-6050 dan data sentuh dari dua papan sensor sentuh MPR121 yang terhubung ke Arduino Nano. Pengontrol mengirim/s data ke perangkat penerima melalui transceiver radio nRF24L01/s.
Jika lebih dari satu pengontrol akan digunakan, pengontrol kedua dan ketiga perlu mendapatkan alamat individual yang ditetapkan. Untuk informasi lebih lanjut tentang menetapkan alamat, lihat info di bagian DEKLARASI / NRF24L01 dari kode pengontrol.
Penerima
Penerima meneruskan data yang diterima dari pengontrol melalui USB ke komputer yang terhubung, bersama dengan data yang dikumpulkan dari beberapa potensiometer. Kode perangkat penerima yang disediakan memungkinkan komunikasi dengan hingga tiga pengontrol, tetapi juga akan berfungsi hanya dengan satu atau dua tanpa penyesuaian.
Perangkat Lunak
Data dari penerima diproses dalam program yang ditulis dalam Pure Data Vanilla yang mengeluarkan suara.
Apa yang akan kita buat dalam Tutorial ini – Panduan Langkah demi Langkah
Keindahan Kravox adalah bentuk, suara, dan cara memainkannya dapat disesuaikan. Ini memberi saya kesempatan untuk merancang versi Kravox yang mudah direplikasi untuk tutorial ini.
(Jika Anda penasaran:Di saluran youtube saya, Anda juga dapat menemukan selang waktu bagaimana saya membuat versi Kravox yang lebih besar)
Baik video di atas maupun tutorial ini akan menunjukkan kepada Anda semua langkah yang diperlukan tentang cara membuat pengontrol dan receiver yang berfungsi penuh dari komponen listrik dan kardus yang tersedia dengan mudah.
Bagian 1 – Mengumpulkan Komponen dan Alat
Anda memerlukan komponen berikut untuk membuat pengontrol + stasiun penerima Kravox:
{1x} 50*24 lubang (ukuran minimum) Perfboard, {5x} header wanita 40-Pin, {5x} header pria 40-Pin, {5x} potensiometer 10 kilo-Ohm dan Kenop untuknya, {3x} Biru standar 5mm LED, {3x} resistor 150 Ohm, {2x} 10 kapasitor mikro-farad, {2x} 100 kapasitor nano-farad, {2x} transceiver radio NRF24L01, {2x} Arduino nano, {3x} resistor 220 Ohm, {2x} Papan sensor sentuh MPR121, giroskop digital {1x} GY-521 MPU 6050, {2x} kabel USB-A ke USB-C, {1x} 4 meter (minimum) pita tembaga lebar 1 cm, powerbank {1x}, {2x } Kabel 7 meter (minimum) dalam berbagai warna dan opsional {1x} 0, 2 meter =3mm shrinktube.
Selain itu, Anda memerlukan alat untuk merakit komponen:
dan nanti juga beberapa kardus kosong atau sejenisnya:
Dan lem, pistol lem, pita perekat, satu atau lebih klem dan karet gelang untuk membuat penutup:
Bagian 2 – Membuat Papan Pengontrol
Selanjutnya saya akan menjelaskan cara membuat elektronika controller step by step dari bagian-bagian yang disebutkan diatas
Jika ragu, di mana untuk menyolder kabel, Anda selalu dapat kembali ke diagram sirkuit di bawah ini dan memeriksa, apakah komponen akan terhubung dengan benar, setelah Anda memasang arduino dan papan sensor ke papan sirkuit yang kita buat.
2.1
Langkah pertama adalah memotong perfboard dan pin-header perempuan sesuai ukuran dan merakitnya bersama-sama dengan kapasitor kecil dan besar yang membantu meningkatkan keandalan radio-transceiver:
Potong papan berlubang dengan pisau utilitas:
Potong kepala pin wanita dengan gergaji besi (saya letakkan di buku untuk meratakannya dari atas meja):
Solder di bagian-bagiannya. Anda sudah dapat menghubungkan setiap pasangan pin dari dua header wanita panjang yang duduk bersebelahan. Untuk header yang tersisa cukup dengan memasangnya dengan sedikit solder – sebaiknya pin yang sesuai dengan diagram sirkuit tidak ada koneksi lagi nantinya. Saat menyolder kapasitor, perhatikan polaritas kapasitor elektrolit 10-mikro-farad (yang lebih besar dari keduanya). Satu sisi akan memiliki garis dan biasanya juga kaki yang lebih pendek. Sisi itu perlu dihubungkan ke ground. Kapasitor 100 nano-farad yang lebih kecil tidak terpolarisasi dan dapat disolder dengan cara apa pun.
Hasilnya akan terlihat seperti ini:
2.2
Langkah kedua adalah menyolder dua LED dengan resistor pembatas arusnya.
Perhatikan polaritas LED:Satu sisinya rata dan biasanya juga memiliki kaki yang lebih pendek. Sisi tersebut perlu dihubungkan ke ground pada langkah 2.3. Sisi lain kita sekarang akan terhubung dengan kabel berwarna cyan ke jack tempat pin Arduino D3 nantinya akan duduk saat dicolokkan:
2.3
Selanjutnya kita tambahkan semua kabel power supply warna merah dan biru. Merah untuk 3,3 Volt dan biru untuk ground (GND)
Hasilnya akan terlihat seperti ini:
2.4
Pada langkah keempat, papan sudah mulai sedikit ramai. Tiga papan sensor berkomunikasi melalui protokol I2C (sirkuit antar-terintegrasi). Itu berarti mereka semua dapat dihubungkan ke dua pin Arduino yang sama, jadi kami menyolder kabel kuning dan hijau di antara mereka dan pin Arduino A4 dan A5. Kami juga menambahkan kabel putih untuk koneksi pin interupsi giroskop.
Ketika ini selesai, papan akan terlihat seperti ini:
2,5
Transceiver radio berkomunikasi melalui protokol SPI sebagai gantinya (antarmuka periferal serial) yang membutuhkan lebih banyak koneksi daripada I2C, jadi kami menambahkan kabel hitam, abu-abu, coklat, ungu, dan oranye:
Inilah yang akan Anda dapatkan:
2.6
Sekarang saatnya menyiapkan komponennya.
Selain menyolder pada header pin jantan jika tidak disolder sebelumnya, berikan perhatian khusus pada papan sensor sentuh! Model murah dari Cina memiliki pin alamat yang terpasang ke ground tanpa resistor pull-down di antaranya, jadi Anda perlu memotong sambungan ini secara fisik di bagian bawah papan dengan pisau utilitas. Potong di antara dua bantalan solder di sebelah tempat ADD ditulis. Saya sarankan untuk menggunakan multimeter untuk memeriksa bahwa tidak ada sambungan yang tersisa di antara bantalan setelahnya:
Ketika semua komponen telah disolder pin headernya dan papan sensor sentuh sudah siap, Anda dapat mencolokkan Arduino Nano, giroskop, dua papan sensor sentuh, dan transceiver radio ke papan pengontrol:
Papan pengontrol (mungkin) yang sudah jadi:
2,7
Setelah memeriksa ulang, jika semuanya terhubung dengan benar, langkah selanjutnya adalah mengunggah kode Kravox-Controller yang disediakan (lihat lampiran) ke Arduino nano, tetapi sebelum Anda dapat melakukannya, Anda perlu menginstal pustaka untuk giroskop, papan sensor sentuh dan transceiver radio. Jika Anda baru mengenal perpustakaan Arduino, cari tahu cara menginstalnya di sini.
- Giroskop MPU-6050 memerlukan library "I2Cdev.h" dan "MPU6050_6Axis_MotionApps20.h" oleh Jeff Rowberg yang dapat diunduh di sini.
- Papan sensor sentuh MPR121 memerlukan pustaka "MPR121.h" dari Bare Conductive yang dapat ditemukan di sini. Setidaknya ada dua versi perpustakaan. Pastikan untuk menginstal versi yang dikembangkan oleh Bare Conductive dan bukan yang dikembangkan oleh Adafruit.
- Papan transceiver radio NRF24L01 memerlukan pustaka "nRF24L01.h" dan "RF24.h" oleh TMRh20 yang dapat diunduh di sini. Harap dicatat:Ada juga setidaknya dua versi perpustakaan tersebut dengan nama yang sama. Pastikan untuk menginstal yang dikembangkan oleh TMRh20 dan bukan yang dibuat oleh maniacbug.
Segera setelah pustaka diinstal, Anda dapat mengunggah kode Kravox-Controller. Jika Anda ingin memeriksa, apakah pengontrol berfungsi, Anda dapat membiarkannya mengeluarkan data dari sensor sentuh dan giroskop melalui Serial Monitor. Untuk itu Anda perlu menghapus komentar bagian terakhir dari kode penerima sebelum mengunggah:
dengan menghapus tanda komentar di awal ( /* ) dan di akhir ( */ ) sehingga kodenya seperti ini:
Setelah mengupload kode dengan variasi tersebut, buka Serial Monitor, dan atur ke baudrate (kecepatan transfer data) 115200. Sekarang Anda seharusnya dapat melihat data dari sensor yang berubah saat Anda memindahkan papan pengontrol dan menyentuh pin dari papan MPR121 yang diberi label dari 0 hingga 11.
Jika tidak ada yang berhasil atau Anda hanya mendapatkan nol, periksa kabel Anda dengan hati-hati dan bandingkan dengan diagram rangkaian di atas. Jika Anda mendapatkan keluaran lucu dari Serial Monitor, periksa apakah Anda telah menyetelnya ke baudrate yang benar.
2.8
Hubungkan papan pengontrol Anda ke bank daya yang ingin Anda gunakan dengannya.
Jika papan (atau lebih tepatnya powerbank) tidak mati secara otomatis setelah beberapa waktu, papan pengontrol Anda selesai dan Anda dapat melanjutkan ke Bagian 3! Jika tidak, lakukan langkah 2.9
2.9
Pada prinsipnya papan pengontrol sudah selesai, tetapi beberapa powerbank akan mati secara otomatis setelah beberapa detik saat terhubung ke papan pengontrol seperti sekarang karena mengkonsumsi energi yang sangat sedikit
Sebagai perbaikan kotor, kita bisa menambahkan tiga resistor 220 Ohm secara paralel antara pin 5V dan GND Arduino. Resistor tersebut akan menghilangkan energi tambahan dan mengubahnya menjadi panas, sehingga pengontrol mengkonsumsi cukup banyak daya agar bank daya tetap menyala. Jangan khawatir:bahkan dengan bank daya kecil, itu akan tetap bekerja selama berhari-hari tanpa henti tanpa mengisi ulang
Lepaskan Arduino Nano dan solder di resistor seperti ini:
Jadi papannya terlihat seperti ini:
dan setelah memasang kembali komponen, papan pengontrol (pasti) selesai terlihat seperti itu:
Bagian 3 – Membuat Papan Penerima
Di bagian tutorial ini saya akan menunjukkan cara membuat papan penerima. Prosesnya sangat mirip dengan membuat papan pengontrol
Jika Anda ingin memeriksa, di mana kabel tertentu harus dihubungkan, Anda dapat merujuk ke diagram rangkaian ini:
3.1
Langkah pertama adalah memotong perfboard dan female pin-header menjadi ukuran dan merakitnya bersama-sama dengan kapasitor kecil dan besar yang membantu meningkatkan keandalan radio-transceiver. Header pin wanita terendah sengaja dibiarkan lebih lama dari yang diperlukan, sehingga Anda berpotensi dapat menggunakannya untuk proyek lain seperti Arduino granular Synth nanti. Anda dapat membandingkan langkah ini dengan langkah 2.1 untuk info lebih lanjut
Foto papan di akhir langkah 3.1:
3.2
Selanjutnya kita tambahkan semua kabel power supply warna merah dan biru. Merah untuk 3,3 Volt dan biru untuk ground (GND)
Ini adalah bagaimana seharusnya terlihat seperti:
3.3
Menyolder di Kabel untuk komunikasi SPI:
3.4
Memasang komponen:
Papan penerima sudah selesai sekarang, tetapi sebelum kita dapat mengunggah kode Kravox-Receiver dari lampiran ke Arduino Nano, kita harus terlebih dahulu membuat antarmuka untuk penerima
Bagian 4 – Membuat Antarmuka Penerima
Di bagian tutorial ini saya menunjukkan cara membuat antarmuka dengan 4 potensiometer dan LED untuk penerima. Antarmuka kabel seperti ini:
Dan akan dicolokkan ke papan penerima seperti itu:
Lanjutkan seperti ini:Pertama ambil untaian kabel 8 kabel dan solder 5 di antaranya ke pin tengah potensiometer. Sebaiknya gunakan warna yang sama agar tidak bingung:
Selanjutnya, potong perfboard lebar 2 * 17 lubang dan header pin jantan 17 pin sesuai ukuran
Pasang kabel dan pin header ke board. Perhatikan diagram sirkuit di atas untuk memastikan bahwa Anda menghubungkan kabel di tempat yang tepat
Sekarang hubungkan satu sisi dari semua potensiometer dengan kabel ground-connection biru (dan mungkin gunakan kabel yang sedikit lebih panjang daripada yang saya lakukan). Juga tambahkan LED biru dengan resistor 150 Ohm yang membatasi arus. Sekali lagi perhatikan polaritas LED (bandingkan dengan langkah 2.2)
Selanjutnya sambungkan sisi lain dari semua potensiometer dengan kabel sambungan 5V berwarna hijau (dan mungkin gunakan kabel yang sedikit lebih panjang daripada yang saya lakukan).
Antarmuka yang telah selesai akan terlihat seperti ini...
...dan dapat dicolokkan ke papan penerima seperti itu:
Now you can also upload the Kravox Receiver code to the receiver's Arduino Nano.
If you want to see if it is working and receiving data from the controller, you again need to make a slight adjustment to the code before uploading. By default the Receiver will output it's data in a format that can be interpreted by pure data, but will not show useful information on the Serial Monitor. However you can change this behaviour in the code by commenting (adding // in front of) the line that says:
#define WRITE_AS_BYTES
and uncommenting (removing // in front of) the line that says:
// #define PRINT_VIA_SERIAL_MONITOR
So you turn this:
into that:
After uploading the altered code you will be able to see data from the controller and 4 of the potentiometers on the Serial Monitor as I demonstrate in this video:
Part 5 – Making the Controller Interface + Enclosure
Like the receiver the controller also gets an interface – a touch interface that we will make from copper tape:
It will be connected to the controller board like this:
As we directly want to attach the touch interface to the controller's enclosure, you should already have the (non-conductive) material at hand that you want to make the enclosure from. I used empty boxes that cling film and plastic bags came in:
Start making the controller interface by marking where you want to attach the touch electrodes. Please note that they must not touch or overlap each other:
Next, cut the 24 copper electrodes to size...
...and attach them to the enclosure:
Now we can make the plug. For that cut a 2 * 24 hole wide perfboard and a 24 pin male header to size and solder 24 cables to it. The cables in the middle should be at least 10 cm long. To the outside add the width of your electrodes plus the spacing in between for each cable. If for example you use 1 cm wide copper tape and leave 3 mm between the electrodes, your cable length should increase by 1.3 cm like this 10 / 11.3 / 12.6 / 13.9 / 15.2...
and solder the other ends of the cables to the electrodes like this:
Finish the interface by covering the copper surface with non-conductive adhesive tape:
Next fold the interface into a box and glue it:
Glue a smaller box to the box we made in the previous step. It later will contain the powerbank:
Cover the back of the controller board with some leftover cardboard orother slightly thicker non-conductive material:
Cut out holes for the LEDs and glue them and the powerbank (yellow object in the picture) in place. Make sure to place the powerbank in a way that you can still plug in and remove the USB-cable because that is how you turn your controller on and off. Also connect the touch-interface to the controller board and put it in the box. Most likely it will not move much, so you do not need to glue it in.
Make a cut out for the USB-A to USB-C cable at the junction of the two boxes, pull it through and connect it to the Arduino Nano:
Now the Controller is done!
You can close it with some rubber bands. If you later have problems with the sensors recognizing touch when there is none, try to put some non-conductive material like clingfilm or the like between the touch sensitive enclosure and the board and meandering cables. Also make sure to connect the powerbank when the touch sensitive part of the enclosure does not touch your hands or anything else. See Part 7 for more info.
Part 6 – Making the Receiver Enclosure
In part six we will make an enclosure for the receiver as well. You will need another cardboard box (I chose one that contained a bluetooth transceiver before – fitting huh?) and some knobs for the potentiometers
First cut out some circular holes for the potentiometers the LED. Also mak a cut out where you want to connect the USB-Cable to the Arduino Nano
Glue the Receiver board in. Make shure that the USB-C Jack of the Arduino Nano is aligned with the hole that you cut out for the cable connection in the step before.
Next glue in the LED and screw in all the potentiometers. The order how to put them in is the same as in the circuit diagram above:
Now you only need to attach the knobs....
...and the receiver is finished!
Part 7 – Connecting the Receiver to Pure Data
Now that all the hardware is finished, it's time to play some music with it! For that you need software that you can connect the hardware to. For Kravox that software is Pure Data Vanilla that you can download here for free
After installing Pure Data to your computer, start it and open the Kravox.pd file from the attachments. Please note that it needs to be saved on your computer in the same place as the drumsamples folder it comes with - otherwise Pure Data cannot find the samples
As soon as the Kravox.pd software interface has opened, look for a blue-info box and install the four so-called externals that are listed in the box. Installing them is straightforward:Just click on "help" in the Pure Data Menu, choose "Find additional objects on the internet" (might be phrased slightly different), search for "comport", "zexy", "freeverb" and "arraysize" one by one and install the most recent version. Now the four objects labeled, comport, repack, freeverb and arraysize should have a solid outline like in the picture below. You might need to restart Pure Data for that though
After installing the necessary externals you can connect the Receiver Box via USB. If you altered the code in Part 4 to use the Receiver with the Arduino Serial Monitor you need to undo this change first and upload the original code to the receiver's Arduino Nano before connecting and close the Arduino Serial Monitor, so the receiver is not busy trying to talk to it.
Now have a look at Pure Data's log / info window. If you see a rapidly updating data stream that's great because it means that pure data has already found the receiver, but most likely it will instead show you a red message like the one below that refreshes every other moment:
The red message might be a little different, but the result is the same:Pure Data did not yet succeed to connect to your receiver. That is because the program needs to be told, which USB port to listen to. USB-ports are sometimes a bit of a funny thing though:On a 2014 macbook Pro, Pure Data recognizes both USB ports as Serial Port 3, no matter to which you connect the receiver. In Milan I used Kravox with a Lenovo Yoga Pad with only one working USB-Port, that needed to be contacted as Serial Port 6, and recently installed it to another Windows Notebook with two USB-Ports, that wished to be addressed as Serial Ports 8 and 9... So my advice is just to try which number works with your USB-Port. For that I created a simple dialog as part of the Kravox.pd interface, where you can just click through the numbers until one works. You can also try the "Show available ports" and "Show connected USB-devices" buttons – Sometimes, but not very often that also provides useful information. However it takes a while until you get a response in the info window.
You will notice that you have found the right port number and that a connection has been established when the info window shows a data stream like this that updates rapidly:
Very good so far! Click save, so Pure Data will attempt to connect to this port the next time it opens automatically.
However we still need to turn the controller on. If you uncommented the last section of the Kravox Controller code in step 2.7 to connect the controller to the Serial Monitor you should upload the original Version again now.
Connect the controller board to the powerbank. When you do this, the touch-interface-enclosure around the the board should be closed and the touch sensitive part of the enclosure should not touch your hands or anything else, as the touch sensors sense their environment when powered up and assume it to be the untouched state
Congratulations – You are done!
Have much fun playing Kravox!
Kode
Kravox Code for Arduino and Pure Data
Under this link you can download a Zip-File that contains the Arduino Code for the Kravox controller and the Kravox receiver, the Kravox.pd-file for Pure Data and the necessary drumsamples for the instrument. Please refer to the tutorial for instructions how to use the files.https://github.com/timkrahmer/Kravox Skema