アイリッシュで移調された曲を耳コピする方法

この記事では、移調された曲を元のキー(調)で耳コピする方法について解説します。具体的には、Macで使用できるGarageBandというソフトウェアを使用して、特定のキーで録音されたオーディオファイルから別のキーに変換(トランスポーズ)したオーディオファイルを作成する方法について解説します。

前置き:アイルランド音楽における移調

このようなケースの必要性は、アイルランド音楽の世界ではしばしば発生します。最もよくあるのが、C/G調が一般的な楽器であるコンサーティーナにおいて、B♭/F調の楽器を使用してレコーディングが行われた音源から耳コピを行いたいといったケースです。

B♭/Fの楽器は、C/Gの楽器に比べてすべての音が1音(半音2つ分)低くなっています。たとえばC/Gの楽器の指使いで、アイルランド音楽で一般的なGのキー(調号は♯1つ)の曲を覚えたとします。ここで楽器をB♭/Fに持ち替えると、同じ指使いで演奏される曲は1音下がったFのキー(調号は♭1つ)になります。

アーティストは音楽的な変化を狙って、このような1音下げの楽器でのレコーディングを行うことがしばしばあります。しかし、これをそのまま耳コピしてしまうと、アイルランド音楽のセッション(大勢での合奏)では問題が発生します。先の例で言うと、その曲の一般的なキーはあくまでGなのです。Fのキーでその曲を覚えてしまうと、他の人はそのキーでその曲を弾けない可能性が高いということです。

一般論として、アイルランド音楽において調号が「♯1つ」か「♯2つ」以外の曲のレコーディングを見つけた場合、その曲は音楽的な効果を狙って移調されている可能性が高いです。つまりその曲の一般的なキーは移調前の「♯1つ」か「♯2つ」である可能性があるということです(もちろん例外もあります)。そのような場合は、耳コピ前に thesession.org や tunepal などのアプリを併用して、その曲の一般的なキーを調べたほうがよいでしょう。

準備

移調された曲を耳コピするにあたって、用意するものは以下のものです。

  1. 曲が録音されたオーディオファイル(.mp3、.m4aファイル等)
  2. GarageBandがインストールされたMac

もしAppleMusicやSpotifyなどの定額聞き放題のサービスを利用している場合、曲のファイルが手元にない場合があります。その場合は定額聞き放題のサービスで曲をスピーカーから再生した音を何らかのデバイスで録音し、Macに転送するとよいでしょう。iPhoneの「ボイスメモ」アプリを利用して録音を行い、「AirDrop」機能を使用してMacに転送するなどの方法が考えられます。

なおこの記事では、2021年10月時点のMacOSおよびGarageBandの画面を使用して説明を行います。今後のバージョンアップなどによって細かな操作方法などが変更される可能性もありますので、あらかじめご了承ください。

移調したオーディオファイルの作成方法

では具体的な方法です。最初にMacからGarageBandを起動します。

GarageBandの起動画面

「空のプロジェクト」が選択された状態で、右下の「選択」をボタンを押下します。

「トラックのタイプを選択」画面

「トラックのタイプを選択」画面が表示されます。デフォルトで「マイクまたはライン入力を使って録音するか、オーディオファイルをドラッグ・アンド・ドロップします。」が選択されているので、そのまま右下の「作成」ボタンを押下します。

空のトラックが表示された画面

空のトラックの画面が表示されます。あらかじめ用意した元のキーのオーディオファイルを、画面右上の「オーディオ1」と表示されている領域にドラッグ・アンド・ドロップします。

オーディオファイルをインポートした画面

元の曲の波形が表示されます。ここで画面左上にある「ハサミのマーク」(エディタ)を選択します。

エディタのボタン

画面右下の領域にも波形が表示され、「逆再生」「タイムクオンタイズ」等の編集メニューが表示されます。

トラックの編集メニューの画面

編集メニューを下にスクロールすると、一番下に「トランスポーズ」という項目が現れます。

「トランスポーズ」の項目

「テンポとピッチに従う」をチェックした上で、「トランスポーズ」の値を調整します。この値は「半音いくつ分の移調を行うか」という意味です。たとえば「1音下げ」でレコーディングされた曲を元々の一般的なキーで耳コピしたい場合は、「1音上げ」すれば元のキーに戻るわけですから、「半音で2つ分プラスする」ということで、このトランスポーズに設定する値は「2」になります。

