LoginSignup
1
0

超歌舞伎ペンライトの大向こうの声を取り出してみた

Last updated at Posted at 2024-02-18

はじめに

歌舞伎の「大向こう」文化すら知らなかったのですが、歌舞伎応援ボタンを製作しています。

超歌舞伎の観客は出演者毎に指定された色のペンライトを振って応援するスタイルが定着しています。
また、本来禁止されている「大向こう」の掛け声も思い思いのタイミングで誰でもかけることができます。
コロナ禍では、感染症対策として観客が声を出さない形式で行われ、「大向う付オリジナルペンライト」という、大向こうの音声を発する機能が付いたペンライトが劇場公演グッズとして販売されました。

大向こうの声

歌舞伎応援ボタンで使用する音声は、ダウンロードできるフリー素材(本物の音声)を元に、生成AI(VALL-E-X)で新しく生成した音声を使用しました。

  • 入力(成駒屋、成田屋、澤瀉屋、橘屋、音羽屋)

  • 生成AI(VALL-E-X)

  • 出力(中村屋)

歌舞伎応援ボタン

製作メモはこちらです。
DFPlayer Miniを使用して、ボタンが押されるとSDカードに保存されているMP3ファイル(大向こう音声)を再生します。
音声の選曲はDFPlayer MiniのADKEY機能を使用しています。ロータリースイッチを回すと抵抗値が変わり、ボタンを押した時の抵抗値の大きさによって再生される音声が変わる仕組みです。

IMG_4613.jpg

IMG_4590.jpg

大向こう付きペンライト

公式ホームページでは売り切れでしたので、フリマで入手しました。

IMG_4435.jpg

ペンライトの操作と音声の操作はそれぞれ独立しています。

IMG_4437.jpg

仕様調査

分解

まずは、ペンライトを分解します。分解自体はそこまで難しくないです。分解して基板を取り出します。

手順は以下のとおりです。

1.半透明の筒は半時計周りに回して外します。LEDの拡散レンズも外します。

IMG_4698.jpg

2.金色のはめ輪を外します。

IMG_4699.jpg

3.電池ケースの蓋を外し、ネジ2本をプラスドライバーで外します。

IMG_4700.jpg

4.筐体を2つに割ります。

IMG_4440.jpg

5.基板はネジ留めされていないので、そのまま外せます。

IMG_4443.jpg

基板

基板は複数枚から構成され、立体的に組まれています。黒い四角い箱はスピーカーです。

IMG_4441.jpg

IMG_4442.jpg

MCU (不明)

16ピンのMCUは型番が消されているため判別できませんでした。

MCU.jpg

音声再生チップとFlashメモリ

使用されている音声再生チップはMY1680X-16Sで、DFPlayer Miniとほぼ同じ仕組みで、MP3/WAVファイルを再生して音を出しています。
MY1680X-16Sの下のチップはKH25L8006E(Flashメモリ)です。ここにMP3ファイルが保存されていました。

2.jpg

2024年2月21日追記

2022年南座のペンライトで使用されているFlashメモリはWT25Q80B-8Sでした。
それ以外は同じでした。

IMG_4725.jpg

名称未設定.jpg

オーディオアンプ

少し見にくいですが、WT8302(D級オーディオアンプ)が使用されています。

3.jpg

動作解析

音声が再生される仕組みを確認します。
ここからはある程度、電子工作の知識が必要になります。

4.jpg

選曲、再生の仕組み

基板の配線を調べていき、手書きでメモを作成しました。

IMG_4697.jpg

簡単に全体の仕組みを説明します。
ボタン操作で選曲と再生を行います。
再生ボタンを押すとMCUは音声再生チップ(MY1680X-16S)に対してシリアル通信でコマンドを送ります。
音声再生チップ(MY1680X-16S)はコマンドの中の曲番号の音声(MP3)ファイルをFlashメモリ(KH25L8006E)から読み込みます。
音声再生チップ(MY1680X-16S)は音声(MP3)ファイルを再生して、オーディオアンプ経由でスピーカーから音声を再生します。

スクリーンショット 2024-02-18 19.37.01.png

音声再生コマンドの調査

ロジックアナライザーでシリアル通信の内容を確認します。
音声再生チップ(MY1680X-16S)のRX(12ピン)とGND(3ピン)をロジックアナライザ(CH1とGND)へ接続します。

