LoginSignup
37
10

More than 5 years have passed since last update.

GolangでGetWildの'89バージョンを演奏する

Last updated at Posted at 2016-12-01

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

概要

  • 89バージョンやライブの小室さんみたいにGetWildをサンプリングしたい
  • でもシンセがない
  • 君にはterminalがあるじゃないか

サンプリングに必要な音源をゲットしよう

  • 私はMacなのでGarageBandで元音源から必要な部分だけ抽出しました
  • 全部で2個。
    • /tmp/de-dende-den.mp3 : デーデン!デーデン!の部分(0:21~0:22)
    • /tmp/get_wild_and_tough.mp3 : ゲッワイエンターフ!の部分(1:01〜1:04)

itunesの簡易プレイリストを消去しよう

  • 音源再生時、itunesが立ち上がる人もいるでしょう。
  • その場合、簡易プレイリストがあると、
    「再生を開始します。以前、次はこちらに追加した5曲を消去してもよろしいですか?」
    とポップアップが出て、連続してゲッワイエンターフ!を流すことができません
  • 画像の通り、一旦削除しましょう

スクリーンショット 2016-11-01 14.41.02.png

golangのインストール

  • 今回はgolangで実装します
  • ネットで見てインストールしましょう

コードを書く

  • シグナルハンドリングを活用してみます。
sampling.go
package main

import (
    "fmt"
    "os"
    "os/exec"
    "os/signal"
    "syscall"
)

func main() {
    signal_chan := make(chan os.Signal, 1)
    signal.Notify(signal_chan,
        syscall.SIGINT,
        syscall.SIGQUIT,
        syscall.SIGTERM,
        syscall.SIGKILL)

    var exit_code int

loop:
    for {
        s := <-signal_chan
        switch s {
        case syscall.SIGINT:
            // `$ open -g`でitunesを立ち上げるが、最前面に表示させないようにしてます
            exec.Command("open", "-g", "/tmp/de-dende-den.mp3").Start()

        case syscall.SIGQUIT:
            exec.Command("open", "-g", "/tmp/get_wild_and_tough.mp3").Start()

        case syscall.SIGTERM:
            fmt.Println("\n\n何も こわくはない")
            exit_code = 0
            break loop

        case syscall.SIGKILL:
            fmt.Println("\n\nきっと 強くなれる")
            exit_code = 0
            break loop

        default:
            fmt.Println("\n\nGet Wild And Tough...")
            exit_code = 1
            break loop
        }
    }
    os.Exit(exit_code)
}

実践

# buildしたほうが、TERM送った時のメッセージが表示されます
# せっかくなのでbuildしましょう
$ go build sampling.go

# 実行
$ ./sampling

ctrl + c = デーデン!デーデン!
ctrl + 4 = ゲッワイエンターフ!
閉じる時 = `psコマンド`でプロセスIDを調べ、kill -9でプロセスkillしちゃってください

最後に

  • これで君もTKだ!
37
10
2

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
37
10