アップデート8
サービスにトラックをアップロードする必要があり、RekordBox 3の新しいリリースを見ることに不満があるオフラインのアプローチとより細かい解決策をもう一度検討することにしました:D
まだ非常にアルファ状態にありますが、有望に聞こえます:
ジョニック-グッドタイム
対数目盛もパレット調整もないことに注意してください。周波数からHSLへの生のマッピングのみです。
アイデア:波形レンダラーに、特定の位置の色を照会するカラープロバイダーが追加されました。上に表示されているものは、その位置の隣の1024サンプルのゼロ交差率を取得しています。
明らかに、堅牢なものになるまでにやるべきことがまだたくさんありますが、それは良い道のようです...
RekordBox 3から:
アップデート7
Update 3のように、私が採用する最後のフォーム
(カラー間のスムーズな移行を実現するために少しPhotoshopされています)
結論は、私は数ヶ月前だったが、それが悪いと思ってその結果を考慮しなかったX)
アップデート6
最近プロジェクトを発掘したので、ここで更新することを考えました:D
曲:シック-グッドタイムズ2001(ストーンブリッジクラブミックス)
IMOの方がはるかに優れており、ビートは一定の色などを持ちますが、最適化されていません。
どうやって ?
まだhttp://developer.echonest.com/docs/v4/_static/AnalyzeDocumentation.pdf(ページ6)
各セグメントについて:
public static int GetSegmentColorFromTimbre(Segment[] segments, Segment segment)
{
var timbres = segment.Timbre;
var avgLoudness = timbres[0];
var avgLoudnesses = segments.Select(s => s.Timbre[0]).ToArray();
double avgLoudnessNormalized = Normalize(avgLoudness, avgLoudnesses);
var brightness = timbres[1];
var brightnesses = segments.Select(s => s.Timbre[1]).ToArray();
double brightnessNormalized = Normalize(brightness, brightnesses);
ColorHSL hsl = new ColorHSL(brightnessNormalized, 1.0d, avgLoudnessNormalized);
var i = hsl.ToInt32();
return i;
}
public static double Normalize(double value, double[] values)
{
var min = values.Min();
var max = values.Max();
return (value - min) / (max - min);
}
明らかに、ここに到達する前にさらに多くのコードが必要です(サービスへのアップロード、JSONの解析など)が、これはこのサイトのポイントではないため、上記の結果を得るために関連するものを投稿しています。
したがって、分析結果の最初の2つの関数を使用しています。確かに、他にも処理する必要がありますが、まだテストする必要があります。上記よりもクールなものが見つかったら、ここに戻って更新します。
いつものように、このトピックに関するヒントは大歓迎です。
アップデート5
調和級数を使用した勾配
カラースムージングは比率に敏感です。
アップデート4
0.08と0.02の値を持つアルファベータフィルターを使用して、ソースとスムージングされたカラーで発生するカラーリングを書き直しました。
ズームアウトすると少し良くなる
次のステップは素晴らしいカラーパレットを手に入れることです!
アップデート3
黄色は媒体を表します
まだズームされていないときはそれほど良くありません。
(パレットにはいくつかの深刻な作業が必要です)
アップデート2
ピシェネットからの2番目の「音色」係数ヒントを使用した予備テスト
アップデート1
EchoNestサービスからの分析結果を使用した予備テストです。うまく調整されていない(私のせい)ことに注意してください。ただし、上記のアプローチよりも一貫性があります。
この素晴らしいAPIの使用に興味がある人は、ここから始めてください:http : //developer.echonest.com/docs/v4/track.html#profile
また、これらの波形は3つの異なる曲を表しているため、これらの波形と混同しないでください。
最初の質問
これまでのところ、これは256サンプルのFFTを使用して各チャンクのスペクトル重心を計算した結果です。
計算の生の結果
いくつかのスムージングが適用されました(フォームを使用すると、見た目がはるかに良くなります)
生成される波形
理想的には、これは次のようになります(Serato DJソフトウェアから取得)。
平均的な周波数が時間とともに変化するときに、オーディオを分割するために使用できるテクニック/アルゴリズムを知っていますか?(上の画像のように)
spectral_centroid
コードを見てください。私が本当に欲しいのは、オーディオスペクトルをカラースペクトルにマップすることです。これにより、低周波数は赤、高周波数は青、両方の組み合わせはマゼンタ、中間周波数は緑、ログスイープは虹、ホワイトノイズは白、ピンクノイズはピンクで、レッドノイズはレッドです。一方のスペクトルは線形で、もう一方はログであるため、方法を理解できません。:) flic.kr/p/7S8oHA