「トランスポーズ」の設定

これで移調前の元々のキーでオーディオが再生されるようになります。オーディオを再生するときは、画面上側にある「メトロノーム」(クリック)のボタンからメトロノームの音(クリック音)をOFFにしておきましょう。

メトロノームのボタン

画面上側のオーディオ操作パネルから再生ボタンを押し、移調前の元のキーで再生されていることを確認してください。

オーディオの操作パネル

変換したものをオーディオファイルとして保存するには、以下の「共有」メニューから「曲をディスクに書き出す」を選択してください。

「曲をディスクに書き出す」の項目

以上で移調されたオーディオファイルの作成は完了です。お疲れ様でした!

もう少しのヒント

Macでオーディオを再生する際、「QuickTime Player」を使用すると再生速度の変更を行うことができます。

「表示」メニューの「再生速度」から「1/2倍速」を選択してください。通常の半分の速度でオーディオが再生されるようになり、耳コピをより容易に行うことができるようになります。

今回の記事の内容としましては以上です。

Python で幾何平均を実装する

このページでは、Python で幾何平均(geometric mean)を実装する方法を示したいと思います。

幾何平均の数学的な定義については、Wikipedia の記事などを参考にしていただくとしましょう。さっそく実装を以下に示します。

def gmean(a_list):
	if len(a_list) == 0:
		return None
	loglist = [math.log10(x) for x in a_list]
	logavg = sum(loglist) / len(a_list)
	return math.pow(10, logavg)

以上にて gmean 関数が定義されます。幾何平均を求めたい値のリストを引数として渡してあげると、戻り値で幾何平均が返ってきます。

幾何平均を求める関数については、SciPy などのパッケージがインストールされていればそちらから利用することができますが、何らかの理由で自前で実装したい場合は上記のコードを利用するとよいでしょう。

バイナリファイルを cat する(od コマンド)

バイナリファイルの中身を cat したい(表示したい)場合、cat コマンドではなく od コマンドを使用します。

詳細は man od コマンドでマニュアルを表示できますが、一般的な使い方としては以下になります。

od -t x1 ファイル名

-t オプションで x1 と指定しているのは、出力フォーマットを「16進数の1バイトずつ」に指定するためです。これは od コマンドがデフォルトでは8進数で表示するコマンドであり、16進数のほうが普通の技術者にとっては読みやすいためです。

od コマンドは cat コマンドと同じく、標準出力にファイル内容が一気にすべて表示されますので、必要に応じて less コマンドや head / tail コマンドを併用するようにしましょう。

以下の例は、サンプルの jpeg ファイルの先頭を od コマンドと head コマンドで表示してみた様子です。

od -t x1 sample.jpeg | head
od コマンドの実行例

この記事の内容としましては以上です。

find と xargs の間に任意のコマンドを実行する (半角スペース対策)

Linux や Mac などでコマンドを使用する際、よく出てくるのが「find で抽出したファイル一覧に対して xargs で処理を行う」というケースです。

このとき発生するやっかいな問題が、パスの半角スペース問題です。問題の具体例と、解決策1、さらに改良した解決策2について見ていってみましょう。

なお、せっかちな方のために先に情報を述べておきます。解決策1は -print0 オプションと -0 オプションを使用する方法です。この方法を既にご存知で、find と xargs の間に任意のコマンドを実行したくて困っているという方は、後半の解決策2をご覧ください。

半角スペース問題とは

一番簡単な例として、「find でカレントディレクトリ以下のファイル一覧を出力して、xargs コマンドに wc -c コマンドを渡し、ファイルサイズ一覧を出力する」という例を考えてみます。以下のようなコマンドになります。

find . -type f | xargs wc -c
# 注意: パスに半角スペースが含まれると正常動作しない

しかし、これは注意書きにあるように、パスに半角スペースが含まれるとうまく動作しません。xargs が半角スペースを区切り文字としてみなしてしまうため、たとえば「test file.txt」というパスがあった場合、「test」と「file.txt」の2つのパスがあると認識してしまうためです。

解決策1: NULL文字の使用

