Hemgjord MPC stil MIDI controller (6 / 6 steg)

Steg 6: Koden.

'****************************************************************
' * Namn: UNTITLED. BAS *
' * Författare: Matthew Reid *
' * Meddelande: Copyright (c) 2012 [Välj Visa... REDIGERINGSALTERNATIV] *
' *: Alla rättigheter reserverade *
' * Datum: 9/5/2012 *
' * Version: 1.0 *
' * Anteckningar: *
'* : *
'****************************************************************
Pausa 300
inkludera "modedefs.bas"

#CONFIG
__CONFIG _CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
__CONFIG _CONFIG1H, _FOSC_HS_1H & _FCMEN_ON_1H & _IESO_ON_1H
__CONFIG _CONFIG2L, _PWRT_ON_2L & _BOR_ON_2L & _BORV_3_2L & _VREGEN_OFF_2L
__CONFIG _CONFIG2H, _WDT_ON_2H & _WDTPS_256_2H
__CONFIG _CONFIG3H, _MCLRE_OFF_3H & _PBADEN_OFF_3H
__CONFIG _CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L & _DEBUG_OFF_4L
#endconfig
definiera OSC 20

OSCCON = % 00001000

"ställa in hårdvaran seriell port
definiera HSER_RCSTA 90H
definiera HSER_TXSTA 24H
definiera HSER_BAUD 31250

"i2c portar
SDA var PORTB.2
SCL-värdet var PORTB.1

"knappen variabler

"kolumn 1 variabler
buttonval1 var byte
bouncecheck1 var byte
buttonstate1 var lite [4]
Jag var byte
värde1 var byte

"kolumn 2 variabler
buttonval2 var byte
bouncecheck2 var byte
buttonstate2 var lite [4]
värde2 var byte

"kolumn 3 variabler
buttonval3 var byte
bouncecheck3 var byte
buttonstate3 var lite [4]
value3 var byte

"kolumn 4variables
buttonval4 var byte
bouncecheck4 var byte
buttonstate4 var lite [4]
value4 var byte

"bankchange variabel
norra var lite
downstate var lite
j var byte: j = 1
c var byte

"variabler för en till d (IC2)
en var byte [8]
två var byte [8]
tre var ordet [8]: tre = 0
tröskel var ordet: tröskel = 50
prevpotval var byte [8]

prevadval var ordet [8]
currentadval var ordet [8]

"variabler för en till d (IC1)
one1 var byte [8]
two1 var byte [8]
three1 var ordet [8]: tre = 0

prevpotval1 var byte [8]

prevadval1 var ordet [8]
currentadval1 var ordet [8]

"port riktning
trisa = % 00000000
trisb = % 00000001
trisc = % 10110110

"aktiverar RC4 och RC5
Ucon.3 = 0
ucfg.3 = 1

"inaktivera inre A-D
adcon0 = % 00111100
adcon1 = % 00001111

"slå på lcd och Ställ in ljusstyrkan till max
Pausa 1000
serout PORTB.3, N9600, [$1b, $2a, $FF]

serout PORTB.3,N9600,[$1b,$30]
serout PORTB.3,N9600,[$1b,$2a,200]
serout PORTB.3,N9600,[$1b,$46]

serout PORTB.3,N9600,[$fe,$80]
serout PORTB.3,N9600,["Midi Pad v1_1"]
serout PORTB.3,N9600,[$fe,$c0]
serout PORTB.3,N9600,["Matt Reid 2012"]

"intro flash

"röd
Porta.0 = 1
Porta.1 = 0
Porta.2 = 0
Pausa 400
"grön
Porta.0 = 0
Porta.1 = 1
Porta.2 = 0
Pausa 400
"blå
Porta.0 = 0
Porta.1 = 0
Porta.2 = 1
Pausa 400
"lila
Porta.0 = 1
Porta.1 = 0
Porta.2 = 1
Pausa 400
"vit
Porta.0 = 1
Porta.1 = 1
Porta.2 = 1
Pausa 400
"cyan
Porta.0 = 0
Porta.1 = 1
Porta.2 = 1
Pausa 400

'_________________________

