Att lägga till MIDI till gamla hem organ (7 / 9 steg)

Steg 7: Hur det fungerar



Hur mikrokontroller konverterar informationen från SKIFT register till MIDI-noter?
Som beskrivits tidigare (i skift-i-midi-description.rtf, tillgänglig på GitHub), orsakar mikrokontroller SKIFT register till spärren data på varje ingång och sedan skiftar alla 64 bitar av data ur registren. Här är processen för att konvertera SKIFT register data i Anteckningar:

Obs: denna process körs kontinuerligt i en loop, tusentals gånger per sekund

1. SKIFT register är låst, läsa 61inputs alla på en gång.

Obs: logik gates behöver alltid en referens för hög eller låg. Oftast är det bäst att ge en hänvisning till "hög". Detta var nödvändigt för tidig integrerade kretsar kallas "emitter tillsammans logik" eller "TTL". Det var mycket mindre slösaktig av makt att dra in högt på dessa marker än att försöka dra dem låg. När vi säger "pull" menar vi att ansluta en PIN-kod till en strömkälla eller sjunka via ett motstånd. Typiskt 10K Ohm används. Så, i vårt fall, varje indata kräver en anslutning till matningsspänningen (5 V) via en 10K motstånd. Detta är en hel del motstånd, men lyckligtvis resistorer är mycket billigt. Så, när vi spärren i ingångarna, om ingen knapp trycks en "hög" logik stat kommer att läsa. Vi ansluter den delade bussen till marken (faktiskt en pin på mikrokontroller som att vara en låg utgång, som fungerar som ett nuvarande handfat). Om en tangenttryckning, drar det"" ingångsstift SKIFT register till en "låg" logik. Detta innebär en viktig att vara "på" faktiskt läses som "off", som är bakåt, men vi kan fixa detta lätt lite senare.

2. SKIFT register data lagras i en 8 byte array av nuvarande viktiga statliga och tidigare viktiga statliga.

När SKIFT register är låst, börja vi skicka klockan pulser. Varje klocka puls orsakar tillståndet i skiftregister att flytta en bit mot utgångsstiftet. Varje chips produktion är ansluten till ingången på nästa chip. Detta gör att data kan flytta sekventiellt genom alla marker. Men hur ska vi hantera det "å är avstängd" och "off är på"? 74hc165 ger två seriella utgångar - en normal utgång och en inverterad utgång. Vi ansluter mikrokontroller till inverterad utgång av det sista SKIFT registret. Här ändras indata anges tillbaka till vad vi vill - nyckel ner är "på" eller "1" och viktiga upp är "off" eller "0".

Vi använder en 8-bitars mikrokontroller. Det fungerar bäst och mest effektivt med 8 bitar (en byte) i taget. Så, vi läser SKIFT register data en byte i taget. Åtta bitar i en byte lagra det viktiga statligt åtta nycklar. Vi behöver 8 byte att lagra viktiga påstår av alla 61 tangenter.

Vi måste ägna stor uppmärksamhet åt hur data kommer ur SKIFT register. Vi via våra chips så den första register första kontakt (ingång A) är ansluten till längst till höger nyckel - vi kallar det nyckeln "1". Den sista nyckeln är nyckeln "61". Så, vi kommer att få viktiga stater ur registren i höger till vänster ordningen. Så kommer den första byten läsa faktiskt att vara de sista fem nycklarna (och de tre oanvända ingångarna). Vi ville ha vårt byte som ska lagras i vänster till rätt ordning, så vi fick också se till att vi lagt den första biten fick i varje byte till den längst till vänstra lite av den viktiga statliga byten.

Du kan göra det någon ordning som du vill, men du måste vara konsekvent!

3. centrala staterna omvandlas till push stater. push staterna lagras i en 61-bytematris håller antingen anteckning på, Obs off eller ingen förändring.

Så, vi har 8 byte värt viktiga stater för alla 61 tangenter. Men detta är inte precis vad vi behöver skicka MIDI-kommandon. MIDI orsakar anteckningar till ljud med en "noterar på" kommandot och notera stannar tills "noterar" skickas. Så måste vi konvertera det viktiga statligt i ett press tillstånd. Vi vill veta när en nyckel har pressas så att vi kan aktivera anteckningen och vi vill veta när en nyckel er blitt befriaren så vi kan stänga anteckningen. Vi vill inte skicka "noterar på" tusen gånger per sekund. Som skulle översvämma MIDI-bussen med data och det skulle inte fungera.

