テンポ調整した音楽でランニングのペースキープ!テンポ調整のマニアックな手法を紹介
価値ある情報をユーザー視点で発信するブログ
筆者は毎夜のランニングを今のところ続けられています。
目的は体力維持とダイエットです。
運動不足になりがちな生活であり、好きな
ランニングを続ける中で肝要なのは、数字によるフィードバックを受けるということです。
もくじ
iPhoneを腰に着け、ランニング中はRunkeeperというアプリでモニタリング、そしてロギングを行なっています。
走るペースを音声によるレポートでリアルタイムで把握するというのはペースのコントロールのために大事なことです。日々の記録を残す積み上げ感は、継続の糧になります。
ランニングを終え、入浴後には必ず体重計の上に乗り、日々の体重、体脂肪率等を記録に残します。体重計にはWithing Body+を使用。乗るだけでWebサービスに記録がアップロードされ、どこからでも参照ができるためとてつもなく便利です。
これを買う前は手動で記録していました。
体重・体脂肪率の増減はグラフとして描画でき、推移が分かるので、行動選択が自律的にできるようになります。
安全に夜間のランニングをするために、LEDライトを腰部に着けるようになりました。
一度暗闇の段差で転倒し、失ったものが大きかったので、転ばぬ先の杖で必ず点灯させています。
ランニングをしている間にはPodcastを聞いたり、音楽を聴いたりします。
聞いているPodcastは以下です。
走りながら聞いているといいインプットになるし、ランニングの時間が短く感じられます。
アプリは何年使っても一向に操作方法が分からないApple純正のPodcastアプリよりPocket Castsがおすすめです。
Podcastを聞くことに気乗りがしない場合は音楽を聴きます。ちょっと聴き方にこだわりがあって、自身が最適と思うBPM180にテンポを揃えて聴いています。
こうするととてつもなくランニングに興が乗り、1km走るのにかかる時間が自然と30秒以上短くなるほどです。
好きな曲で気持ちよくなって、ランニングしていることを忘れる瞬間すらあります。
さて、前置きが長くなり過ぎましたが、今回の本題に入ります。
上掲の記事で紹介した方法はいまだ有意性を維持しており、TrailMix ProはBPMを揃えた音楽をかけながらのランニングの素晴らしさを味わわせてくれるものですが、記事中でも書いている通り筆者は少々の不満を持っています。
テンポ合わせに使うアプリTrailMix Proの不満点は以下の通りです。
結果が悪い曲はプレイリストから外し、テンポ変更がうまくいく曲だけを残してプレイリストを組成すればいいし、それでも結構使える曲は残るのでこれまでそうしてきたのですが、こうした問題を抜本的に解決する方法を探ってみました。
上記の問題を全部解決する方法が見つかったので紹介します。
主に使用するのは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(上書き) |
これを次々と使っていけば、必要なことができるのが分かるでしょう。
これを組み込んで必要な処理をする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が自動でインストールされると思います。
引数として渡せる処理対象ファイルは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の指定はファイルをターミナルへドラッグ&ドロップでするのが簡単で、それを推奨です。
ドラッグ&ドロップするとinfileのパスが自動的に記入されます。
指定ファイルの現在のテンポは、指定しないとaubioによる自動判定で決定されますが、結構不正確なのでTapThatTempoというアプリを使って手動で計測し、計測したテンポを指定することをおすすめします。
こうすると確実な結果を得られます。
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にジャストのタイミングで接地するよう走っていると味わえる多幸感をぜひ体験してみてください。