Indholdsfortegnelse:

En anden MIDI til CV -boks: 7 trin (med billeder)
En anden MIDI til CV -boks: 7 trin (med billeder)

Video: En anden MIDI til CV -boks: 7 trin (med billeder)

Video: En anden MIDI til CV -boks: 7 trin (med billeder)
Video: Семейный альбом | 1-7 серии | Русский сериал 2024, Juli
Anonim
Endnu en MIDI til CV Box
Endnu en MIDI til CV Box

En anden MIDI til CV -boks er et projekt, jeg udviklede, da en Korg MS10 bankede på min dør og fandt sted i mit studie. Da mit setup i høj grad relaterer sig til MIDI til at automatisere og synkronisere alle instrumenterne, da jeg købte MS10, var det første problem, jeg måtte stå over for, hvordan man implementerede en sådan kontrol.

Korg MS20/10 er ikke de letteste synths til at implementere MIDI til: Først og fremmest er de afhængige af Hz/V -kontrol (lineær korrelation mellem styrespændingen og notefrekvensen), i stedet for oct/V (1V pr. Oktav); for det andet, for at udløse en note, skal du sende et negativt gate-signal og kortslutte input til jorden (S-Trig), ikke et +5 V-signal (V-trig).

Der er forskellige kommercielle løsninger til styring af sådanne instrumenter i dag (dvs. Arturia Beatstep Pro, Korg SQ-1, Kenton Solo), men jeg er en billig bastard og endda 100 euro er for meget for en "ikke-lydende" enhed:).

Her er vi så: lad mig vise dig, hvordan du opbygger et lavt budget MIDI til CV-felt for at styre/automatisere en pre-MIDI synths tonehøjde, gate, hastighed og afbrydelsesfrekvens med en ekstern MIDI-controller (tastatur, DAW, sequencer eller hvad som helst).

"Hvad med den nye MS20 mini?"

Som næsten alle ved, er den nye MS20 faktisk MIDI -klar: IN med et 5 -polet MIDI -stik og IN/OUT med USB -stik.

"Så hvis jeg har en MS20 mini, er denne ting ubrugelig!"

Altså nej. MS20 mini genkender kun note on/off -meddelelser, og tastaturet er ikke hastighedsfølsomt. Der er ingen måde at overvinde dette med MS10/20 vintage eller mini -tastaturet, men med midi -boks og et hastighedsfølsomt tastatur er du gylden. Derudover kan du med MIDI -boksen automatisere filterafbrydelse (eller enhver anden spændingsstyrbar parameter) eller få den moduleret af den indgående MIDI -note om hastighed. Igen, den eneste MIDI -kanal, MS20 mini reagerer på, er kanal 1. Med denne boks kan du også overvinde denne grænse.

"Hvad hvis jeg har en Oct/V synth?"

Intet problem! Koden, jeg skrev, er kompatibel med Oct/V-synthesizere (ikke testet, men jeg er overbevist om, at det vil fungere uden for kassen;)).

Trin 1: !! Bemærk med forsigtighed - ansvarsfraskrivelse

Dit udstyr er meget værdifuldt og bør ikke bruges til at udføre test.

Leg med elektricitet kan skade dit udstyr alvorligt eller skade dig selv.

Jeg kan ikke holdes ansvarlig for skader på dit udstyr/hardware eller endda dig selv, der kommer fra software eller programmer eller oplysninger eller links, som jeg rapporterede i denne instruks.

Du er blevet advaret!

Trin 2: Konstruer hardware

Arduino er praktisk, når du håndterer projekter som dette. Eksistensen af et stort fællesskab og meget gode biblioteker, der spænder over næsten alle fælles opgaver, gør det til det rigtige valg. Her vil kortet blive programmeret således, at det vil læse indgående MIDI -data og derefter sende passende spændinger til at køre:

- Pitch, ved at konvertere en pwm output til en analog spænding for at drive VCO via en digital til analog converter (DAC)

- Hastighed ved at filtrere en pwm -udgang for at drive VCA'en med et simpelt RC -filter

- Filter cutoff frekvens, ved at filtrere en pwm output for at drive VCF med et simpelt RC filter

- Port, direkte fra en digital udgang i tilfælde af V-trig (sæt en 1Kohm i serie med udgangen for at reducere det aktuelle afløb) eller ved en simpel pnp-transistorafbryder ud af den digitale udgang (se skematisk vedlagt skematisk trin).

