Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

Custom Arduino MIDI Arpeggiator – Modulaire Firmware & Euclidische Ritmes

Onderdelen en Benodigdheden

Onderdeel Aantal
Arduino Nano R3 1
Draaipotentiometer (standaard) 7
SparkFun Drukknop 12mm 7
MIDI poort 1
Weerstand 221 ohm 4
LED (standaard) 2

Over dit Project

Update 11-03-2019

Hallo, ik heb een nieuwe firmware voor de arpeggiator gemaakt, de broncode is volledig herschreven. De modulaire structuur laat je de arpeggio's op verschillende platforms draaien, niet alleen Arduino. Ook zijn er nieuwe interessante functies toegevoegd zoals Euclidische ritmes. Ik kom later met een gedetailleerde beschrijving terug!

https://github.com/raszhivin/arpeggio2

De hardware blijft vergelijkbaar, de nieuwe bronnen zijn compatibel met het Fritzing schema hieronder.

Update 25-06-2019

Nieuwe hardware is door mij gebouwd, check de nieuwe video.

Inleiding

Electronische muziek is mijn hobby en ik heb veel plezier met mijn Korg Volca Keys. Enkele tijd geleden kwam ik de webapplicatie "Chord Progression Arpeggiator" tegen en was onder de indruk van de kracht en eenvoud van de muzikale algoritme. Besteed een paar minuten aan de app, en je zou begrijpen waarom ik zo geïnspireerd was door het idee om arpeggio's te genereren op mijn Korg. De video "Korg Volca Keys beautiful arps! (and 128-note sequence)" toont handmatig ingevoerde arpeggio noten, maar dat is te ingewikkeld en onflexibel om alle noten met de hand in te voeren.

Omdat ik softwareontwikkelaar ben, besloot ik een Arduino-gebaseerd apparaat te maken dat arpeggio's genereert in de vorm van MIDI-berichten en deze verstuurt via een DIN (MIDI) poort. De arpeggiator kan samen met andere hardware of software synthesizers gebruikt worden, maar ik heb er geen andere.

Custom Arduino MIDI Arpeggiator – Modulaire Firmware & Euclidische Ritmes

Basale Muziektheorie

(De onderstaande tekst is overgenomen van Reddit, veel dank aan gebruiker kmmeerts)

Er is een heel spectrum van geluiden. Het blijkt dat elk van die geluiden een fundamentele frequentie heeft, hoe snel de lucht trilt. Een lagere frequentie klinkt lager, en een hogere frequentie waarnemen we als een hogere toon. Twee verschillende instrumenten die dezelfde noot spelen kunnen heel anders klinken, maar ze klinken voor ons nog steeds als dezelfde noot. Dit verschil heet timbre, en het is hoe je kunt onderscheiden tussen een fluit en een cello die dezelfde noot spelen. Dit stelt heel verschillende instrumenten in staat om harmonieuze samen te spelen.

Op het hoogste niveau is dit spectrum verdeeld in octaven. Een octaaf is een interval tussen een noot en een andere met dubbele frequentie. Dit is de meest basale onderverdeling in muziek. Noten die een aantal octaven verschillen (d.w.z. waar de frequenties gerelateerd zijn aan elkaar door een macht van twee) krijgen dezelfde naam: een piano en een viool kunnen allebei een C spelen, maar een veel lager. Waarom doen we dit? Omdat ze harmonieuze samen klinken, zelfs de meest toondoofste persoon kan dat horen.

De octaaf zelf is onderverdeeld in 12 noten, die we hebben genoemd:

