3
1

More than 1 year has passed since last update.

山下達郎「DAYDREAM」をMatplotlibで視覚化する

Posted at

はじめに

最近(2023年7月)、巷間を賑わせている山下達郎さんですが、 1980年発表のアルバム「RIDE ON TIME」所収の「DAYDREAM」という曲があります。
(作詞:吉田美奈子 作曲;山下達郎)

作詞の際に、アクリルカラーチャートを見ながら、色の名前をメロディに当てはめていった、というエピソードが示す通り、実に色彩感覚に溢れた楽曲となっております。

私は以前にどこかで、この楽曲について「1番から3番へと歌詞に進むに従って、暗い色から明るい色へとグラデーションしている」という指摘をするコメントを読んで感心したのですが、曲を聞きしなに思い描いてみてはいたものの、実際にどのような色が登場しているのかが、少し気になっていたところでした。

そこで、甚だ不粋ではありますが、Matplotlibの練習を兼ねて、グラフィックで表現できないか、と思い立ち、チャレンジしました。

目的

matplotlibおよびpythonへの理解を深める
「DAYDREAM」の色彩感を視覚化する

挑戦

そもそも”アクリルカラーチャート”とは何か?

色を掛け合わせた見本表のことを言うようで、私は勝手に統一のものがあると思い込んでいたところ、 そういうものでもなさそうで、つまり吉田美奈子さんが見ていたカラーチャートがわからない限り、完全に一致させることはできないということになり、早速行き詰まってしまいましたが、結局「歌詞中の色名+hexdigits」で検索し、ヒットしない色(ココブラウン、メタリックなど)も、強引に色を確定させました。
色一覧/クリックで展開 スカーレット #FF2400
グラスグリーン #228B22
バイオレット #EE82EE
ショックピンク #FC0FC0
ローズグレー #A78F8D
ペールブルー #AFEEEE
ワインレッド #633142
カーマイン #960018
ココブラウン #35281E
イエロー #FFF200
チェリー #CC252C
ダークオレンジ #FF8C00
シルバー #C0C0C0
メタリック #EEEEEE
カッパー #B87333
プラチナ #E5E4E2
キャンディー #E0A2B4
ブライトゴールド #FFDB51
Matplotlibの使い方は公式チュートリアルを参照しました。

daydream1.py/クリックで展開
daydream1.py
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

scarletx, scarlety = np.random.randn(2, 50) 
grassgreenx, grassgreeny = np.random.randn(2, 50)
violetx, violety = np.random.randn(2, 50)
shockpinkx, shockpinky = np.random.randn(2, 50)
rosegreyx, rosegreyy = np.random.randn(2, 50)
palebluex, palebluey = np.random.randn(2, 50)
wineredx, wineredy = np.random.randn(2, 50) 
carminex, carminey = np.random.randn(2, 50)
cocoabrownx, cocoabrowny = np.random.randn(2, 50)
yellowx, yellowy = np.random.randn(2, 50)
cherryx, cherryy = np.random.randn(2, 50)
darkorangex, darkorangey = np.random.randn(2, 50)
silverx, silvery = np.random.randn(2, 50) 
metalicx, metalicy = np.random.randn(2, 50)
copperx, coppery = np.random.randn(2, 50)
platinumx, platinumy = np.random.randn(2, 50)
candyx, candyy = np.random.randn(2, 50)
brightgoldx, brightgoldy = np.random.randn(2, 50)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(5, 5)) 
ax1.scatter(scarletx,scarlety,facecolor='#FF2400')
ax1.scatter(grassgreenx,grassgreeny,facecolor='#228B22')
ax1.scatter(violetx,violety,facecolor='#EE82EE')
ax1.scatter(shockpinkx,shockpinky,facecolor='#FC0FC0')
ax1.scatter(rosegreyx,rosegreyy,facecolor='#8B6E6B')
ax1.scatter(palebluex,palebluey,facecolor='#AFEEEE')

ax2.scatter(wineredx,wineredy,facecolor='#633142')
ax2.scatter(carminex,carminey,facecolor='#FF0033')
ax2.scatter(cocoabrownx,cocoabrowny,facecolor='#35281E')
ax2.scatter(yellowx,yellowy,facecolor='#FFD500')
ax2.scatter(cherryx,cherryy,facecolor='#CC252C')
ax2.scatter(darkorangex,darkorangey,facecolor='#FF8C00')

ax3.scatter(silverx, silvery,facecolor='#C0C0C0')
ax3.scatter(metalicx, metalicy,facecolor='#EEEEEE')
ax3.scatter(copperx, coppery,facecolor='#B87333')
ax3.scatter(platinumx, platinumy,facecolor='#E5E4E2')
ax3.scatter(candyx, candyy,facecolor='#E0A2B4')
ax3.scatter(brightgoldx, brightgoldy,facecolor='#FFDF01')

plt.show()

結果

daydream_1.png

左の図からそれぞれ1番、2番、3番の歌詞に登場する色で分かれています。

daydream2.py/クリックで展開
daydream2.py
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np

