Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
12
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@hoosoi

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

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!!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
12
Help us understand the problem. What are the problem?