一つ目の解決策として、find と xargs に「NULL文字を区切り文字とする(半角スペースを区切り文字としない)」という指示を与える方法があります。find コマンドは通常、改行コードで区切られて出力されますが、改行コードの代わりにNULL文字という目に見えない文字を使用するというものです。

NULL文字を区切り文字とするには、find コマンドに -print0 オプションを、xargs コマンドに -0 オプションをそれぞれ渡します。具体的には、以下のようなコマンドになります。

find . -type f -print0 | xargs -0 wc -c
# このコマンドは正常動作する

しかし、この方法には少し問題があります。find と xargs の2つのコマンドの間でやりとりされている入出力情報は、先述のとおりNULL文字で区切られるようになります。そのため、改行コードを利用する通常のコマンドが2つのコマンドの間で使用できなくなってしまうのです。

具体的なケースを見てみましょう。先のコマンドに対して、「拡張子が .txt のテキストファイルだけを grep して処理したい」という例を考えてみます。 以下のコマンドは動作するでしょうか。

find . -type f -print0 | grep .txt$ | xargs -0 wc -c
# 注意:このコマンドは正常動作しない

注意書きにもあるとおり、このコマンドは正常動作しません。grep コマンドはあくまで改行コードを区切りとして動作するものであり、区切り文字がNULL文字になってしまっている入力を処理できないからです。

解決策2: ダブルクォーテーションの使用

上記の問題を避けるのが、パスを1行ずつダブルクォーテーションで囲むという方法です。この方法では、先述したNULL文字を区切り文字として使用するオプションは使用しません。

解決策1と同じく、「カレントディレクトリ以下のファイルから、拡張子が .txt のテキストファイルだけを抽出して、wc -c でファイルサイズを表示する」という例を考えてみます。以下のコマンドを見てみましょう。

find . -type f | grep .txt$ | awk '{print "\"" $0 "\""}' | xargs wc -c
# このコマンドは正常動作する

find でファイル一覧を出力したあと、grep で拡張子が .txt のテキストファイルのみに絞っているところまでは分かりますね。次に使用するのが、文字列処理を行う awk コマンドです。

上記の awk コマンドによって、入力されたすべての行の先頭と末尾にダブルクォーテーションを付与して出力しています。このようにダブルクォーテーションを付与することで、xargs コマンドがパス中の半角スペースを区切り文字として解釈してしまう問題を回避できます。

find、grep、xargs の各部分を好きなコマンドに変えることで、あなたの行いたい処理を記述してみてください。たとえば次の例は、find で出力したディレクトリ一覧から grep で「src」という文字列の含まれるディレクトリを抽出し、ls でファイル一覧を表示させるというコマンドです。

find . -type d | grep src | awk '{print "\"" $0 "\""}' | xargs ls

今回の記事の内容としましては以上です。

Dropbox上のファイルを丸ごとバックアップするには

Dropbox は信頼のおけるクラウドサービスですが、それでも自分でファイルをバックアップしておきたいと考える方もいると思います。今回は Dropbox のファイルを外付けHDD/SSD等のメディアにバックアップする方法について考えてみたいと思います。

考えられる方法

Dropbox のファイルを外付けメディアにバックアップする方法としては、以下の3つが考えられます。

  1. 手動ですべてのファイルをコピーしてペーストする
  2. robocopy や rsync といった専用コマンドを使用する
  3. 外付けメディア上に仮想マシンを構築する

1は最初に思いつく方法ですね。Windows ならばエクスプローラから、Mac ならば Finder から、すべてのファイルをまるごとコピーして、外付けメディア上に貼り付けるだけです。

しかしこの方法、少し欠点があります。ファイルを毎回すべてコピーするので、非常に時間がかかるという点です。

実はこういう場合に備えて、Windows にも Mac にも、ちゃんと専用のコマンドが用意されています。Windows ならば robocopy コマンド、Mac ならば rsync コマンドです。次に具体的な方法を見ていっていましょう。

方法2-1:Windows で robocopy コマンドを使用する

まずは Windows の場合です。画面左下、スタートメニューのボタンの横にある「ここに入力して検索」と出ている検索ウィンドウに「コマンド プロンプト」と入力をして、コマンドプロンプトの画面を開きます。

