投稿者「delta」のアーカイブ

MIDI to OSC Deviceの試作とUnityを用いたVJについて 1

2013.11.04に行われた、りんご飴音楽祭@渋谷WWWでのAZUMA HITOMIさんのVJを担当させていただきましたが、今回新たに導入したデバイスなどの技術的なことについて、何回かに分けてまとめていきます。
項目としては、以下の様な内容にしようと思っています。

  • AVR100円マイコンと小型LinuxボードによるMIDI→OSC変換
    • AVRの100円マイコンを用いたMIDI to UART変換基板と、ARMコアを搭載したLinuxボードであるBeagleBone Blackを組み合わせて、MIDI情報をOSCに変換してEthernetで送信できるようにしました。
  • MIDI→OSC変換基板の筐体製作と小型WiFiルータと組み合わせた遠隔操作
    • MIDIの演奏者からOSC利用者(VJ)までの細かいインフラ等について、意外と難点が多かった!
  • 3DゲームエンジンUnityでのOSC受信処理とVJへの応用
    • UnityでのOSC受信と、Unityを無理やりVJに利用する際にとった苦肉の策についてまとめます。誰かがもっと良いやり方を教えてくれることを願いつつ。。

Liveholic Party vol.2

コバルトハチ公
Liveholic Party vol.2行ってきました。
多くの方に渋谷までお越しいただき楽しかったですね。
同じLiveを使う人でも、いろんな音やスタイルがあって面白かったです。
Like itは珍しく禁煙ということで、ノンスモーカーなαΩ的にはうれしいところでした。
写真や動画などはおいおい上げていくので、データ持ってる人は連絡お願いします。

vol.3もよろしくお願いします。
というかその前にクルージングパーティーがあるらしい!要チェキ!

Excelの列とVBA配列の相互変換

Micro$oft世代な僕らは、当然Excelでプログラムを書く機会が多かったりする。そんな時、
Excelワークシートの列を、まるごと配列としてVBAで処理したい
あるいは逆に、
VBAの配列を、丸ごとワークシートの列に出力したい
と思う事が少なくない。
そこで、VBAで相互変換する関数を作ってみた。列をdouble型の配列に格納する関数と、配列を列として返す関数。

Function Col2Arr(Col As Range) As Double()
 
Dim ret() As Double
Dim r As Long
Dim i As Long
 
r = Col.Rows.Count - 1
ReDim ret(r) As Double
 
For i = 0 To r
ret(i) = Col.Cells(i + 1, 1)
Next
 
Col2Arr = ret()
End Function
 
Function Arr2Col(Arr() As Double) As Variant
 
Dim ret() As Double
Dim i As Long
ReDim ret(UBound(Arr()), 0) As Double
 
For i = 0 To UBound(Arr())
ret(i, 0) = Arr(i)
Next
 
Arr2Col = ret
End Function

使うときはこんな感じ。

Function mul2(data As Range) As Variant
 
Dim ret() As Double
Dim i As Long
 
'ワークシート列を配列に変換
ret() = Col2Arr(data)
 
'全要素を2倍
For i = 0 To UBound(ret())
ret(i) = ret(i) * 2
Next
 
'配列をワークシート列に変換して返す
mul2 = Arr2Col(ret())
End Function

ワークシートでA1からA10に適当に数字を書いて、B1:B10範囲を選択して
=mul2(A1:A10)
と書いてCtrl+Shift+Enterを押すと、2倍になった列が作れる。ワークシート関数で間に合わない処理をするときや、セル1つずつで計算するとめっちゃ重くなるときに便利、だと思う。
↑のときはExcel使うなよ!とは言えない状況は多々ある。。