ひとりぶろぐ

価値ある情報をユーザー視点で発信するブログ

テンポ調整した音楽でランニングのペースキープ!テンポ調整のマニアックな手法を紹介

   

Introducing the maniacal method of tempo adjustment 00000

筆者は毎夜のランニングを今のところ続けられています。

目的は体力維持とダイエットです。

運動不足になりがちな生活であり、好きな野歩のあるきにいつでも行ける体力を維持することは、筆者の人生にとって重要だからです。

ランニングを続ける中で肝要なのは、数字によるフィードバックを受けるということです。

アプリはRunkeeperを利用

iPhoneを腰に着け、ランニング中はRunkeeperというアプリでモニタリング、そしてロギングを行なっています。

走るペースを音声によるレポートでリアルタイムで把握するというのはペースのコントロールのために大事なことです。日々の記録を残す積み上げ感は、継続の糧になります。

WiFi体重計で体重・体脂肪率をワンアクションで記録

ランニングを終え、入浴後には必ず体重計の上に乗り、日々の体重、体脂肪率等を記録に残します。体重計にはWithing Body+を使用。乗るだけでWebサービスに記録がアップロードされ、どこからでも参照ができるためとてつもなく便利です。

これを買う前は手動で記録していました。

体重・体脂肪率の増減はグラフとして描画でき、推移が分かるので、行動選択が自律的にできるようになります。

LEDライトで安全を確保

The story of how i injured myself while running at night and sought out an led light for safety 00010

安全に夜間のランニングをするために、LEDライトを腰部に着けるようになりました。

一度暗闇の段差で転倒し、失ったものが大きかったので、転ばぬ先の杖で必ず点灯させています。

Podcastでランニング中にインプット

ランニングをしている間にはPodcastを聞いたり、音楽を聴いたりします。

聞いているPodcastは以下です。

走りながら聞いているといいインプットになるし、ランニングの時間が短く感じられます。

アプリは何年使っても一向に操作方法が分からないApple純正のPodcastアプリよりPocket Castsがおすすめです。

テンポを揃えた音楽でペースをブースト

Podcastを聞くことに気乗りがしない場合は音楽を聴きます。ちょっと聴き方にこだわりがあって、自身が最適と思うBPM180にテンポを揃えて聴いています。

こうするととてつもなくランニングに興が乗り、1km走るのにかかる時間が自然と30秒以上短くなるほどです。

好きな曲で気持ちよくなって、ランニングしていることを忘れる瞬間すらあります。

ランニングのための音楽のテンポ調整環境を向上させる

さて、前置きが長くなり過ぎましたが、今回の本題に入ります。

上掲の記事で紹介した方法はいまだ有意性を維持しており、TrailMix ProはBPMを揃えた音楽をかけながらのランニングの素晴らしさを味わわせてくれるものですが、記事中でも書いている通り筆者は少々の不満を持っています。

テンポ合わせに使うアプリTrailMix Proの不満点は以下の通りです。

  1. テンポの自動認識が連続的に行なわれるため、1曲の中でテンポが変動してしまう
    • 曲の冒頭などで拍の感覚が薄い前奏があるとテンポが乱れてしまいます。そういう曲はプレイリストから外さざるを得なくなってしまいます
  2. テンポの自動認識がうまくいかない場合がある
    • 何らかの理由でテンポの自動認識がうまくいかず、変更後のテンポが指定のものにならないことがあります。そういう曲はプレイリストから外さざるを得なくなってしまいます
  3. 設定したテンポは全部に適用され、曲ごとに変えたりができない
    • BPM180に揃えることにすると、プレイリスト中の曲を全部それに統一することになるため、例えばBPM90の曲があると2倍速になり聞くに耐えなくなってしまいます。この場合はBPM90が指定できれば拍の取り方を変えるだけで使えるのに、やはりプレイリストから外さざるを得なくなってしまいます

結果が悪い曲はプレイリストから外し、テンポ変更がうまくいく曲だけを残してプレイリストを組成すればいいし、それでも結構使える曲は残るのでこれまでそうしてきたのですが、こうした問題を抜本的に解決する方法を探ってみました。

タイムストレッチャーrubberbandを中心にテンポ変更環境を作る

上記の問題を全部解決する方法が見つかったので紹介します。

  1. テンポの自動認識が連続的に行なわれるため、1曲の中でテンポが変動してしまう
    • →テンポの変更率を1曲の中で固定で適用する
  2. テンポの自動認識がうまくいかない場合がある
    • →テンポの自動認識がうまくいかない場合は手動で計測し、それを採用する
  3. 設定したテンポは全部に適用され、曲ごとに変えたりができない
    • →BPM180を基準とする場合、ゆっくりな曲は半分のBPM90でテンポ調整をする

