最近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のかわりに姉,姉姉,みたいに姉を多用する文化がある.
Web MIDI APIを使ってブラウザから朝食を選ぶ
Web MIDI APIを使うと,ブラウザからMIDI機器の操作を読んだり,MIDI機器にイベントを送ったりできる.Google Chromeの43から使えるようになった.
ドキュメントが和訳されてたので,ここのサンプルコードを真似して書いたら動いた.
Web MIDI API (日本語訳)
朝ご飯をパンにするかご飯にするか悩んだときに使えるアプリケーションを作った.クロスフェーダーでどっちか選んで,スクラッチするとパンが高速回転する.
KAOSS DJで朝ごはんスクラッチしながら選べるのができた
KAOSS DJ持ってる人いるか知らないけど,ここで遊べる.
hitode909.appspot.com
ブラウザから呼び出すのはすごい簡単だった.呼び出すだけなら5行くらいで,アプリケーション全部で80行くらい.まだまだボタン余ってるので,ジャムどれにするかとか,炊き加減とか,いろいろ選べそう.
朝食セレクター · hitode909/appspot@3b7757a · GitHub
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もできる機器ということで,おすすめビジネス機器です.
KORG カオスパッド搭載DJコントローラー KAOSS DJ
- 出版社/メーカー: KORG
- 発売日: 2015/02/26
- メディア: エレクトロニクス
- この商品を含むブログを見る