Dropbox のディレクトリがC:\Users\my_username\Dropbox\で、バックアップ先のメディアのディレクトリはD:\Backup\だとしましょう。その場合、コマンドプロンプトの画面に以下のコマンドを打ち込んで Enter キーを押します。

robocopy C:\Users\my_username\Dropbox\ D:\Backup\ /MIR /NOCOPY

このとき、ディレクトリ名の順番を逆にしてしまうと大変なことになるので注意しましょう! Dropbox のディレクトリが、空っぽのバックアップディレクトリの内容で上書きされてしまいます。

毎回バックアップするたびにコマンドを打ち込むのは面倒なので、初回に打ち込んだコマンドをメモ帳にコピーして、backup.bat などのファイル名で保存しておくとよいでしょう。次回から backup.bat をダブルクリックするだけで実行できるようになります。

方法2-2:Mac で rsync コマンドを使用する

次に Mac の場合です。command + スペースバーを押して、Spotlight 検索のウィンドウを開き、「terminal」と検索してターミナルを開きます。

Dropbox のディレクトリが「/Users/my_username/Dropbox/」、バックアップ先のメディアは「/Volumes/MY_SSD/backup/」だとしましょう。その場合、ターミナルの画面に以下のコマンドを打ち込んで Enter キーを押します。

rsync -av --delete /Users/my_username/Dropbox/ /Volumes/MY_SSD/backup/

このときも Windows の場合と同じで、ディレクトリ名の順番を逆にしてしまうと大変なので、よく注意しましょう。

なおディレクトリ名の文字列が分からない場合は、Finder からターミナルにフォルダアイコンをそのままドラッグ&ドロップすると、該当するフォルダのディレクトリ名が出てきます。

ちなみにターミナルを開いた状態ではデフォルトでホームディレクトリが開かれていますが、Dropbox のディレクトリはその直下にいると思います。ターミナルを開いた直後の状態から、以下のコマンドでディレクトリ名を表示させてあげるとよいでしょう。

cd Dropbox
pwd

Windows の場合と同じく、実行したコマンドは2回目以降のバックアップのために、backup.sh などのファイル名でファイルに保存しておくとよいでしょう。Mac のターミナルでは vi などのコマンドでテキストファイルを編集・保存できますが、vi の使い方などは別途検索してみてください。

backup.sh を作成したら、以下のコマンドで実行権限を与えることもお忘れなく。

chmod u+x backup.sh

以上が方法2の robocopy および rsync を利用した方法です。次に、方法3を見てみます。

方法3:外付けメディア上に仮想マシンを構築する

実は方法2にはひとつだけ欠点があります。Dropbox のヘビーユーザーの場合、選択型同期の機能を使用して容量の大きいファイルなどをローカルに保存していないケースがありますが、その選択型同期で除外されたファイルは robocopy や rsync のコマンドではコピーされないのです。

方法3はこれを解決するために私が思いついた方法です。それは以下のような方法です。

  1. 仮想マシンのツールである VirtualBox をインストールする
  2. VirtualBox で外付けメディア上に Ubuntu 等の Linux マシンを構築する
  3. 構築した仮想マシンに Dropbox をインストールし、すべてのファイルを同期させる

少々強引な方法ですが、これで全ファイルのバックアップが外付けメディア上に取れることになります。ときどき仮想マシンを起動させてあげれば、その時点でのバックアップが自動的に行われます。

誤削除してしまったファイルを復元したい場合など、何か問題が発生したときには、ネットワーク接続を切った状態で仮想マシンを立ち上げることで、最後にバックアップを行った状態を復元することができます。

仮想マシンのインストール方法などは別途検索を行ってください。ここまでやりたいヘビーユーザーの方なら、おそらくそれほど難しくはないでしょう。

注意点として、VirtualBox の仮想ドライブのファイル(.vdi ファイル)を作成するときには、Dropbox の契約している容量の上限+αのサイズで作成しましょう。「可変サイズ」を選択すると、初期設定した容量がいっぱいになったときに自動的に容量を拡張してくれるように思えますが、そうではありません。「可変サイズ」とは、.vdiファイル本体のサイズが実際のディスク使用量に合わせて増えていくというだけで、ディスク容量の上限のサイズはあくまで初期設定したサイズになります。

今回の記事の内容としては以上になります。