Arduino er ikke i stand til at udsende direkte stabile spændinger, men 0/+5 V pulser med forskellige perioder (PWM). Vi har brug for digitale til analoge omformere (DAC) til pourpouse. RC -filtre er den letteste DAC, jeg kan tænke på. Et RC -filter er godt nok til den spændingsstyrede forstærker og filter (VCA og VCF). RC -filtrene er skræddersyet til at resultere i en afbrydelsesfrekvens <20Hz (laveste hørbare frekvens).

Jeg lavede en test med ikke -polariserede kondensatorer med lav kapacitet, og jeg sluttede med en kapacitetsværdi på 0.1uF for at være den bedste pasform. Testet godt på en MS20 MKII.

Desværre kan vi ikke stole på et RC -filter til at drive den spændingsstyrede oscillator (VCO), da det ikke ville være nøjagtigt nok (i Hz/V -skala, i den nedre ende er to adiacend -halvtoner forskellige for mindre end 0,02V; i V /okt. to adiacente halvtoner adskiller sig for 0,083 V); vi kommer til at bruge en IC DAC (MPC4725) til dette.

Kendte grænser

Ved at begrænse drevspændingen til 5V (Arduino -udgangsspændingen) dækkes hele 0 til 5V -området for hastighed; afskærmningen er halvt dækket (-5V til +5V); VCO -området er delvist dækket, idet der i Hz/V kræves en spænding på 8 V for at nå 440 Hz A4. Med en udgangsgrænse på 5V kan vi stille oscillatoren op til D4 -frekvensen i Hz/V.

Trin 3: Komponentliste

Komponentliste
Komponentliste
Komponentliste
Komponentliste
Komponentliste
Komponentliste

Du har brug for:

1X Arduino UNO (eller nano)

1X MPC4725 DAC -kort

4X 1/8 "eller 1/4" mono stik

1X MIDI -stik

1X 6N138 optokobler

1X 1N4148 diode

1X 220 ohm 1/4 W modstand

1X 470 ohm 1/4 W modstand

1X 10K ohm 1/4 W modstand

4X 1K ohm 1/4 W modstand

2X 0,1 uF kondensator

1X BC547 pnp transistor (i tilfælde af S-trig)

1X ABS -kasse (mindst 55 x 70 x 100 mm)

… og naturligvis brødbræt eller perfboard, loddejern, loddetråd og kabler (2 meter 28 AWG bør være nok).

Bemærk, at på billederne ovenfor monterer min prototype 100 uF elektrolithætter, men de er for langsomme på grund af kapacitetsopladningstiden. En kapacitans på 0.1uF er det rigtige valg.

Jeg brugte et ekstra stik til at levere strøm til min arduino; det er ikke nødvendigt at være i stand til at juice mikrokontrolleren direkte via det indbyggede mini USB -stik.

Trin 4: Forbindelser/skemaer

Forbindelser/skemaer
Forbindelser/skemaer
Forbindelser/skemaer
Forbindelser/skemaer
Forbindelser/skemaer
Forbindelser/skemaer

MIDI IN

MIDI IN kredsløbet er enkelt og godt beskrevet på nettet. Tag DENNE fremragende instruerbare om MIDI og Arduino af Amanda Gassaei, for eksempel. Jeg lavede alligevel den nte skematisk om sagen.

Bemærk, at jeg tilføjede en switch i MIDI IN -skemaet (switch 1): dette er nødvendigt, når du uploader en ny skitse til Arduino, fordi optoen forstyrrer RX -linjen, selv uden indgående midi -meddelelser. Du skal åbne kontakten, før du uploader din skitse, ellers vil IDE ikke uploade den nye skitse.

Du kan til sidst ændre skitsen for at bruge en seriel softwarekommunikation.

DAC, RC -filter, synthesizer

Tilslutning til DAC, RC filtre og Synth (pitch, gate og hastighed) er vist i diagrammet øverst. Jeg tog til reference et Korg MS20 patchpanel, men jeg testede også alt på en MS10. Den direkte forbindelse af hastigheds -CV'et til VCA "initial gain" patch -punkt har ingen effekt (jeg skal grave denne ting yderligere), men hvis du forbinder den med "Total" patch -punktet og stiger dine samlede eksterne potter (MG/T. EXT), vil du høre flotte tonevariationer som en funktion af notens hastighed.

Mine skemaer (og også min prototype) bruger ikke en strømbegrænsende modstand ved DAC -udgangen, men det er altid en god idé at placere en for at sikre lang levetid for dine kredsløb. En 220 ohm modstand vil være nok.