"Läs bank från eeprom
Läs 5, j

mainloop:
GOSUB bankchange
GOSUB knapptryckning
GOSUB potread
GOSUB RGB

gå till mainloop

bankchange:

"bank
om portc.2 = 1 & upstate = 1 då
j = j + 1
om j > 8 sedan
j = 1
endif

"rensa alla anteckningar
för i = 0 till 128
hserout [$92, jag, 0]
Nästa jag
' Skriv bank change till eeprom
Skriv 5, j
Upstate = 0
endif
om portc.2 = 0 & upstate = 0 då
Upstate = 1
endif

"bank ner
om portc.1 = 1 & downstate = 1 då
j = j - 1
om j < 1 sedan
j = 8
endif
"rensa alla anteckningar
för i = 0 till 128
hserout [$92, jag, 0]
Nästa jag
' Skriv bank change till eeprom
Skriv 5, j

downstate = 0
endif
om portc.1 = 0 & downstate = 0 då
downstate = 1
endif

"Visa bank
serout PORTB.3, N9600, [$Fe, $c0]
serout PORTB.3, N9600, ["BANK", "", #j, ""]

om j = 1 då
c = 0
endif

om j = 2 då
c = 16
endif

om j = 3 då
c = 32
endif

om j = 4 då
c = 48
endif

om j = 5 sedan
c = 64
endif

om j = 6 då
c = 80
endif

om j = 7 då
c = 96
endif

om j = 8 då
c = 112
endif

returnera

potread:
' adc potentiometer saker---

"Läs ic2
för i = 1 till 8
tre [i] = 0

om jag = 1 då
i2cwrite SDA, SCL, % 00010000, [10001100] %
endif
om jag = 2 då
i2cwrite SDA, SCL, % 00010000, [11001100] %
endif
om jag = 3 då
i2cwrite SDA, SCL, % 00010000, [10011100] %
endif
om jag sedan = 4
i2cwrite SDA, SCL, % 00010000, [11011100] %
endif
om jag sedan = 5
i2cwrite SDA, SCL, % 00010000, [10101100] %
endif
om jag = 6 då
i2cwrite SDA, SCL, % 00010000, [11101100] %
endif
om jag sedan = 7
i2cwrite SDA, SCL, % 00010000, [10111100] %
endif
om jag = 8 då
i2cwrite SDA, SCL, % 00010000, [11111100] %
endif
"denna paus är viktigt att hålla adc från hoppa runt
Pausa 4

i2cread SDA, SCL, % 00010001, [ett [i], två [i]]

tre [i] = en [i] | tre [i]

tre [i] = tre [i] << 4
två [i] = två [i] >> 4
tre [i] = två [i] | tre [i]
currentadval [i] = tre [i]
"pausa 10

tre [i] = tre [i] * 128
tre [i] = div32 4095

om abs (currentadval [i] - prevadval[i]) > = tröskel då
hserout [$B2, 13 + i, tre [i]]
prevpotval [i] = tre [i]
prevadval [i] = currentadval [i]
"Visa en till d-värde
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#178, "", #(13+i), "", #three [i], ""]
endif
Nästa jag

"Läs ic1
för i = 1 till 8
three1 [i] = 0

om jag = 1 då
i2cwrite SDA, SCL, % 00010100, [10001100] %
endif
om jag = 2 då
i2cwrite SDA, SCL, % 00010100, [11001100] %
endif
om jag = 3 då
i2cwrite SDA, SCL, % 00010100, [10011100] %
endif
om jag sedan = 4
i2cwrite SDA, SCL, % 00010100, [11011100] %
endif
om jag sedan = 5
i2cwrite SDA, SCL, % 00010100, [10101100] %
endif
om jag = 6 då
i2cwrite SDA, SCL, % 00010100, [11101100] %
endif
om jag sedan = 7
i2cwrite SDA, SCL, % 00010100, [10111100] %
endif
om jag = 8 då
i2cwrite SDA, SCL, % 00010100, [11111100] %
endif

"denna paus är viktigt att hålla adc från hoppa runt
Pausa 4

i2cread SDA, SCL, % 00010101, [one1 [i], two1 [i]]

three1 [i] = one1 [i] | three1 [i]

three1 [i] = three1 [i] << 4
two1 [i] = two1 [i] >> 4
three1 [i] = two1 [i] | three1 [i]
currentadval1 [i] = three1 [i]
"pausa 10

three1 [i] = three1 [i] * 128
three1 [i] = div32 4095

om abs (currentadval1 [i] - prevadval1[i]) > = tröskel då
hserout [$B2, 13 + i, three1 [i]]
prevpotval1 [i] = three1 [i]
prevadval1 [i] = currentadval1 [i]
"Visa en till d-värde
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#178, "", #(21+i), "", #three1 [i], ""]
endif
Nästa jag

returnera

knapptryckning:

"knappen kod
'set column 1--------------------------------------------------------------------
portb.4 = 0
portb.5 = 1
portb.6 = 1
portb.7 = 1

buttonval1 = 0
bouncecheck1 = 0

buttonval1.0 = portc.4
buttonval1.1 = portc.5
buttonval1.2 = portc.7
buttonval1.3 = portb.0

paus 1

bouncecheck1.0 = portc.4
bouncecheck1.1 = portc.5
bouncecheck1.2 = portc.7
bouncecheck1.3 = portb.0

om buttonval1 = bouncecheck1 sedan

för i = 0 till 3' räknas från 0 till 3

värde1 = buttonval1 >> jag
om value1.0 = 1 & buttonstate1 [i] = 1 då
hserout [$92, c + i, 0]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + i), "", #0, ""]
buttonstate1 [i] = 0
endif