[A, A#, B, C, C#, D, D#, E, F, F#, G, G#]

Dit zijn de meest basale noten in westerse muziek, en ze corresponderen met de witte en zwarte toetsen op het piano. Je kunt zien dat na elke 12 toetsen, het patroon herhaalt. Waarom 12? Het is gecompliceerd en heeft een lange geschiedenis, maar de kern is dat het het beste klinkt. De meest bevredigende intervallen worden goed vertegenwoordigd door het 12-toetsen systeem, op een manier die ze niet zouden met meer of minder toetsen (hoewel mensen het wel proberen).

Vanuit deze 12 noten worden schalen gevormd. Een schaal is een verzameling noten die, nou ja..., goed samen klinken. Mijn arpeggiator heeft alleen heptatonische diatonische schalen, modi genoemd. Heptatonisch betekent dat elke schaal 7 noten heeft, en praktisch alle westerse muziek is hierop gebouwd. Diatonisch is gerelateerd aan de volgorde van de intervallen tussen noten. Bijvoorbeeld, de C majeur schaal is gewoon de noten zonder kruisjes beginnend bij C: [C D E F G A B]. Elke schaal ontstaat uit een grondtoon. Er is ook een majeur schaal geworteld in D: [D E F# G A B C#]. De schalen worden gedefinieerd door patronen van welke noten over te slaan. De majeur schaal is [W W H W W W H], waar W betekent "neem een noot en sla er een over" en H betekent "neem een noot". De andere modi hebben andere patronen van nemen en overslaan.

Voor elk van die zeven noten is er een boel akkoorden. De hier gebruikte akkoorden zijn simpel: beginnend bij een noot, neem drie noten, elke keer één overgeslagen in de schaal die we gebruiken. In onze simpele C majeur schaal (CDEFGAB), zou het V akkoord (V = vijf, dus op de vijfde noot) G zijn (sla A over) B (lus terug, sla C over) D, dus GBD. Dit patroon kan herhaald worden, een octaaf hoger (6 noten: GBDGBD). Een arpeggio (Italiaans voor 'gebroken') is simpelweg die noten één voor één spelen, in plaats van allemaal tegelijk.

Wat een lied definieert is voornamelijk de akkoordvoortgang. De componist kiest een modus, kiest een grondtoon, en kiest dan 8 (of meer of minder) akkoorden uit de toonsoort gedefinieerd door die grondtoon. Er zijn regels voor welke akkoorden te kiezen, maar het blijft een kunst. In een echt lied wordt op deze akkoordvoortgang de rest gebouwd, er kunnen allemaal afwijkingen zijn van deze structuur, alle soorten ornamenten, maar vaak kun je de akkoorden in die volgorde nog herkennen.

Schema's

Het schema van mijn arpeggiator is vrij simpel, het bestaat uit 7 potentiometers, 7 knoppen, MIDI poort, 2 LEDs en 4 weerstanden. Het kan gemakkelijk op een breadboard worden gemonteerd zoals hieronder getoond, maar als je nieuw bent in de Arduino wereld, is het beter om te beginnen met de volgende tutorials:

Custom Arduino MIDI Arpeggiator – Modulaire Firmware & Euclidische Ritmes

Bediening

Potentiometers:

  • Octaaf van de tonica noot (0..7)
  • Octaaf van het akkoord (0..7)
  • Vertraging tussen de noten in de voortgang (beats per minuut)
  • Tonica / grondtoon (C...B)
  • Arpeggio Stappen (1...5)
  • Muziek modus (Ionisch, Dorisch...)
  • Arpeggio stijl (Oplopend, Aflopend, Oplopend+Aflopend, Willekeurig)

Knoppen: door op een knop te drukken wordt de corresponderende akkoordvoortgang gespeeld.

Demonstratie

In de eerste video beschrijf ik de functionaliteit van het apparaat en de bediening:

De tweede video toont een kleine jam met de arpeggiator:

Synchronisatie

Je kunt de tempo van de arpeggio's synchroniseren met de Korg Volca: verbind de audio jack van de arpeggiator met de "SYNC OUT" van de synthesizer. Zorg dat je de broncode correct configureert in arpeggiator.ino:

// Synchronisatie: kies een van de twee opties:
#define EXT_SYNC
//#define INT_SYNC

Uncomment EXT_SYNC voor synchronisatie via SYNC IN, of INT_SYNC voor tempocontrole via potentiometer.

Ik waardeer elke feedback en commentaar, als je een idee hebt om het apparaat te verbeteren - laat dan een reactie achter.

Veel plezier en succes!

Code

Broncode

https://github.com/raszhivin/arpeggiator

Schema's

Voor Fritzing: arpeggiator_LICtzK2a2Q.fzz

Productieproces

  1. Arduino Digitale Dobbelsteen: Bouw Je Eigen LCD-willekeurige Getalgenerator
  2. Unopad: Naadloze Arduino MIDI-controller voor Ableton Live
  3. Een Arduino Iron Man bouwen: onderdelen, sensoren en stapsgewijze handleiding
  4. Find Me: Slimme Item Locator met Arduino en Bluetooth
  5. USB-BLE Draadloze MIDI Adapters – Naadloze Connectiviteit voor Musici
  6. Bouw een Functionele, Arduino-aangedreven 3D-geprinte Robotarm – Stap-voor-Stap Handleiding
  7. DIY Arduino Luchtbevochtiger Controller met Relais – Veilige Hoogspanningsopstelling
  8. Contactloze temperatuurgate voor snelle, accurate screening
  9. NeoPixel Matrix Pong op Arduino Nano: Bouw je eigen neon Pong-spel
  10. Bouw een Aangepaste Arduino Joystick Stuurwiel voor Gaming
  11. Bouw een krachtige FM-radio ontvanger met Arduino en TEA5767 module