Bemærk, at der i skemaerne er rapporteret over 100 uF elektrolithætter, men de er for langsomme på grund af kapacitetsopladningstiden. Ikke -polariserede 0.1uF hætter er det rigtige valg.

Port ud

Hvis du vil sekvensere en synth, der er kompatibel med V-Trig (spændingsudløser) signaler, vil en 1k ohm seriemodstand være tilstrækkelig; i tilfælde af en S-Trig (switch trigger) synth, kan du bruge et simpelt PNP switch kredsløb (se vedhæftede skema).

Trin 5: Softwaren

Softwaren
Softwaren

Jeg forsøgte at holde skitsen så klar og "læsbar" som muligt.

Jeg arbejdede på et simpelt kalkblad, jeg fandt HER for at udlede en Voltage Vs Note# -kurve og bruge ligningen direkte i mikrokontrolleren. Ligningen er vist i grafen øverst. Jeg brugte C2 som reference note for at opnå en Arp/Korg -kompatibel spænding Vs note relation (C0 - 0.25V, C1 - 0.5V, C2 - 1V, C3 - 2V, C4 - 4V, C5 - 8V og så videre).

Jeg var nødt til at definere en variabel at lege med for at få en god tuning … tag dig tid til at finde de korrekte værdier. En tuner er nødvendig.

Vi vil øge pwm -frekvensen for en timer/tæller for at reducere udgangsspændinger (så let som en kodelinje).

For at holde koden lydhør over for indgående bytes, er koden stærkt afhængig af tilbagekald fra funktioner.

Du har brug for Sparkfun's "Adafruit_MCP4725.h" og fyrre syv effekter/Francois Bests "MIDI.h" biblioteker til at kompilere! (Mange tak til disse personer: uden deres indsats ville dette projekt aldrig blive realiseret!).

Jeg antager, at du har Arduino IDE klar i din pc, og du ved, hvordan du indlæser en skitse til dit Arduino -kort.

Jeg er ikke en koder i det virkelige liv, så det er meget sandsynligt, at skitsen kunne skrives på en bedre måde. Jeg er åben for forslag (jeg lærer altid noget at se på koders kode;))

Yderligere noter er skrevet i nedenstående kode. Installer de to biblioteker, åbn den vedhæftede kode på din IDE, tilslut dit kort, vælg korttypen og upload.

Trin 6: Fejlfinding

Selvom projektet er lavt, er der masser af ting, der kan gå galt. Hvis du oplever problemer, mens du forsøger at oprette din egen MIDI til CV -boks, skal du følge disse trin:

1. Sørg for, at Arduino korrekt modtager MIDI -meddelelser

Kontroller outputkanalen, dit tastatur eller DAW eller Sequencer udsender MIDI -meddelelser til. Arduino lytter som standard til kanal 1. Upload "TEST_MIDI_IN.ino" for at læse en indgående noteON -besked.

2. Dobbelttjek dine ledninger

… eller endnu bedre: tredobbelt tjek dem! Hold din tid til dette.

3. Kontroller DAC -adressen og output

DAC'en kunne indstilles til at modtage data på en anden adresse end den, jeg angav i skitsen. Kontroller adressen ved at køre "I2C_scanner.ino". Hvis der opstår en fejl "ingen enhed fundet", skal du kontrollere dine DAC -ledninger (SDA- og SCL -indgange er forskellige på forskellige Arduino -kort!). Hvis du har et oscillokop (selv de 15 euro digitale oscilloskoper er gode nok … og sjovt at lege med!) Kan du kontrollere output fra din DAC ved at uploade eksemplet på trekantbølgeneratoren, der fulgte med installationen af DAC -biblioteket.

Husk, at når en optokobler er forbundet til RX -indgangen på dit arduino -kort, vil du ikke kunne uploade en ny skitse !! Placer en kontakt (det kan være en simpel jumper) før RX -stiften.

De fleste af disse testskitser er ikke mine eller i det mindste baseret på eksisterende online materiale.

Det her lyder for mig ikke i orden !?

Dette er ikke et reelt problem: ligningen afledt for Hz/V -kontrol er "ideel". Nogle afvigelser fra den ideelle adfærd kan stige fra +5V, du leverer, ikke 5.000V, fra DAC og fra selve instrumentet. For at løse skal du handle på dit synthtune/fine tune -potentiometer og "voilà" en perfekt afstemt MIDI -kontrol;)

Trin 7: Nyttige links

da.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

Anbefalede: