Innehållsförteckning:

Ytterligare en MIDI till CV -låda: 7 steg (med bilder)
Ytterligare en MIDI till CV -låda: 7 steg (med bilder)

Video: Ytterligare en MIDI till CV -låda: 7 steg (med bilder)

Video: Ytterligare en MIDI till CV -låda: 7 steg (med bilder)
Video: 7 HUVUDREGLER för att montera en tårta i flera nivåer! 2024, Juli
Anonim
En annan MIDI till CV Box
En annan MIDI till CV Box

En annan MIDI till CV -låda är ett projekt jag utvecklade när en Korg MS10 knackade på min dörr och ägde rum i min studio. Eftersom min inställning starkt relaterar till MIDI för att automatisera och synkronisera alla instrument, när jag köpte MS10 var det första problemet jag måste möta hur jag skulle genomföra sådan kontroll.

Korg MS20/10 är inte de enklaste syntharna att implementera MIDI för att: först och främst förlita sig på Hz/V -kontroll (linjär korrelation mellan styrspänningen och notfrekvensen), istället för okt/V (1V per oktav); för det andra, för att trigga en anteckning måste du skicka en negativ grindsignal och korta ingången till jord (S-Trig), inte en +5 V-signal (V-trig).

Det finns olika kommersiella lösningar för att styra sådana instrument nuförtiden (dvs Arturia Beatstep Pro, Korg SQ-1, Kenton Solo) men jag är en billig jävel och till och med 100 euro är för mycket för en "inte-ljudande" enhet:).

Här är vi då: låt mig visa dig hur du bygger en låg budget MIDI till CV-box för att styra/automatisera en pre-MIDI-synths tonhöjd, grind, hastighet och avstängningsfrekvens med en extern MIDI-kontroller (tangentbord, DAW, sequencer eller vad som helst).

"Vad sägs om nya MS20 mini?"

Som nästan alla vet är nya MS20 faktiskt MIDI -redo: IN med en 5 -polig MIDI -kontakt och IN/OUT med USB -kontakt.

"Så om jag har en MS20 mini är det här värdelöst!"

Tja, nej. MS20 mini känner bara igen meddelanden på/av -meddelanden och tangentbordet är inte hastighetskänsligt. Det går inte att övervinna detta med MS10/20 vintage- eller minitangentbordet, men med midi -box och ett hastighetskänsligt tangentbord är du gyllene. Dessutom kan du med MIDI -boxen automatisera filteravstängning (eller någon annan spänningsstyrbar parameter) eller få den modulerad av den inkommande MIDI -noten om hastighet. Återigen, den enda MIDI -kanalen MS20 mini svarar på är kanal 1. Med den här rutan kan du också övervinna denna gräns.

"Tänk om jag har en Oct/V -synth?"

Inga problem! Koden jag skrev är kompatibel med Oct/V-synthesizers (otestat, men jag är säker på att det kommer att fungera out-of-the-box;)).

Steg 1: !! Obs! Varning - Ansvarsfriskrivning !

Din utrustning är mycket värdefull och bör inte användas för att utföra tester.

Att leka med el kan allvarligt skada din utrustning eller skada dig själv.

Jag kan inte hållas ansvarig för skador på din utrustning/hårdvara eller till och med dig själv som kommer från någon av programvarorna eller programmen eller information eller länkar som jag rapporterade i den här instruktionsboken.

Du har blivit varnad!

Steg 2: Konstruera hårdvaran

Arduino är praktiskt när det gäller sådana här projekt. Förekomsten av en stor gemenskap och mycket bra bibliotek som spänner över nästan alla vanliga uppgifter gör det till rätt val. Här kommer kortet att programmeras så att det kommer att läsa inkommande MIDI -data och sedan skicka lämpliga spänningar för att driva:

- Pitch, genom att konvertera en pwm -utgång till en analog spänning för att driva VCO via en digital till analog omvandlare (DAC)

- Hastighet, genom att filtrera en pwm -utgång för att driva VCA med ett enkelt RC -filter

- Filter Cutoff Frequency, genom att filtrera en pwm -utgång för att driva VCF med ett enkelt RC -filter

- Gate, direkt från en digital utgång vid V-trig (sätt en 1Kohm i serie med utgången för att minska strömavloppet) eller med en enkel pnp-transistorbrytare ur den digitala utgången (se schematisk bifogad schematisk steg).