För att generera push stater från viktiga påstår vi att lagra den aktuella nyckel och den tidigare viktiga staten. Vi jämför två varje Skanna loop och se om tillståndet ändras. Om det gick låg till hög, då ett tryck ner registreras och en "noterar på" skickas. Om det gick hög till låg, sedan en nyckel upp registreras och en "note off" skickas. Om ingenting förändrats, skickas inga nya MIDI-data.

Vi beräknar MIDI-not information genom att lagra ett lägsta notvärde och sedan lägga till vektorindexet den för att få den faktiska Obs. Detta är det enklaste sättet att närma sig den. Om du vill få fancy måste någon form av utseende-upp bord.

4. processen upprepas. Vi se till att vi väntar en minimitid mellan tangentbord skanningar. Om vi scanna för fort plocka vi upp det som kallas "viktiga bounce" - elektrisk buller som alstras när viktiga kontakterna öppnas och stängs. Om vi läser det får vi falska viktiga statliga information. Allt vi behöver göra är vänta lite längre då den typiska "studsa" perioden. Om den bounce (10 mikrosekunder i detta projekt) inte har ännu gått ut, vi helt enkelt avsluta skanning slingan och försök igen.

Hur konverterar vi faktiskt viktiga stater in i push påstår?
I detta projekt läser vi skiftet registrerar med hjälp av programvara. Detta kallas "bit banka". Det är inte den snabbaste metoden. Det är en hårdvara i ATMEGA chipet kallas SPI (följetong/parallell Interface) som kunde göra det mycket snabbare. Dock är det svårare att förstå och det visar sig för läsa människors ingångar bit-banka är mycket snabb. Vi se till att det är snabbt med hjälp av mikrokontroller så effektivt som möjligt. Vi gör alla våra viktiga statliga jämförelser med bitvis operatörer. De bitvisa operatorer som vi använder är "<<" SKIFT kvar, ">>" flytta höger. "^" exklusiva-eller (XOR) och "&" och XOR används för att se när viktiga statliga inom en stat byte har ändrats jämfört med det tidigare tillståndet. OCH används för att välja bitar från ett byte med en bitmask. Skift-operatörer används för att flytta lite bitmask vänster eller höger insida en byte att välja lite specifika att jämföra. Alla dessa åtgärder kan utföras i en eller två klockcykler, vilket gör dem mycket snabbt.

Om du vill lära dig mer om hur koden fungerar, ta en titt på källan. Vi erbjuder massor av kommentarer på hur varje del fungerar. Igen, den svåraste delen är helt enkelt att se till du läsa och jämföra data i rätt ordning.

Se Steg
Relaterade Ämnen

Att lägga till hjul till gamla Wrigley Field Seat

flera år sedan, min pappa fick en gammal Wrigley Field-plats som en gåva, och på grund av platsbrist i hans kontor i dag, har jag hävdade den att använda som min workshop plats. På uppsidan? Det är en gammal Wrigley Field-plats! Nackdelen? Den har in...

Att lägga till nycklar till en Arduino Synth den hårda vägen-Blacklord: Organ Donor projekt del 2

