LoginSignup
32
12

More than 5 years have passed since last update.

本当の意味でGetWild駆動開発を行う方法

Posted at

Get Wild Advent Calendar 2016 の7日目です。

GetWildから開発を始めるにはどうしたらいいのか?

GetWildといえば印象的なイントロがまずはみなさん頭に浮かぶのではないでしょうか。シティハンターのEDはこのイントロ部分が本編に被る形で曲が始まります。というわけで同様にプログラム開発においてもGetWildのイントロを実際に弾くところから始められるようにしました。

具体的にはMIDIキーボードでGetWildのイントロを間違えずに弾けるとリポジトリからpullするようにします。

用意するもの

  • node.jsが動く環境
  • MIDIキーボード(今回はNovation LaunchKey Mini MK2を使いました)
  • MIDIで音の出せるアプリ(GarageBandやableton liveなど)

node-midiを使うと比較的簡単にMIDI信号を取り扱うことができるので今回はこちらを使います。

GetWild駆動してみる

こんな感じのプログラムをまずは用意します。
intromelodyの値はMIDIキーボードによってマッピングが異なりますのでお手持ちの環境に合わせてください。
誤動作防止のため、一定の強さで弾かないと受け付けないようにしています。

getwild.js
var midi = require("../midi.js");
var intromelody = [63, 61, 59, 63, 61, 59, 59, 59, 61, 63, 63, 64, 63, 59, 63, 63, 61, 59];
var introrefrain = [];

var input = new midi.input();
input.on('message', function(deltaTime, message) {
    var mydream = message;

    if (mydream[0] == 144 && mydream[2] > 50) {
        introrefrain[introrefrain.length] = mydream[1];
        console.log(introrefrain);
        console.log(intromelody);

        var yourpain = JSON.stringify(intromelody);
        var mypain = JSON.stringify(introrefrain);

        if (yourpain == mypain) {

            var exec = require('child_process').exec;
            exec('git pull', function(err, stdout, stderr) {
                console.log(stdout);
            });

            console.log('Get wild and tough!');
        } else {
            return false;
        }

    }
});
input.openPort(0);

音の出るアプリケーションを起動する

せっかくなので音の出るアプリケーションを使って実際に音を出して弾きましょう。MacならGarageBandが入ってると思いますので起動して適当にお好きな音源を選択してください。この時実際にMIDIキーボードを叩いて音が出ることも忘れずに確認しておいてください。

あとは本能の赴くままにGetWildするだけ

$ node getwild.jsで実行してイントロをうまく弾ければリポジトリがpullされて開発が始められます。

最後に

Get Chance and Luck!!

32
12
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
12