No.1905 PURE PHRASE
タグ : / 解いたユーザー数 89
作問者 : hitonanode / テスター : Sumitacchan
問題文
サンプリングレート $44100~\mathrm{Hz}$ で記録された長さ $N = 44100$ (すなわち $1$ 秒間)の音の波形 $\mathbf{A} = [A_1, \dots, A_{N}]$ が与えられます.すなわち,$A_i$ $(1 \le i \le N)$ は時刻 $i / N \ \mathrm{[sec]}$ における信号の変位です. この信号は,何らかの楽器を模した演奏音の $1$ 秒間を切り出したもので,音の高さは C4
, D4
, E4
, F4
, G4
, A4
, B4
のいずれかです.なお,それぞれの音の基本周波数は順に 261.6
, 294.3
, 327.0
, 348.8
, 392.4
, 436.0
, 490.5
$\mathrm{Hz}$ と本問では仮定してよいです(基本周波数に関してはサンプルの説明文もご参照ください).どの高さの音が鳴っているかを判別し,答えを出力してください.
備考
本問題のテストケースの作成方法は本ページの末尾に記載しました.
入力
$N$ $A_1\ A_2 \ \dots \ A_N$
- $N = 44100$
- $-32768 \le A_i \le 32767$ $(i = 1, \dots, N)$
- 入力は全て整数
出力
答えとなる文字列(C4
, D4
, E4
, F4
, G4
, A4
, B4
のいずれか一つ)を出力してください.最後に改行してください.
サンプル
本問題は小さい入力データが提供できないため,サンプルデータを GitHub Gist 上に用意しました.お手数ですがこちらのリンクより適宜ダウンロードしてご利用ください.サンプル1
入力
出力
C4
Trumpet
による C4
の音です.
なお,サンプル1の波形データの冒頭を波形解析ソフトで図示したのが以下のものです(以下,図の横軸の単位は秒です).
これを観察すると,類似した波形が約 $0.0038$ 秒周期で繰り返されていることが見てとれます.この周期の逆数をとると,この波形が $1$ 秒間に約 $260$ 回現れることが分かります.これは
C4
の音の基本周波数が約 $261.6 \mathrm{Hz}$ であることに対応しています.波形(数列)全体を約 $N / 261.6$ 要素だけ前後にシフトさせてもデータの様子はあまり変化しない,というのが入力の特徴です.
サンプル2
入力
出力
D4
Pan Flute
による D4
の音です.なお波形は以下の通りです.
これを観察すると、$0.0034$ 秒周期で類似の波形が繰り返されていることが見てとれます.この逆数をとると約 $294 \mathrm{Hz}$ で,これはおおむね
D4
の基本周波数と一致しています.
サンプル3
入力
出力
E4
Recorder
による E4
の音です.波形は以下の通りです.
補足:テストケースの作成方法について
本問で提出コードの判定に用いられるテストケースは以下の方法で作成されています.
- DAWソフトウェア Cakewalk by BandLab 上でソフトウェアシンセサイザー Cakewalk TTS-1 を使用し,
C4
,D4
,E4
,F4
,G4
,A4
,B4
いずれかの単音を 8 秒間鳴らす wav ファイルを作成する.音色はプリセットに用意されたHarmonica
,Violin
,Trumpet
,Shakuhachi
,Pan Flute
,Alto Sax
,Church 1
,Recorder
を使用した.Wav 信号のフォーマットはサンプリングレート $44100~\mathrm{Hz}$, ビット深度は $16$ bit とした.その他ピッチを微調整したが,それ以外の設定は基本的にデフォルトのものから変更していない. - 作成した wav ファイルから,ちょうど $1$ 秒分の長さの連続した区間を切り出し,テストケースの入力とする.切り出す位置は作問者によって恣意的に定められた可能性がある.
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。