(Obs-detta är min 20 instructable! Tack till alla följande och commenting.on mina projekt och personal som gör detta möjligt. Denna webbplats har definitivt fått mig få min A spelet till arbetsbänken.)Auduino granulat synth av Peter Knight ( http://c...

Enkelt sätt att lägga till spöklika siffrorna i dina bilder för Halloween

uppdatera dig socialt nätverk bilder för semester är alltid kul, det finns alltid massor av sätt att manipulera foto att lägga till funktioner som monster eller Zombie ut dina gör. Men min favorit har alltid varit ett spöke i bildens bakgrund du se o...

Hur att lägga till knappen har Peter riddarens Auduino projektet

det är kul! Ge inte upp! Jag kommer inte.Steg 1: Bygg Auduino! Detta projekt är enkelt och mycket roligt. Kudos till Peter Knight!Människor i allmänhet rekommendera prototyper med en skärbräda så att dina krukor arbete, besluta om en layout, etc.Tråd...

Nästan gratis sätt att lägga till surroundljud på datorn

detta instructable kan nås på författarens hemsida - http://www.neatinformation.com/Om du länkar till detta instructable från en annan webbplats, vänligen inkludera en länk till webbplatsen Ordentlig Information .Denna artikel är upphovsrättsskyddat...

Att lägga till djup (och skryt) till IKEAs annars platt sexkantiga Hönefoss speglar

IKEA gör några trevliga och avgjort inte vanligt torget speglar namngivna "Hönefoss." De är sexkantig form och kommer i en låda med 10 för $15 (5 varje i två olika nyanser av brunt). Du kan läsa allt om dem på IKEA "Speglarna ser ganska bra...

Att lägga till

Steg 1: Lägga till hela tal (steg 1 - 2)Att lägga till hela tal är enkelt, även om många människor inte vet varför det sista numret är mer än de siffrorna du lagt till. Tänk på ett nummer linje:Steg 2: Lägga till hela tal (steg 1 - 2) På en rad rad l...

Att lägga till "Glans" trädgård Solar Light

trött på det svaga ljuset från din sol-uppladdningsbara trädgård lights? Du kan mer än tredubbla ljuseffekt med denna nya krets. Fungerar även med röd eller orange ljus - så länge går det bort ett enda AA-batteri!Steg 1: Ta bort gamla kretskortet. Kl...

Att lägga till extra kylning till ibook g4/macbook

Tja, detta började både med min döda xbox och dremeling det i hälften och när jag nyligen tog min ibook isär att ta av den termiska pad och ersätta det med termisk pasta (roligt, jag trodde det skulle ha termisk pasta redan). Väl misslyckades detta e...

Att lägga till extra ingång (för en mp3-spelare) till en gammal AM lastbil Radio

detta är en mycket enkel hacka som gör att din äldre radio att spela från en AUX-ingång.I mitt fall, jag använder radion från min ' 66 Ford lastbil och med indata till lyssna till musik från en mp3-spelare. Radion är ungefär lika enkelt som det kan b...

Att lägga till anpassade komponenter i Eagle

Detta instructable visar dig hur du lägger till komponenter till din Eagle bibliotek som gör att du kan ha anpassade PCB är fabricerade. Denna handledning kommer att fokusera på med befintliga symboler och paket för att göra layout processen så fort...

Att lägga till drivrutinen Information Center till en ny Chevy truck

detta är en instructable visar steg som behövs för att lägga till Drivrutinen Information Center i en ' 07 eller ' 08 Chevy truck.Steg 1: Bestäm ni knapparna DIC Om du har köpt en ny Chevy truck och du inte har en serie av fyra vertikala knapparna på...

Att lägga till högtalare / Surround-ljud till en Stereo (Entertainment Center)

är du ute efter att lägga till surround-ljud i din entertainment center. Vill du lägga högtalarna till andra rum i ditt hem eller lägenhet. Så är videon för dig!I den här videon lägga jag 2 extra högtalare till en befintlig stereo som jag hade i min...

Hacka en USB-hubb för att lägga till interna portar till en Toshiba Satelite (eller andra laptop)

Okej så några av oss är trötta på alla våra minnen och trådlösa donglar hängande utanför vår laptop hela tiden!på de flesta bärbara datorer detta kan enkelt tas om hand vid modding av modet i din bärbara dator - vi kommer att göra det bara med USB så...

Att lägga till Digispark (med bootloader) stöd till befintliga Arduino 1.6.x IDE

Digispark är små Arduino IDE kompatibel utveckling styrelsen baserat på Atmel attiny85 som direkt ansluter till USB. Det har mycket få pins, men fortfarande kan göra några fina saker. Digispark är copyright av Digistump LLC (digistump.com) och den fu...

Att lägga till "Landström" till en VW Camper Van

mitt projekt innan vi går på en längre resa var att lägga till 110 "landström" till våra 2002 VW Westphalia Weekender. Jag har alltid varit avundsjuk på min grannes äldre Westy med ursprungliga utrustning Landström, så jag tänkte det var dags at...

Att lägga till rörelsekontroll en projektion klocka

mål: lägga till en rörelsesensor som tänder upp klockan på natten när den upptäcker rörelse och göra bakgrundsbelysningens ljusstyrka manuellt justerbara.Varför: Jag har bara några krav på en bra säng-side klocka. Det måste vara väl synlig, men inte...

Att lägga till säkerhetskedja i en Wire Wrapped armband

denna steg för steg handledning skrevs att lägga säkerhetskedja till min Swarovski stil armband, men kan enkelt anpassas till många stilar av armband. De tekniker visas i den här guiden fungerar för någon armring där ändarna är inslagna, med eller ut...

Att lägga till lysdioder till objekt

Välkommen till min LED Tutorial Välkommen denna handledning om hur du lägger till lysdioder objekt, att ge dem den extra gnistan! Observera mina metoder är en av många olika sätt att göra detta, så om du ser mig göra något annorlunda än någon annan s...