Bouw een Compacte MIDI Drumkit met 3D-printen
Onderdelen en benodigdheden
| Onderdeel | Aantal |
|---|---|
| Arduino UNO | 1 |
| Adafruit Standaard LCD - 16x2 Wit op Blauw | 1 |
| SparkFun Piezo | 1 |
| Adafruit Force Sensitive Resistor (FSR) | 1 |
| Weerstand 10k ohm | 1 |
| Weerstand 1M ohm | 1 |
| SparkFun Zener Diode - 5.1V 1W | 1 |
| SparkFun Drukknop 12mm | 1 |
| Schuifschakelaar | 1 |
| TRS-socket | 1 |
| USB-A naar B-kabel | 1 |
| Apple Lightning naar USB Camera Adapter | 1 |
Benodigde tools en machines
- 3D-printer (standaard)
- Lasersnijder (standaard) - optioneel, extra
- Solderbout (standaard)
- Cirkelsnijder
Apps en online diensten
- Arduino IDE
Over dit project
Hoi.
Dit is een minimalistische drumkit met Arduino UNO.
Allereerst, check deze Instructables-pagina:
https://blog.arduino.cc/2017/01/19/a-3d-printed-e-drum-pad/
Sinds ik dit begon te maken, was ik gevangen genomen door piezo's en elektronische drums. Ik was gefascineerd door het heel eenvoudige mechanisme van elektronische drums en de geweldige uitvinding genaamd MIDI. Met andere woorden, ik kon niet tevreden zijn met alleen pads maken.
Deze drumkit is ruwweg verdeeld in twee producties:
- Pad gemaakt met een 3D-printer en dik papier.
- Trigger MIDI-converter met Arduino UNO.
Het signaal dat van pad "1" wordt verstuurd, wordt verwerkt door Arduino van "2" en omgezet in een MIDI-signaal. En het MIDI-signaal wordt van de Arduino naar iPhone, laptop, etc. verstuurd, en er komt geluid uit. Je hebt geen andere voeding nodig dan een smartphone of PC.
Wat je nodig hebt
Tools
- 3D-printer
- Lasersnijder (Extra)
- Inbussleutel
- Stanleymes
- Cirkelsnijder
- Solderbout
- Pijpsnijder
- Bohrmachine
- Boorbout 9mm / 10mm
Materiaal
- 1mm dik papier
- PLA-filament
- Spons schuimplaten 5mm / 10mm
- MDF 2,5mm / 5,5mm (Extra)
- M6 - 70mm bouten en moeren
- M6 - 50mm bouten en moeren
- M3 - 10mm bouten en moeren
- M3 - 15mm bouten en moeren
- M3 - 25mm bouten en moeren
- M2 schroeven
- 13mm diameter RVS buis
Drum Hardware
- Mesh head 10 inch / 8 inch
- Snare stand (alles is OK. Ik gebruik YAMAHA SS662.)
- Hi-hat stand (alles is OK. Ik gebruik YAMAHA HS650A)
- Kikpedaal (alles is OK. Ik gebruik YAMAHA FP7210A)
- Drumstokken
Stap 1: 3D-printen
Alle data staat op Thingiverse en GitHub. Gebruik Versie 2 voor de rim. Ik printte onderdelen met een vulling van 20%. De laagdikte is 0,3 mm. Je kunt ook een lasersnijder gebruiken voor het maken van de pad.
https://github.com/RyoKosaka/drums/tree/master/vector
Stap 2: Assembleren
Gebruik M3-10mm bouten en moeren om de onderdelen met elkaar te verbinden. Gebruik de M3-15mm of M3-25mm bouten voor het middenstuk om de bodemstukken aan elkaar te fixeren.
Stap 3: Shell maken
Eerst, de hoogte van de shell is 55 mm. Maak drie banden met een breedte van 55 mm. De lengte is iets langer dan de lengte die de pad bedekt. Omdat er een gat is aan de onderkant, probeer één band in dat gat te steken. Knip de band zodat het een perfecte cirkel wordt. Herhaal dit 3 keer en plak ze met lijm op elkaar. Als de shell droog is, met de mesh head vastgezet, maak een gat van 9mm diameter voor de socket. Je kunt vlindermoeren gebruiken, maar ik maakte ook afstelmoeren die je kunt vastdraaien met gewone moeren, dus gebruik die gerust. Voor het fixeren van de mesh head, gebruik M6-70mm bouten. Zodra je een gat hebt gemaakt, haal de mesh head weer af om een piezo te plaatsen.
Stap 4: Piezo bevestigen
SNARE
Bij een snare gebruik je twee piezo's zoals op de foto. Verbind de rode kabel van de piezo met elk van tip en ring. Beide zwarte kabels verbinden met sleeve. Vergeet niet de kabels door de gaten in de sensorplaat te voeren bij het solderen. De piezo voor de head (piezo verbonden met tip) moet worden ingeslagen met 10mm dik spons schuim zoals op de foto. Eén eronder, drie erboven. En maak de bovenste 3 kegelvormig zoals de foto. Leg het dan op de sensorplaat.
KICK
Omdat de kick-pad maar één piezo gebruikt, kan alleen tip worden gebruikt. Geen sensorplaat vereist. Twee spons schuimen onder de piezo. Plaats de sensor verspringend van het midden. Omdat Arduino de kracht van de sla niet kan beoordelen als de beater de sensor direct raakt.
HI-HAT
De schakeling is hetzelfde als de kick-pad. Leg een stuk 10mm dik spons schuim onder de piezo. Piezo is gevoelig. Wees voorzichtig dat je het niet buigt of beschadigt.
Stap 5: 10-inch Snare Pad
Bevestig eerst de sensor voor de rim. Fix de sensorplaat. Fix het stevig. Maak het einde van de kegel 2-3mm zichtbaar als je van de zijkant kijkt. Natuurlijk wordt dezelfde procedure gebruikt wanneer je een 8-inch pad als snare gebruikt.
Stap 6: 8-inch Kick Pad
Eerst knip een 13mm diameter RVS-buis. Maak twee van 200mm en twee van 365mm. Omdat de lengte aangepast kan worden, is een kleine fout in de lengte geen probleem. Monteer ze met de foto's als referentie. Om de buis te fixeren, is het ontworpen zodat de M3-moer binnenin het onderdeel kan worden geladen. Fix de buis stevig. Gebruik M3-15mm bouten en moeren.
Stap 7: 12-inch Hi-Hat
Na het produceren van de shell met dik papier, dacht ik dat ik als ik dik papier gebruik, ook cymbalen kan maken. Eerst knip je dik papier in een cirkel met een diameter van 300mm. Maak er drie van. Maak vervolgens een insnijding vanaf het midden. Ten slotte maak je een tweede insnijding vanaf het punt 10mm parallel van de eerste insnijding. Op deze manier maak je drie pac-mannen met een kleine mond open. Sluit dan de mond van Pac-Man zorgvuldig met tape om het een cymbalvorm te geven. Breng lijm aan en leg ze op elkaar. Vergeet niet de lijm netjes en dun uit te streken. Houd stevig met je handen, leg gewichten eromheen en laat drogen. Voor demping, leg een 5mm dik spons en boor een gat. Je kunt het gat niet netjes openen, maar je kunt het verstoppen dus het is OK. Voltooi door de sensorbeugel en kabelbegeleiding met dubbelzijdige tape te bevestigen. Het kan makkelijker zijn als je een lijmpistool gebruikt.
Stap 8: Hi-Hat Controller
De Hi-Hat Controller stuurt het openen en sluiten van de hi-hat naar de Arduino. De schakeling is heel simpel. Het wordt gemaakt door drie onderdelen te combineren. Bevestig de FSR aan het onderdeel en fix de socket. De FSR kan gebruikt worden zelfs als er een gat in zit. Bevestig een 10mm spons aan de FSR zoals op de foto. Fix de deksel met M3-10mm bouten. Hoewel het alleen HIGH en LOW is, vraag je je misschien af waarom ik FSR gebruikte. Ik gebruik FSR om te corresponderen met geluidsmodules zoals Roland en Yamaha. En in drumspecifieke geluidsbronnen zoals EZ DRUMMER 2 zijn er verschillende stadia in de mate van openen van de hi-hat. Als het FSR is, kan het misschien reageren door alleen de code aan te passen. Ik heb het echter niet geprobeerd.
Stap 9: USB - MIDI
Wat kunnen we in deze stap doen? Met alleen een USB-kabel kun je MIDI-signaal van de Arduino sturen. Met andere woorden, laat de Arduino herkennen door iPhone etc. als een MIDI-apparaat zonder extra hardware. Allereerst, check deze pagina:
https://morecatlab.akiba.coocan.jp/lab/index.php/aruino/midi-firmware-for-arduino-uno-moco/
https://github.com/kuwatay/mocolufa
Als je een normale Arduino UNO direct met een iPhone verbindt, krijg je een foutmelding als "Arduino UNO is niet compatibel". Dus moet je de USB-chip (ATmega16U2) die in de Arduino UNO zit, herschrijven.
https://www.arduino.cc/en/Hacking/DFUProgramming8U2
Deze instructie laat zien hoe je het hex-bestand herschrijft. Volg deze site tot aan de onderstaande beschrijving:
sudo dfu-programmer atmega16u2 flash Arduino-usbserial-uno.hex
Vervang gewoon "Arduino-usbserial-uno.hex" door "dualMoco.hex". Dus:
sudo dfu-programmer atmega16u2 flash dualMoco.hex
Na herschrijven wordt je Arduino herkend als een MIDI-apparaat. Als je de pin kortsluit zoals op de foto, wordt het herkend als normale Arduino. Als niet (wanneer niet kortgesloten), wordt Arduino UNO herkend als een MIDI-apparaat. Met andere woorden, bij het schrijven van code met de Arduino IDE, moet je de pinnen kortsluiten zoals op de foto.
Stap 10: Trigger naar MIDI Converter
Er zit een Arduino UNO en shield in de doos. Verwijs naar de Fritzing-afbeelding voor de schakeling van de shield. Dioden zijn voor bescherming, maar ik zag informatie dat Arduino UNO een beschermingsschakeling heeft, dus diodes zijn misschien niet nodig. Weet iemand hier raad van? Na het printen van het model van de behuizing en het deksel, is het goed om de shield ervolgens te maken. Er is ook een 3D-model van het deksel, maar ik maakte een deksel met een lasersnijder. Kies wat je wilt.
Stap 11: Spelen met GarageBand
Start gewoon GarageBand en verbind. Er is geen moeilijke instelling. Er zijn een aantal DAW's voor PC's die met deze drumset gebruikt kunnen worden, waaronder GarageBand. Onder andere is Hydrogen gratis en je kunt geluiden toevoegen.
Stap 12: Instellen
Bij het maken van de code was het lastig om de code telkens te herschrijven als de waarde veranderde, dus ik wilde de waarde met alleen de Arduino kunnen veranderen. Met andere woorden, dit is gemaakt voor het debuggen van code, dus er zijn items die niet hoeven te worden veranderd. Toch is instellen nodig, afhankelijk van de grootte van de piezo, de grootte van de pad, de hardheid van het spons schuim.
Selecteer een instrument met de INC/DEC-knop en selecteer het instelitem met de NEXT/BACK-knop. Wanneer de EDIT-knop wordt ingedrukt terwijl het instrument en item dat je wilt instellen wordt weergegeven, kun je de waarde wijzigen met de INC/DEC-knop. Druk dan nogmaals op de EDIT-knop om de wijziging te bevestigen. Als je het laatste deel van de video bekijkt, begrijp je hoe je het bedient.
- THRESHOLD: De laagste waarde waarop geluid komt.
- SENSITIVITY: Sensorgevoeligheid. Als je het verlaagt, krijg je hoge velocity zelfs als je zacht slaat.
- NOTE: Notenummer. Door te veranderen, kun je instrumenten veranderen. Verwijs naar de afbeelding.
- FLAG: Een waarde om te bepalen dat het slaan voorbij is. Je hoeft het niet te veel te veranderen. Het zou fijn zijn om de waarde van 1 tot 10 in te stellen. Als je de waarde te hoog zet, krijg je twee keer geluid met één slag. Als je het te laag zet, kun je geluid missen bij herhaalde slagen.
- SCAN TIME: Bij het zoeken naar piekwaarden, worden waarden achtereenvolgens genomen gedurende enkele milliseconden na overschrijding van de drempel. De hoogste waarde daarbij is de piek. Deze paar milliseconden is SCANTIME. Er is geen behoefte om het te veranderen.
- HEAD / RIM: Stel de gemakkelijkheid van de rim in. Het verhogen maakt het moeilijker om te klinken. Als je het te laag zet, klinkt de rim als je de head slaat. Wat de beoordeling van head en rim betreft, kan het nodig zijn om de code te verbeteren.
- PEDAL VELO: In tegenstelling tot andere pads, is de velocity van de pedaal constant. De initiële waarde is 100. Verander naar je favoriete waarde.
- MASK TIME: Dit is een waarde gerelateerd aan FLAG. Er is geen behoefte om het te veranderen. Als je het verhoogt, hoor je misschien geen geluid bij continue slagen.
Stap 13: Fusion 360
Sommige onderdelen zijn misschien niet bruikbaar tenzij hun afmetingen worden gewijzigd. Het is moeilijk om STL-data te bewerken. Daarom heb ik Fusion 360-data geüpload. Omdat ik echter data bewerk tijdens uitproberen, is het beter niet te veel te vertrouwen op de geschiedenisfunctie.
https://github.com/RyoKosaka/drums/tree/master/Fusion360
EXTRA
Extra stappen staan op Instructables.
https://www.instructables.com/id/Arduino-Minimal-Drum-Kit/
En het gedetailleerde productieproces is gepubliceerd op deze blog. Check het als je geïnteresseerd bent. Voel je vrij om alles te vragen. Veel plezier!
Code
Hello Drum v2
Arduino
Gewijzigd: 05/12/2019 door George Brotherston
/* Drum MIDI Controller
Created: 28/06/2017 by Ryo Kosaka as " HELLO DRUM " Ver.1.0
Modified: 05/12/2019 by George Brotherston */
#include
#include
// Variabelen
boolean bSnareFlag = false;
boolean bHihatFlag = false;
boolean bKickFlag = false;
boolean bPedalFlag = false;
boolean bButtonState = true;
boolean bButtonState_set = true;
int iUPDOWN = 0;
int iNEXTBACK = 0;
// Arrays
int aSNARE[6] = {150, 950, 38, 3, 0, 0};
int aSNARE_RIM[6] = {5, 500, 37, 3, 0, 0};
int aHIHAT[6] = {100, 800, 46, 1, 0, 0};
int aHIHAT_CLOSE[6] = {100, 800, 42, 1, 0, 0};
int aKICK[6] = {200, 700, 36, 1, 0, 0};
int aHIHAT_PEDAL[4] = {600, 0, 44, 0};
int aSETTING[4] = {4, 500, 100, 1};
// LCD en MIDI
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
MIDI_CREATE_DEFAULT_INSTANCE();
void setup() {
MIDI.begin(10);
lcd.begin(16, 2);
lcd.print("INITIALIZING...");
lcd.setCursor(0, 1);
lcd.print("DRUM MIDI CONTROLLER");
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT_PULLUP);
}
void loop() {
// Knoppen en sensoren uitlezen
int iButton_set = digitalRead(6);
int iButton_up = digitalRead(7);
int iButton_down = digitalRead(8);
int iButton_next = digitalRead(9);
int iButton_back = digitalRead(10);
int iPiezoValue_A0 = analogRead(A0); // Snare Head
int iPiezoValue_A1 = analogRead(A1); // Snare Rim
int iPiezoValue_A2 = analogRead(A2); // Hi-hat
int iPiezoValue_A3 = analogRead(A3); // Kick Drum
int iFSRValue_A4 = analogRead(A4); // Hi-hat Pedal
// Edit-modus logica...
// (Volledige code beschikbaar in de GitHub-repository)
// Instrument sensoren verwerking
// Snare Drum
if (iPiezoValue_A0 > aSNARE[0] && bSnareFlag == false) {
// Piekaanpassing en MIDI versturen
}
// Hi-Hat Cymbal
if (iPiezoValue_A2 > aHIHAT[0] && bHihatFlag == false) {
// Piekaanpassing en MIDI versturen
}
// Hi-hat Pedal
if (iPiezoValue_A0 > aHIHAT_PEDAL[0] && bPedalFlag == false) {
// MIDI versturen
}
// Kick Drum
if (iPiezoValue_A3 > aKICK[0] && bKickFlag == false) {
// Piekaanpassing en MIDI versturen
}
// Flag reset logica...
}
Hello Drum
Schema's
circuit_nZotR7rJMM.fzz
Productieproces
- De Trom: Een Uitgebreide Gids voor Geschiedenis, Constructie en Vakmanschap
- Interactieve gyroscoop LED-display met NeoPixel-ring en Arduino
- DIY Wolk Kostuum: LED-strip, Arduino Nano & SparkFun Onderdelen
- Unopad: Naadloze Arduino MIDI-controller voor Ableton Live
- Een eenvoudige obstakelsensor bouwen met Arduino – IR LED & Fotodiodo Tutorial
- Spraakherkenning & Synthese Meesteren op Arduino Due
- Externe S-meter voor Icom-radios via CI-V en Arduino
- Shanghai Chirurgen Printen Maatwerk Titanium Botimplantaten voor Kankerpatiënt
- GrabCAD Print verbinden met je Stratasys 3D-printer — stapsgewijze handleiding
- Boven prototypes heen: Real-world innovaties gemaakt met 3D-printen
- MAXREFDES220# – Cuffless bloeddrukmonitoring met optische sensoren