Arduino kan inte mata ut direkt stabila spänningar, men 0/+5 V -pulser med olika perioder (PWM). Vi är i behov av digital till analog omvandlare (DAC) för pourpouse. RC -filter är den enklaste DAC jag kan tänka mig. Ett RC -filter är bra nog för den spänningsstyrda förstärkaren och filtret (VCA och VCF). RC -filtren är skräddarsydda för att resultera i en gränsfrekvens <20Hz (lägsta hörbara frekvens).

Jag gjorde ett test med icke -polariserade kondensatorer med låg kapacitet och jag slutade med ett kapacitetsvärde på 0.1uF för att passa bäst. Testade bra på en MS20 MKII.

Tyvärr kan vi inte lita på ett RC -filter för att driva den spänningsstyrda oscillatorn (VCO) eftersom det inte skulle vara korrekt nog (i Hz/V -skala, i nedre änden skiljer sig två adiacend -halvtoner mindre än 0,02V; i V /okt två adiacenta halvtoner skiljer sig åt för 0,083 V); vi kommer att använda en IC DAC (MPC4725) för detta.

Kända gränser

Genom att begränsa drivspänningen till 5V (Arduino -utspänningen) täcks hela 0 till 5V -området för hastighet; avstängningen är halvtäckt (-5V till +5V); VCO -området är delvis täckt eftersom det i Hz/V skulle krävas en spänning på 8 V för att nå 440 Hz A4. Med en utgångsgräns på 5V kan vi ställa oscillatorn upp till D4 -frekvensen i Hz/V.

Steg 3: Komponentlista

Komponentlista
Komponentlista
Komponentlista
Komponentlista
Komponentlista
Komponentlista

Du behöver:

1X Arduino UNO (eller nano)

1X MPC4725 DAC -kort

4X 1/8 "eller 1/4" monokontakter

1X MIDI -kontakt

1X 6N138 optokopplare

1X 1N4148 diod

1X 220 ohm 1/4 W motstånd

1X 470 ohm 1/4 W motstånd

1X 10K ohm 1/4 W motstånd

4X 1K ohm 1/4 W motstånd

2X 0,1 uF kondensator

1X BC547 pnp-transistor (vid S-trig)

1X ABS -låda (minst 55 x 70 x 100 mm)

… och uppenbarligen brödbräda eller perfboard, lödjärn, lödtråd och kablar (2 meter 28 AWG borde räcka).

Lägg märke till att på bilderna ovan monterar min prototyp 100 uF elektrolitlock, men de är för långsamma på grund av kapacitetsladdningstiden. En kapacitans på 0.1uF är det rätta valet.

Jag använde en extra kontakt för att leverera ström till min arduino; det är inte nödvändigt att kunna dricka mikrokontrollern direkt via den inbyggda mini -USB -kontakten.

Steg 4: Anslutningar/scheman

Anslutningar/scheman
Anslutningar/scheman
Anslutningar/scheman
Anslutningar/scheman
Anslutningar/scheman
Anslutningar/scheman

MIDI IN

MIDI IN -kretsen är enkel och väl beskriven på nätet. Ta DENNA utmärkta instruerbara om MIDI och Arduino av Amanda Gassaei, till exempel. Jag gjorde den n: a schematiska i frågan i alla fall.

Lägg märke till att jag lade till en switch i MIDI IN -schemat (switch 1): detta är nödvändigt när du laddar upp en ny skiss till Arduino eftersom opton stör RX -linjen även utan inkommande midi -meddelanden. Du måste öppna omkopplaren innan du laddar upp din skiss annars kan IDE inte ladda upp den nya skissen.

Du kan så småningom ändra skissen för att använda en seriell mjukvarukommunikation.

DAC, RC -filter, synthesizer

Anslutning för DAC, RC -filter och Synth (tonhöjd, grind och hastighet) visas i diagrammet ovanpå. Jag tog för referens en Korg MS20 patchpanel, men jag testade allt på en MS10 också. Den direkta anslutningen av hastighet CV till VCA "initial gain" patchpunkt har ingen effekt (jag måste gräva den här saken ytterligare) men om du ansluter den till "Total" patchpunkten och ökar dina totala externa krukor (MG/T. EXT), kommer du att höra fina tonvariationer som en funktion av tonhastigheten.

Mina scheman (och min prototyp också) använder inte ett strömbegränsande motstånd vid DAC -utgången, men det är alltid en bra idé att placera en för att säkerställa lång livslängd till dina kretsar. Ett 220 ohm motstånd kommer att räcka.

Lägg märke till att i schemat över 100 uF elektrolitkapslar rapporteras, men de är för långsamma på grund av kapacitetsladdningstiden. Icke polariserade 0.1uF -lock är det rätta valet.

Grinden ut