om value1.0 = 0 & buttonstate1 [i] = 0 då
hserout [$92, c + i, 100]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + i), "", #100, ""]
buttonstate1 [i] = 1
endif

Nästa jag

endif

'set column 2--------------------------------------------------------------------
portb.4 = 1
portb.5 = 0
portb.6 = 1
portb.7 = 1

buttonval2 = 0
bouncecheck2 = 0

buttonval2.0 = portc.4
buttonval2.1 = portc.5
buttonval2.2 = portc.7
buttonval2.3 = portb.0

paus 1

bouncecheck2.0 = portc.4
bouncecheck2.1 = portc.5
bouncecheck2.2 = portc.7
bouncecheck2.3 = portb.0

om buttonval2 = bouncecheck2 sedan

för i = 0 till 3' räknas från 0 till 3

value2 = buttonval2 >> jag
om value2.0 = 1 & buttonstate2 [i] = 1 då
hserout [$92, c + 4 + i, 0]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 4 + i), "", #0, ""]
buttonstate2 [i] = 0
endif

om value2.0 = 0 & buttonstate2 [i] = 0 då
hserout [$92, c + 4 + i, 100]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 4 + i), "", #100, ""]
buttonstate2 [i] = 1
endif

Nästa jag

endif

'set column 3--------------------------------------------------------------------
portb.4 = 1
portb.5 = 1
portb.6 = 0
portb.7 = 1

buttonval3 = 0
bouncecheck3 = 0

buttonval3.0 = portc.4
buttonval3.1 = portc.5
buttonval3.2 = portc.7
buttonval3.3 = portb.0

paus 1

bouncecheck3.0 = portc.4
bouncecheck3.1 = portc.5
bouncecheck3.2 = portc.7
bouncecheck3.3 = portb.0

om buttonval3 = bouncecheck3 sedan

för i = 0 till 3' räknas från 0 till 3

value3 = buttonval3 >> jag
om value3.0 = 1 & buttonstate3 [i] = 1 då
hserout [$92, c + 8 + i, 0]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 8 + i), "", #0, ""]
buttonstate3 [i] = 0
endif

om value3.0 = 0 & buttonstate3 [i] = 0 då
hserout [$92, c + 8 + i, 100]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 8 + i), "", #100, ""]
buttonstate3 [i] = 1
endif

Nästa jag

endif

'set column 4--------------------------------------------------------------------
portb.4 = 1
portb.5 = 1
portb.6 = 1
portb.7 = 0

buttonval4 = 0
bouncecheck4 = 0