scarletx, scarlety = np.random.randn(2, 50)  
grassgreenx, grassgreeny = np.random.randn(2, 50)
violetx, violety = np.random.randn(2, 50)
shockpinkx, shockpinky = np.random.randn(2, 50)
rosegreyx, rosegreyy = np.random.randn(2, 50)
palebluex, palebluey = np.random.randn(2, 50)
wineredx, wineredy = np.random.randn(2, 50) 
carminex, carminey = np.random.randn(2, 50)
cocoabrownx, cocoabrowny = np.random.randn(2, 50)
yellowx, yellowy = np.random.randn(2, 50)
cherryx, cherryy = np.random.randn(2, 50)
darkorangex, darkorangey = np.random.randn(2, 50)
silverx, silvery = np.random.randn(2, 50) 
metalicx, metalicy = np.random.randn(2, 50)
copperx, coppery = np.random.randn(2, 50)
platinumx, platinumy = np.random.randn(2, 50)
candyx, candyy = np.random.randn(2, 50)
brightgoldx, brightgoldy = np.random.randn(2, 50)

fig, (ax1, ax2, ax3) = plt.subplots(1, 3, figsize=(5, 5), layout='constrained') 

ax1.plot(scarletx, scarlety, lw=1, c='#FF2400')
ax1.plot(grassgreenx,grassgreeny,lw=1,c='#228B22')
ax1.plot(violetx,violety,lw=1,c='#EE82EE')
ax1.plot(shockpinkx,shockpinky,lw=1,c='#FC0FC0')
ax1.plot(rosegreyx,rosegreyy,lw=1,c='#8B6E6B')
ax1.plot(palebluex,palebluey,lw=1,c='#AFEEEE')

ax2.plot(wineredx,wineredy,lw=1,c='#633142')
ax2.plot(carminex,carminey,lw=1,c='#FF0033')
ax2.plot(cocoabrownx,cocoabrowny,lw=1,c='#35281E')
ax2.plot(yellowx,yellowy,lw=1,c='#FFD500')
ax2.plot(cherryx,cherryy,lw=1,c='#CC252C')
ax2.plot(darkorangex,darkorangey,lw=1,c='#FF8C00')

ax3.plot(silverx, silvery,lw=1,c='#C0C0C0')
ax3.plot(metalicx, metalicy,lw=1,c='#EEEEEE')
ax3.plot(copperx, coppery,lw=1,c='#B87333')
ax3.plot(platinumx, platinumy,lw=1,c='#E5E4E2')
ax3.plot(candyx, candyy,lw=1,c='#E0A2B4')
ax3.plot(brightgoldx, brightgoldy,lw=1,c='#FFDF01')

plt.show()

結果

daydream_2.png

歌詞に倣って”細い糸”バージョン

気づいたこと

並べてみたところ、 ”歌詞が進むに連れて、暗→明”と言うより、
1番→寒色系 2番→暖色系 3番→白っぽい(明度が高い)
と言う傾向があるようでした。

これは、たまたま上記チュートリアル内のカラーバーを見て、気づいたことでした。

colorbar.py/クリックで展開
colorbar.py
import matplotlib as mpl
import matplotlib.pyplot as plt

fig, axcb1 = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)
cmap = mpl.cm.cool
norm1 = mpl.colors.Normalize(vmin=5, vmax=10)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm1, cmap=cmap),
             cax=axcb1, orientation='horizontal', label='cool color')
             
fig, axcb2 = plt.subplots(figsize=(6, 1))
fig.subplots_adjust(bottom=0.5)             
cmap_warm = mpl.cm.hot
norm2 = mpl.colors.Normalize(vmin=5, vmax=10)
fig.colorbar(mpl.cm.ScalarMappable(norm=norm2, cmap=cmap_warm),
             cax=axcb2, orientation='horizontal', label='warm color')

plt.show()

colorbarcool.png
colorbarhot.png

おわりに

まず、チュートリアルを参照しながら、なんとか目的を達成することができました。 今後、さらに自在に使いこなせるようになれば、更新したいと思っております。

そして歌詞の内容について、視覚化することで上記のような新たな発見はありましたが、歌詞内に登場する色と、曲を聞いて想像する色は必ずしも一致する必要も無いですし、イメージを限定してしまうおそれがあるかと思いましたので、もしこちらをご覧になってしまわれた方は、一度すべて忘れてしまうのがよろしいかと思います。

しかし絶対に忘れてほしくないのは、「DAYDREAM」と同じ山下達郎=吉田美奈子コンビによる「Funky Flushin'」の、Juice=Juiceによるカバーが「プライド・ブライト」との両A面シングルで好評発売中ということです。

こちらも「DAYDREAM」同様、うだるようなこの夏に爽やかな風を吹かせるような、夏休みの行楽・アウトドアにもぴったりの楽曲に仕上がっております。(家の中でも聞いてね!!!)

どうぞ皆様、十分な食事と睡眠と「Funky Flushin'」で、健康にお過ごし下さい。

3
1
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
3
1