スクリーンショット 2024-02-18 19.43.49.png

IMG_4692.jpg

5.jpg

1曲目の音声を再生した時の信号です。
仕様書を確認し、曲目を選択して音声を再生するコマンドでした。

6.jpg

スクリーンショット 2024-02-18 19.46.13.png

2曲目〜6曲目は以下のとおりでした。

2曲目: 7E 05 41 00 02 46 EF
3曲目: 7E 05 41 00 03 47 EF
4曲目: 7E 05 41 00 04 40 EF
5曲目: 7E 05 41 00 05 41 EF
6曲目: 7E 05 41 00 06 42 EF

左から6バイト目はチェックサムで、2〜5バイト目をXORで計算して求めます。

スクリーンショット 2024-02-18 19.49.20.png

ロジックアナライザーの設定と操作は以下の記事を参考にしました。

音声(MP3)ファイルの抽出

Flashメモリ(KH25L8006E)とラズパイを接続します

IMG_4695.jpg

IMG_4696.jpg

スクリーンショット 2024-02-18 19.56.06.png

fig.png

ラズパイ上のコマンドラインからflashromコマンドを実行します。

まず、ラズパイでSPIを有効にします。

$ raspi-config

flashromコマンドをインストールします。

$ sudo apt install flashrom

flashromコマンドを実行します。Flashメモリが接続されていない状態だとエラー(EEPROM/flashデバイスが見つからない)が出力されます。

$ sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000
flashrom v1.2 on Linux 6.1.21-v8+ (aarch64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
No EEPROM/flash device found.
Note: flashrom can never write if the flash chip isn't found automatically.

Flashメモリを接続してflashromコマンドを再度実行すると、Flashメモリが認識され、以下のように出力されました。

$ sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000
flashrom v1.2 on Linux 6.1.21-v8+ (aarch64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005" (1024 kB, SPI) on linux_spi.
No operations were specified.

Flashメモリの内容を読み出して、ファイル(data.bin)に書き出します。

$ sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=5000 -r data.bin
flashrom v1.2 on Linux 6.1.21-v8+ (aarch64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
Found Macronix flash chip "MX25L8005/MX25L8006E/MX25L8008E/MX25V8005" (1024 kB, SPI) on linux_spi.
Reading flash... done.

書き出したファイル(data.bin)の内容を確認します。FAT12でフォーマットされていることを確認しました。

$ file data.bin 
data.bin: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "MSDOS5.0", reserved sectors 4, root entries 512, sectors 2048 (volumes <=32 MB), Media descriptor 0xf8, sectors/FAT 6, sectors/track 1, heads 1, serial number 0x983e76b1, unlabeled, FAT (12 bit)

mountコマンドで書き出したファイル(data.bin)を/mntディレクトリにマウントします。

$ sudo mount data.bin /mnt

/mntディレクトリの内容を確認すると、音声ファイル(0001.mp3〜0006.mp3)を確認できました。

$ cd /mnt
$ ls -al
total 227
drwxr-xr-x  2 root root 16384 Jan  1  1970 .
drwxr-xr-x 18 root root  4096 May  3  2023 ..
-rwxr-xr-x  1 root root 40992 Jun 23  2022 0001.mp3
-rwxr-xr-x  1 root root 37632 Jun 23  2022 0002.mp3
-rwxr-xr-x  1 root root 28512 Jun 23  2022 0003.mp3
-rwxr-xr-x  1 root root 34752 Jun 23  2022 0004.mp3
-rwxr-xr-x  1 root root 39552 Jun 23  2022 0005.mp3
-rwxr-xr-x  1 root root 28512 Jun 23  2022 0006.mp3

ラズパイでSPI Flashの読み出しは以下の記事を参考にしました。

音声(MP3)ファイルの解析

結論から先に言うと、MP3ファイルのタグの中には面白そうな情報は見つかりませんでした。

6.jpg

また、Flashメモリの中にも面白そうな情報は見つかりませんでした。

7.jpg

とは言え、大向こうの音声をDFPlayer Miniで再生したり、高音質で聴けるようになりました。

さいごに

2024年2月8日に歌舞伎座で初めて歌舞伎(連獅子)を鑑賞してきました。

IMG_4572.jpg

いつか古典歌舞伎の公演で歌舞伎応援ボタンを押したいです。

IMG_4578.jpg

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