since 2006 ~ 2013
自作電子楽器ノブログ
ブログ更新は以下に移行中です。
->Analogfeeder.com
自作midiデバイス3更新中
自作midiデバイス2が中途半端ですが、ときどき修正しながらやっていきます。

今回はツマミに反応してmidi信号を送ることをやります。
動画はこちらです(自作midi4にあります

今回もpicマイコンを使いますが、クロックが10MHzから20MHzに変わりました。
さらにpicも16F877Aになりました。
なぜこれになったかというと今回のツマミに反応するためにはAD変換という機能を使う必要があるからです。
AD変換とは、analog(アナログ)からdigitai(デジタル)に変換することを言います。
つまりツマミでまわす量をデジタルに変換する必要があるということです。
ツマミというのは、ボリュームとかノブとかいろいろ言われ方がありますが、電子部品的にいうと可変抵抗といいます。
可変抵抗とはその名の通り抵抗値を変えることができる抵抗のことです。
つまりツマミとは手で回すことによって抵抗値を変えられる部品だということです。
抵抗はみなさんきいたことがあると思いますが、オームの法則にでてくる
V=RI (電圧=抵抗×電流)
のRに相当する部分です。
Rが変わればIが一定ならばVが変化します。
いいかえれば、RでVをコントロールすることが出来ます。
RはここでいうツマミのことなのでVをツマミでコントロールすることをいうことがわかります。
AD変換の話に戻りますが、AD変換はそのVの変化をデジタルにすることをいいます。
つまり例を挙げると
Vが5Vだとするとデジタルならば01111111とか10進法が2進法に変わります。
これをAD変換だというのはちょっとニュアンスが違いますが、だいたいはつかめると思います。

いきなりですがアセンブラはこちらになります。(注意。アセンブラがきれいではないので更新する可能性あります。)

注意して欲しいのは、今まで使っていたmidisend関数が20MHz用に書き換えられている点AD変換特有のゆらぎ(ツマミを触っていないのに値が変化する現象)を取り除くテクニックが入っている点です。
後は今までのmidi送信にAD変換が加わっただけだと思ってもらって結構です。

-------------------アセンブラ-------------------------------
list p=16f877a
include p16f877a.inc
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF


xmit equ021h
tempequ022h
jequ023h
iequ024h
numequ025h
num1equ026h
num2 equ 027h
num3 equ 028h
c equ 029h
d equ 030h
e equ 031h

org 0

bsf STATUS,RP0
movlw b'00001110'
movwf ADCON1
clrf TRISB
bcf STATUS,RP0
movlw b'10000001'
movwf ADCON0


START
movlwD'2'
movwfi
ADSTART
CALL secdelay
bsf ADCON0,GO
WAIT
btfsc ADCON0,GO
goto WAIT
rrf ADRESH,w
andlw b'01111111'
decfszi,f
goto SS
goto SSS

SS
movwf num1
movwf num
call noteon
goto ADSTART

SSS
movwf num2
subwf num1,w ;ad2-ad1
btfss STATUS,Z
goto NUMSET ;ad1 not ad2
movlw D'1'
movwf i
goto ADSTART

NUMSET
movf num2,w
movwf num
call noteon

SSSS
call secdelay
bsf ADCON0,GO
WAIT1
btfsc ADCON0,GO
goto WAIT1
rrf ADRESH,w
andlw b'01111111'

movwf num3
subwf num1,w ;num1-num3
btfsc STATUS,Z
goto SSSS ;num1 = num3

movf num3,w
subwf num2,w ;num2-num3
btfsc STATUS,Z
goto SSSS ;num2 = num3
movf num3,w
movwf num1
movwf num
clrf num2
clrf num3
call noteon
movlw D'1'
movwf i
goto ADSTART


noteon
movlw0x90; note on, channel 1
movwfxmit
callsendmidi

movlw0x3C; middle C
movwfxmit
callsendmidi

movf num,w
movwf xmit
call sendmidi
return


sendmidi:
startb:bcfPORTB,0x02; start bit

movlwD'49'; delay 73 clocks: 2 + (23 * 3 + 1 * 2)
movwftemp; |
loop1:decfsztemp,f; |
gotoloop1; end delay

movlwD'8'
movwfj

sendloop:; executes 5 instuctions before setting bit
rrfxmit,f
btfscSTATUS, C
gotosend1

send0:nop
nop
nop
bcfPORTB, 0x02;send a 0 bit
gotoendloop

send1:nop
bsfPORTB, 0x02;send a 1 bit
nop
nop

endloop:movlwD'48';delay 70 instructions 2 + (22 * 3 + 1 * 2)
movwftemp; |
loop2:decfsztemp,f; |
gotoloop2; end delay

decfszj,f;
gotosendloop

stopb:nop
nop
nop
nop
nop
bsfPORTB, 0x02; stop bit
movlwD'51'; delay 79 clocks: 2 + (25 * 3 + 1 * 2)
movwftemp; |
loop3:decfsztemp,f; |
gotoloop3; end delay
nop
nop
return

secdelay:
movlwD'1'
movwfc
cloop:movlwD'255'
movwfd
dloop:movlwD'255'
movwfe
eloop:decfsze,f
gotoeloop
decfszd,f
gotodloop
decfszc,f
gotocloop
return

end
[PR]
by toucyy | 2006-11-29 00:39 | 自作midiデバイス
<< shuffle namche bazar >>


PRODUCTS


レコードでの演奏(シンセサイザー)を可能にする
"Anvs"(アンブス) - Analog Vinyl Synthesizer -

Midi信号を他出力する
"Midiv" -Midi Distributor Divider-

ターンテーブルアニメーションを可能にする
"Taf1" -Turntable Animation Flasher-

LEDを使用したトリッキーな映像制作装置
(Taf1の機能拡張版)
"Taf2" -Turntable Animation Flasher 2-



PROFILE




Toucyy

某外資系半導体メーカー勤務、その傍らDJの経験とハードウェア、ソフトウェアエンジニアリングのバックグランドを生かし活動中。自作電子楽器でLive & DJ

patlo (yamamo2 + toucyy)
picnome、picratchbox開発者yamamo2さんとユニット組み、本格的に自作電子楽器でLiveやってます。

電子楽器と音楽と人とのつながりをいろいろ考えるのが最近のはまり。

------CONTACT------
"toucyyアットgmail.com"
(メールを送信する際はアットを@に変えてください。スパム対策用です)



イベント&ライブ等


2010年5月22~23日 MTM05 出展とプレゼンテーション "anvs"
http://www.oreilly.co.jp/mtm/05/
2010年11月20~21日 MTM06 出展 "anvs modular"
http://www.oreilly.co.jp/mtm/06/
2010年11月21日 Analog Synthesizer Builders' Summit 出展 "anvs modular"
http://analog-synth.jp/summit10/e_index.html
2011年12月3~4日 MTM07  出展 "Taf"
http://www.oreilly.co.jp/mtm/07/

2012年1月14日 TMUG20 (Tokyo Max Users Group) プレゼンテーションとライブデモ
http://tokyomax.jp/?p=1670
2010年7月10日 TMUG16 (Tokyo Max Users Group)  ライブ
http://tokyomax.jp/?p=696
http://toucylab.exblog.jp/14084312/




紹介記事



もうライブで使えるレベル――DIY楽器がますます進化



10th Analog Synthesizer Builders' Summit Party



Engadget Japan



ASCII.jp 「理屈にあわない楽しさを求めて 電子楽器をつくる人の哲学」



Sampling Loveのblog



VESTAX JAPAN



メディア&SNS



twitter

YouTube

DJイベント
"Elements"

茨城を拠点にさまざまな"要素"にこだわり行っているイベント

"Ruckus
[toucylab custom ver 1.2]"



PSP用のDJソフトウェアです。 Captain Dan氏のRuckusをベースにコントロールの微調整を行いました。
Download here !
-------------------------