buttonval4.0 = portc.4
buttonval4.1 = portc.5
buttonval4.2 = portc.7
buttonval4.3 = portb.0

paus 1

bouncecheck4.0 = portc.4
bouncecheck4.1 = portc.5
bouncecheck4.2 = portc.7
bouncecheck4.3 = portb.0

om buttonval4 = bouncecheck4 sedan

för i = 0 till 3' räknas från 0 till 3

value4 = buttonval4 >> jag
om value4.0 = 1 & buttonstate4 [i] = 1 då
hserout [$92, c + 12 + i, 0]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 12 + i), "", #0, ""]
buttonstate4 [i] = 0
endif

om value4.0 = 0 & buttonstate4 [i] = 0 då
hserout [$92, c + 12 + i, 100]
serout PORTB.3, N9600, [$Fe, $80]
serout PORTB.3, N9600, [#146,"", #(c + 12 + i), "", #100, ""]
buttonstate4 [i] = 1
endif

Nästa jag

endif

returnera

RGB:

om j = 1 då
"gul
Porta.1 = 0
pauseus 200

Porta.0 = 1
Porta.1 = 1
Porta.2 = 0
endif

om j = 2 då
"röd
Porta.0 = 1
Porta.1 = 0
Porta.2 = 0
endif

om j = 3 då
"grön
Porta.0 = 0
Porta.1 = 1
Porta.2 = 0
endif

om j = 4 då
"blå
Porta.0 = 0
Porta.1 = 0
Porta.2 = 1
endif

om j = 5 sedan
"lila
Porta.0 = 1
Porta.1 = 0
Porta.2 = 1
endif

om j = 6 då
"vit
Porta.0 = 1
Porta.1 = 1
Porta.2 = 1
endif

om j = 7 då
"cyan
Porta.0 = 0
Porta.1 = 1
Porta.2 = 1
endif

om j = 8 då
"blå
Porta.0 = 0
Porta.1 = 0
Porta.2 = 1
endif
återgå

Se Steg
Relaterade Ämnen

Arkad stil DJ MIDI-controller

>>> detta är inte helt klar ännu som jag spänt lite av banan. Jag ska uppdatera den instructable och ladda upp en video när det sorteras <<<Jag har varit DJ ungefär 10 år nu, och under de senaste har jag bytte bra gamla gammaldags vinyl...

Rita själv - MIDI controller med ledande bläck

"Rita det själv" är en MIDI-controller som använder ledande bläck som knappar. Den bygger på Arduino, och använder en kapacitiv sensor (två, faktiskt) att avgöra huruvida ritade knapparna är beröring eller inte.http://sanidanz.tumblr.com/drawity...

Arcade-knappen MIDI-Controller

att ha en hårdvara gränssnitt till din favorit musik / DJ / VJ programvara kan verkligen öppna upp dörrar i din kreativitet. Mest utbredda form av hårdvara kontroll till datorn för sådana program är en MIDI controller.En MIDI-controller kan skicka oc...

Flamma kontrollerade MIDI-Controller

En stor fråga i världen av digital musikproduktion är att hålla det analog värme (som genljöd från rullbandspelare system och rör) i dagens moderna digitala musik. Många svär att analoga system har ett ljud som aldrig kan replikeras av bits, och hopp...

Makey Makey MIDI-controller

Makey makey är en mikrokontroller som fungerar som ett tangentbord när den är ansluten till datorn. Jag omprogrammerade det så att den skickar MIDI-noter. Varför? Eftersom när du använder ett tangentbord till kontroll saker har fönstret du styr vara...

Hur man bygger en Dj MIDI Controller

så detta var ett skolprojekt. Jag har precis avslutat den. Dokumentet bifogas i slutet är hela projektet, som jag skrev det att lämna in det. Om du vill försöka detta bygga Låt mig veta och jag kan ge några tips. Också är en upp till detta projekt at...

Beatfly: Gör en lysande luftskepp och kontrollera den med din röst, tangentbord, MIDI-Controller, Garageband fil, iPhone, Flash och mycket mer! [Mac OSX]

Jag har arbetat med flera projekt med hjälp av luftskepp och ballonger, och här vill jag dela en av dem, Beatfly. Detta är en lysande luftskepp kontrolleras med olika gränssnitt såsom röst, tangentbord, MIDI-Controller, Garageband MIDI-fil, iPhone oc...

Cigar Box MIDI-Controller

här är en DIY MIDI-controller som kan användas med Max/MSP, Ableton Live, och bara om någon annan musikprogramvara eller maskinvara som erbjuder MIDI i/o.Projektet använder MIDI-CPU, som kan användas som en MIDI "hjärna" för DIY projekt.Denna zi...

Anpassade Arduino MIDI Controller

Hej och Välkommen till detta instructable om hur man bygger en anpassad, Billigt och enkelt USB MIDI-controller, baserat på Arduino. Den bästa nyheten: inget krångel med USB-till-MIDI-gränssnitt eller programvaruverktyg som Hårlösa MIDI, bara plug 'n...

Arcade MIDI-Controller

Jag är säker på att du har sett dessa coola videor människor fastnar på en låda med en massa knappar på den. Tja, idag, kommer jag att visa dig hur du kan göra en låda som du kan göra sylt. < Inspirerad av MIDI-Fighter klassiska >begränsad tid erbju...

Teensy Monster v1.0 / / DIY MIDI-Controller

Välkommen till Instructable Teensy Monster!Detta Instructable hjälper dig montera din Teensy Monster, förstå hur man kan programmera den och ge många tips för att bygga en stor DIY controller.teensymonster.ccKöp din Teensy Monster här.https://github....

Konvertera en räddade leksak till en MIDI-controller

i detta Instructable, jag kommer att gå igenom processen att konvertera ett räddade buller-making barnleksak till ett faktiskt användbara musikaliska instrument med MIDI! Ta en stund att bara kasta en blick över titlarna på stegen i detta Instructabl...

Du Rock gitarr MIDI-controller med Bluetooth BLE och uppladdningsbart batteri

I denna tutorial kommer jag visa dig hur du slår gitarr du Rock gitarr i en MIDI-Bluetooth 4.0 controller med uppladdningsbart batteri. Lösningen var enkel men att tänka på det.Detta system har testats med iMac, iPad och iPhoneDet material vi behöver...

Sockerbit MIDI Controller

Detta projekt är en bärbar, Arduino-powered, grid-baserad MIDI-controller som startar upp till olika apps att göra massor av saker med ljud. Den har 16 bakgrundsbelysta knappar, används som både in- och utgångar för att ge registeransvarige lite visu...

MIDI-Controller med tangentbord

Idag bygger vi 400 nyckeln MIDI-controller med hjälp av en Arduino och dator tangentbord!För budget medvetna musik producenterna ute är detta projekt ett bra sätt att bygga en billig kontroll styrelse för din digital audio workstation.Eller om du bar...

Arduino MIDI-controller med en ZX avstånd och gest Sensor

Välkommen till detta instructable om hur man bygger en mycket grundläggande MIDI-Controller med SparkFun ZX avståndet och gest Sensor. Detta instructable är del av en skoluppgift.Obs: Detta är ingen kodning handledning. Den final koden kommer att ing...

Arduino MIDI-controller - techshop använder scarff boarduino

jag har tittat på ett antal olika arduino lösningar för MIDI. Mitt projekt omfattar över 100 analoga ingångar att varje känsla hastighet och ge MIDI-utgången. Med den bakgrunden info jag fick från techshop klass beslutat jag att ställa in det först m...

Laser MIDI-Controller - (Laser utlösta Midi Keyboard)

Projektets målsättning:"Bygga en laser utlösta MIDI-controller, med hjälp av standard elektriska komponenter och en återvunnen midi keyboard."Steg 1.Hitta en återvunnen midi keyboard / controller.Steg 2.Konstruera en laser utlöste switch.Steg 3....

Arduino MIDI Controller

En MIDI-controller är någon utrustning som genererar och sänder MIDI-data till MIDI-aktiverade enheter. Kort sagt, om du har knappar på din MIDI-controller, kan du programmera dessa knappar till alla ljud du vill ha via musikaliska programvara (ex.:...