Om du ska sekvensera en synth som är kompatibel med V-Trig (spänningsutlösare) signaler, räcker det med ett 1k ohm seriemotstånd för att minska strömavloppet; i fallet med en S-Trig (switch trigger) synth kan du använda en enkel PNP-switchkrets (se bifogat schema).

Steg 5: Programvaran

Mjukvaran
Mjukvaran

Jag försökte hålla skissen så tydlig och "läsbar" som möjligt.

Jag arbetade på ett enkelt kalkylblad som jag hittade HÄR för att härleda en spänning mot not# -kurva och direkt använda ekvationen i mikrokontrollen. Ekvationen visas i grafen ovanpå. Jag använde C2 som referensnotering för att få en Arp/Korg -kompatibel spänning Vs notrelation (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V och så vidare).

Jag var tvungen att definiera en variabel att leka med för att få en bra inställning … ta dig tid att hitta rätt värden. En tuner är nödvändig.

Vi kommer att öka pwm -frekvensen för en timer/räknare för att minska utspänningens krusning (lika lätt som en kodrad).

För att koden ska reagera på inkommande byte är koden starkt beroende av återuppringning av funktioner.

Du behöver Sparkfun "Adafruit_MCP4725.h" och Forty Seven Effects/Francois Bests "MIDI.h" -bibliotek att sammanställa! (Stort tack till dessa personer: utan deras ansträngningar skulle detta projekt aldrig förverkligas!).

Jag antar att du har Arduino IDE redo i din dator och du vet hur du laddar en skiss till ditt Arduino -kort.

Jag är inte en kodare i verkliga livet, så det är mycket troligt att skissen kan skrivas på ett bättre sätt. Jag är öppen för förslag (jag lär mig alltid något när jag tittar på kodarens kod;))

Ytterligare anteckningar skrivs i koden nedan. Installera de två biblioteken, öppna den bifogade koden på din IDE, anslut ditt kort, välj typ av kort och ladda upp.

Steg 6: Felsökning

Även om projektet är på låg nivå finns det massor av saker som kan gå fel. Följ dessa steg om du upplever problem när du försöker skapa din egen MIDI till CV -låda:

1. Se till att Arduino tar emot MIDI -meddelanden korrekt

Kontrollera utgångskanalen som ditt tangentbord eller DAW eller Sequencer matar ut MIDI -meddelanden till. Arduino lyssnar på kanal 1 som standard. Ladda upp "TEST_MIDI_IN.ino" för att läsa ett inkommande noteON -meddelande.

2. Dubbelkolla dina kablar

… eller ännu bättre: trippelkolla dem! Behåll din tid för detta.

3. Kontrollera DAC -adressen och utdata

DAC: n kan ställas in för att ta emot data på en annan adress än den jag ställde in i skissen. Kontrollera adressen genom att köra "I2C_scanner.ino". Om ett felmeddelande "ingen enhet hittades" inträffar, kontrollera dina DAC -kablar (SDA- och SCL -ingångar är olika på olika Arduino -kort!). Om du har ett oscillokop (även dessa 15 euro digitala oscilloskop är bra nog … och roligt att leka med!) Kan du kontrollera utmatningen från din DAC genom att ladda upp triangelvåggeneratorexemplet som ingår i DAC -biblioteksinstallationen.

Kom ihåg att när en optokopplare är ansluten till RX -ingången på ditt arduino -kort kommer du inte att kunna ladda upp en ny skiss !! Placera en omkopplare (det kan vara en enkel bygel) före RX -stiftet.

De flesta av dessa testskisser är inte mina eller åtminstone baserade på befintligt onlinematerial.

Det här låter orimligt för mig !?

Detta är inte ett verkligt problem: ekvationen som härleds för Hz/V -kontroll är "idealisk". En del drift från det perfekta beteendet kan stiga från +5V du levererar, inte 5.000V, från DAC och från själva instrumentet. För att lösa måste du agera på din synthtune/finjusterade potentiometer och "voilà" en perfekt inställd MIDI -kontroll;)

Steg 7: Användbara länkar

en.wikipedia.org/wiki/CV/gate

www.instructables.com/id/Send-and-Receive-…

www.songstuff.com/recording/article/midi_me…

pages.mtu.edu/~suits/NoteFreqCalcs.html

espace-lab.org/activites/projets/en-arduin…

learn.sparkfun.com/tutorials/midi-shield-h…

provideyourown.com/2011/analogwrite-conver…

www.midi.org/specifications/item/table-3-c…

arduino-info.wikispaces.com/Arduino-PWM-Fr…

sim.okawa-denshi.jp/en/PWMtool.php

Rekommenderad: