最近KAOSS DJで遊んでて,きのうMIDIイベントを受け取るところまでできたので,もうちょっと知的なことをやってみる.
フェーダーに応じて姉を出す
クロスフェーダーの値に応じて文字を出してみる.UniMIDIでイベントを受け取って,182番のときだけ値を見てなんかする.182番はクロスフェーダの操作で,3番目にフェーダーの位置が入ってる.
require 'bundler'
Bundler.require
input = UniMIDI::Input.first.open
loop {
events = input.gets
events.each{|event|
data = event[:data]
next unless data[0] == 182
size = data[2] / 127.0 * 30
puts '姉' * size
}
}
sketch-midi/ane.rb at master · hitode909/sketch-midi · GitHub
これで,フェーダーを動かすと姉姉姉姉って出る.簡単.
なぜ姉かというと,意味はないけど,最近社内で姉が流行っていて,foo,bar,bazzのかわりに姉,姉姉,みたいに姉を多用する文化がある.
KAOSS DJで姉出せた
AppleScriptを使って縦フェーダーでgit pushする
朝ごはん食べたら仕事しようということで,縦フェーダーでgit pushやgit pullできるようにした.Rubyのスクリプトを常駐させておいて,そいつがイベントを監視するという仕組み.フェーダーを向こうに押しやるとpush,引っぱってくるとpullできる.直感的.
Bデッキの縦フェーダーからgit pullやgit pushできるようになった
ほかにも,Cueを押すと:shipit:って一発で出るとか,一時停止で:innocent:とか,横フェーダーでアプリケーションを切り替えるとか,便利機能を搭載している.ちょっとしたDSLみたいにしたので拡張も簡単.
キー入力を送るのは,AppleScript経由でやってるけど,もっといい方法あるかもしれない.Rubyじゃなくて,Objective-CとかSwiftで書くと直接OSのAPIを呼べる??
require 'bundler'
Bundler.require
module AppleScript
def self.stroke key
system <<"EOF"
osascript -e 'tell application "System Events"
keystroke "#{ key }"
keystroke return
end tell'
EOF
end
def self.activate application
system %Q|osascript -e 'activate application "#{ application }"'|
end
end
class Observer
def initialize
@handlers = {}
end
def on event, &handler
@handlers[event] = handler
end
def watch input
loop {
events = input.gets
events.each{|event|
data = event[:data]
handler = @handlers[data]
next unless handler
handler.call
}
}
end
end
input = UniMIDI::Input.first.open
observer = Observer.new
observer.on [151, 26, 127] { AppleScript.stroke ':ok_man:' }
observer.on [151, 27, 127] { AppleScript.stroke ':innocent:' }
observer.on [151, 29, 127] { AppleScript.stroke ':pray:' }
observer.on [151, 30, 127] { AppleScript.stroke ':shipit:' }
observer.on [152, 30, 127] { AppleScript.stroke 'git fetch' }
observer.on [184, 25, 0] { AppleScript.stroke 'git pull' }
observer.on [184, 25, 127] { AppleScript.stroke 'git push' }
observer.on [182, 23, 0] { AppleScript.activate 'Google Chrome' }
observer.on [182, 23, 32] { AppleScript.activate 'Emacs' }
observer.on [182, 23, 64] { AppleScript.activate 'iTerm' }
observer.on [182, 23, 96] { AppleScript.activate 'YoruFukurou' }
observer.on [182, 23, 127] { AppleScript.activate 'Slack' }
observer.watch input
sketch-midi/emoji-button.rb at master · hitode909/sketch-midi · GitHub
ボタンが多いと有利
よく使う機能や操作にキーボードショートカットを設定しようとしても,なかなかキーは余ってない.
そこで,ボタンやつまみのたくさんついたMIDI機器をくっつけることで,圧倒的に余ったインターフェイスが増えて,直感的で便利な暮らしが待っている.
KAOSS DJはなかなかコンパクトで,朝ご飯を選んだり,git pushできたり,ついでにDJもできる機器ということで,おすすめビジネス機器です.