主に使用するのはrubberbandというソフトウェアです。

これでテンポ変更ができます。コマンドラインツールとして使えるので、これを組み込んで必要な処理ができるようにしてみました。

同種のものにSoundStretchというものがありますが、rubberbandの方が音質がいいです。

TrailMix Proは元データをいじらず、再生時にテンポ変更するだけですが、今回検討した方法は元データをいじってしまうというものです。

そのほかの登場人物(コマンドラインツール)は以下の通りです。

コマンド 役目 使い方
rubberband テンポ変更 rubberband –tempo 123:180 infile.wav outfile.wav
aubio テンポ自動認識 aubio tempo infile.wav
lame mp3をwavに変換 lame –decode infile.mp3 outfile.wav
afconvert m4aをwavに変換 afconvert -f WAVE -d LEI24 infile.m4a outfile.wav
normalize ボリュームを揃える normalize infile.wav(上書き)

これを次々と使っていけば、必要なことができるのが分かるでしょう。

TempoAligner.py

これを組み込んで必要な処理をするPython3スクリプトを書いてみました。macOSで使うことを想定しています。

インストール

Homebrewをインストールします。

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

HomebrewでPython3をインストールします。

brew install python3

ダウンロードし、解凍して得た TempoAligner.py をアプリケーションフォルダに入れ、実行権を付け、実行します。アプリケーションフォルダに入れるのが気に入らない人は好きなところに移してください。

chmod +x /Applications/TempoAligner.py
/Applications/TempoAligner.py

すると必要なrubberband、aubio、lame、normalizeが自動でインストールされると思います。

TempoAligner.pyの使い方

引数として渡せる処理対象ファイルはmp3、もしくはm4aです。

実行方法 処理対象ファイル 指定ファイルの現在のテンポ 変更後のテンポ
/Applications/TempoAligner.py infile.mp3 infile.mp3 aubioによる自動判定 180(デフォルト適用)
/Applications/TempoAligner.py infile.mp3 123 infile.mp3 123 180(デフォルト適用)
/Applications/TempoAligner.py infile.mp3 123 170 infile.mp3 123 170

infileの指定はファイルをターミナルへドラッグ&ドロップでするのが簡単で、それを推奨です。

Introducing the maniacal method of tempo adjustment 00001

ドラッグ&ドロップするとinfileのパスが自動的に記入されます。

Introducing the maniacal method of tempo adjustment 00002

指定ファイルの現在のテンポは、指定しないとaubioによる自動判定で決定されますが、結構不正確なのでTapThatTempoというアプリを使って手動で計測し、計測したテンポを指定することをおすすめします。

Introducing the maniacal method of tempo adjustment 00003

こうすると確実な結果を得られます。

TempoAligner.py を実行した結果、変更後のテンポ、変更後のテンポの1/2のテンポに調整されたファイルができます。

01 チュワパネ!_BPM180.wav: +28.03%
01 チュワパネ!_BPM90.wav: -35.98%

それぞれに変更率が付記され表示されるので、どちらがオリジナルのテンポに近いかが判断できます。この曲はBPM144で、180に合わせるにも90に合わせるにも30%程度変更する必要があって結構厳しい曲です。

どっちを採用するかは実際に聴いてみて決めるといいでしょう。

再生環境

生成したファイルを手動で選別して採用する方を決める工程が入るため、TempoAligner.pyでは元のmp3などへエンコードすることまではやっていません。

必要があればエンコードをすることになりますが、筆者は面倒なのでwavのままiPhoneに転送して再生しています。

筆者が再生に使っているのはVLC for Mobileです。

転送したwavでプレイリストが作成でき、バックグラウンドで再生できるのでこれで困っていません。

「ネットワーク>WiFi経由で共有」をオンにするとWebブラウザへのwavファイルのドラッグ&ドロップで転送できるので手軽です。

ここまで書いておいて何ですが

これを実際に利用する人はいないことでしょう。

それは分かった上で、筆者が自分のために書いたメモのようなものです。

普通の人はアプリTrailMix Proを利用すれば十分なはずです。

曲のBPMにジャストのタイミングで接地するよう走っていると味わえる多幸感をぜひ体験してみてください。

 - iPhone, Mac, 健康