0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

watnowAdvent Calendar 2023

Day 9

Spotify APIでのkeyとmodeを対応付けて出力してみた!

Last updated at Posted at 2023-12-09

はじめに

初めまして。Qiita初投稿で不慣れにつき、読みにくい箇所があるとは思いますが、よろしくお願いいたします!!

Spotify APIについて

Spotify APIでは様々な値を取得することができます。
例えば、曲全体の印象を数値で表したaudio_featuresではその曲がどれくらいアコースティックなのかを表すacousticness、その曲がどれだけ踊れる楽曲なのかを表すdanceabilityといったようなものがあります。

詳しくはこちらの記事をご参照ください。めっちゃわかりやすくまとめてくださっています。
PythonでSpotify API [audio_features編]

なにをしたいのか

その中で、keyでは曲のキーを取得することができるのですが、これが0 = C, 1 = C♯/D♭, 2 = D...のように対応付けられています。また、modeではMajorが1で、minorが0に割り振られています。雰囲気的には、Majorが明るい感じで、minorが暗い感じの楽曲のことです。

これらが数値で表されているのがどうも直感的に理解することが難しいなーっていうことでこれらを対応させたコードを書いてみました。

実装

以前Spotify APIを触ってた時にPythonを使用していたため、今回もPythonで書くことに。

python
def key_and_mode(key, mode):
    key_names = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B']
    mode_names = ['minor', 'Major']

    key_name = key_names[key]
    mode_name = mode_names[mode]

    return f"{key_name}{mode_name}"

これでkeyとmodeを対応付けることに成功しました。

たとえばkey = 4, mode = 0というふうに指定してみたときの出力結果はこちら。

Eminor

表示されてほしいように出力させることができました。

本当は。。。

本当はSpotify APIをごりごりいじって入力された曲に対して似ている曲を出力したかったのですが、リクエスト制限がかかってしまって期限内に記事の投稿ができなさそうだったので、諦めましたorz

Spotifyをもとに似ている曲を表示してくれるサイトmusicstaxを覗いた感じ、入力曲に対してtempo, roudness, danceabilityを重視しているようでした。

しかし、曲調を特徴づけるためにkeyとmodeは外せないでしょ!と思っているので(異論は認めます)、指定したプレイリストの範囲から条件に合った曲(=似ている曲)を表示できるようにさせたいなーと思っています。

おわりに

今回は、やりたかったことの1割にも満たないくらいの準備段階の関数を作成してみました。

数値だけで直感的な理解がしづらいというところに少しストレスがあったため、今後は作成した関数をインポートすることで解消できそうです。

いずれちゃんと、納得のいく似ている曲の表示ができるようになっていたいなあ。。。

稚拙な文章だったかとは思いますが、最後まで見てくださってありがとうございました!!

最後に、参考にさせていただいた記事とmusicstaxのリンクをもう一度貼っておきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?