LINE Messaging API를 사용하여 MML을 보낼 수 있습니다.
LINE으로 음악 보내기
LINE에서 사람과 Z-MUSIC의 이야기를 할 때, 아무래도 음표를 보내고 싶을 때가 있지요.
하지만 콧노래는 멀티채널로 할 수 없고 종이가 없으면 오선보도 쓸 수 없습니다.
상대방이 원시 MML을 읽을 수 있는 사람이라면 좋지만, 그렇게 할 수 없는 일도 많이 있습니다.
MML을 보내면 음악을 돌려주는 bot가 없을까 생각해 찾아 보았습니다만, 없었기 때문에 만들어 보았습니다.
동작 이미지
친구 추가는 이쪽에서 부디.
MML의 변환에는 "사쿠라" 을 사용하고 있으므로, 스토톤 기법도 사용할 수 있습니다.
시스템 정보
서버는 변하지 않는 데비안 리눅스입니다.
서버 측에서 mml → midi → wav → m4a 라고 하는 변환을 실시해, LINE 로 재생할 수 있는 형식으로 합니다.
MML → MIDI
MML → MIDI 변환에는 CLI판 사쿠라의 csakura
를 사용합니다.
배포된 바이너리는 MacOS 및 RPi용이므로 데비안에서는 사용할 수 없습니다.
직접 빌드합니다.
sudo apt install fpc nkf
git clone https://github.com/kujirahand/sakuramml.git
cd sakuramml
./make.sh
MIDI → WAV
이 변환에는 fluidsynth
를 사용합니다.
sudo apt install fluidsynth
다음에 좋아하는 사운드 폰트도 찾아 둡시다.
이번에는 Z-MUSIC 바람이 되면 좋다고 하는 것으로, FM 음원풍의 사운드 폰트를 찾아 왔습니다.
다만, 너무 사운드 폰트가 크면 메모리상에 전개할 수 없고 fluidsynth
가 죽습니다.
작은 사운드 글꼴이거나 서버에 요금을 부과합니다.
정말은 제대로 파형을 생성하는 편이 리얼입니다만…
할 수 있는 곳에서 자신은 잘 다룰 수 있는 생각이 없기 때문에, 우선 MIDI로 타협합니다.
WAV → M4A
LINE 의 문서에는 m4a 로 던지라고 써 있었으므로, WAV 그대로는 안 된다고 생각합니다.
WAV 그대로 보낼 수 있을 것 같은 생각도 합니다만, 실험은 하고 있지 않습니다.
WAV → M4A 변환을 위해 ffmpeg
를 설치합니다.
환경에 따라 다른 구성 요소도 필요할 수 있습니다. 적절히 넣습니다.
sudo apt install ffmpeg
서버
이번에는 nginx를 사용합니다.
하지만 이 기사에는 서버 설정 주위는 쓰지 않으므로 정적 파일이 나뉘어 php 가 움직이면 뭐든 괜찮습니다.
이번에는 php용 서버에 생성한 m4a도 넣습니다만, 절대 s3등의 스토리지에 업해야 한다고는 생각하고 있습니다. 앞으로의 과제입니다.
출처
이전에는 받은 텍스트를 Google Charts API에 던지는 것만으로 좋았지만 이번에는 그렇게 하지 않습니다.
이번 미소는, csakura
관계의 부분입니다. 이 녀석은 SJIS로 움직이기 때문에 입출력을 그대로
UTF-8 계의 PHP 에 먹이게 하면 문자 깨집니다. 즉
친구 추가는 이쪽에서 부디.
MML의 변환에는 "사쿠라" 을 사용하고 있으므로, 스토톤 기법도 사용할 수 있습니다.
시스템 정보
서버는 변하지 않는 데비안 리눅스입니다.
서버 측에서 mml → midi → wav → m4a 라고 하는 변환을 실시해, LINE 로 재생할 수 있는 형식으로 합니다.
MML → MIDI
MML → MIDI 변환에는 CLI판 사쿠라의 csakura
를 사용합니다.
배포된 바이너리는 MacOS 및 RPi용이므로 데비안에서는 사용할 수 없습니다.
직접 빌드합니다.
sudo apt install fpc nkf
git clone https://github.com/kujirahand/sakuramml.git
cd sakuramml
./make.sh
MIDI → WAV
이 변환에는 fluidsynth
를 사용합니다.
sudo apt install fluidsynth
다음에 좋아하는 사운드 폰트도 찾아 둡시다.
이번에는 Z-MUSIC 바람이 되면 좋다고 하는 것으로, FM 음원풍의 사운드 폰트를 찾아 왔습니다.
다만, 너무 사운드 폰트가 크면 메모리상에 전개할 수 없고 fluidsynth
가 죽습니다.
작은 사운드 글꼴이거나 서버에 요금을 부과합니다.
정말은 제대로 파형을 생성하는 편이 리얼입니다만…
할 수 있는 곳에서 자신은 잘 다룰 수 있는 생각이 없기 때문에, 우선 MIDI로 타협합니다.
WAV → M4A
LINE 의 문서에는 m4a 로 던지라고 써 있었으므로, WAV 그대로는 안 된다고 생각합니다.
WAV 그대로 보낼 수 있을 것 같은 생각도 합니다만, 실험은 하고 있지 않습니다.
WAV → M4A 변환을 위해 ffmpeg
를 설치합니다.
환경에 따라 다른 구성 요소도 필요할 수 있습니다. 적절히 넣습니다.
sudo apt install ffmpeg
서버
이번에는 nginx를 사용합니다.
하지만 이 기사에는 서버 설정 주위는 쓰지 않으므로 정적 파일이 나뉘어 php 가 움직이면 뭐든 괜찮습니다.
이번에는 php용 서버에 생성한 m4a도 넣습니다만, 절대 s3등의 스토리지에 업해야 한다고는 생각하고 있습니다. 앞으로의 과제입니다.
출처
이전에는 받은 텍스트를 Google Charts API에 던지는 것만으로 좋았지만 이번에는 그렇게 하지 않습니다.
이번 미소는, csakura
관계의 부분입니다. 이 녀석은 SJIS로 움직이기 때문에 입출력을 그대로
UTF-8 계의 PHP 에 먹이게 하면 문자 깨집니다. 즉
sudo apt install fpc nkf
git clone https://github.com/kujirahand/sakuramml.git
cd sakuramml
./make.sh
sudo apt install fluidsynth
sudo apt install ffmpeg
이전에는 받은 텍스트를 Google Charts API에 던지는 것만으로 좋았지만 이번에는 그렇게 하지 않습니다.
이번 미소는,
csakura
관계의 부분입니다. 이 녀석은 SJIS로 움직이기 때문에 입출력을 그대로UTF-8 계의 PHP 에 먹이게 하면 문자 깨집니다. 즉
csakura
출력의 SJIS → UTF-8 변환 해야 합니다.
소스에서는 전자는
mbstring
로, 후자는 iconv
로 실현되고 있습니다.사운드 폰트의 사정으로 소리가 작았으므로,
ffmpeg
로 음량의 조정을 걸고 있습니다.음질도 떨어지고, 비력한 음원 칩감이 나와 매우 좋습니다.
샘플
처음 이미지에서 사용한 MML 코드를 붙여 둡니다.
반짝반짝 별
ccggaag2 ffeeddc2 [ggffeed2] ccggaag2 ffeeddc2
자낙 1면 같은 것
トラック1
l16
れーふぁーらーそらーー↑どー↓しーそーら1
[
[れーみーふぁーれみーふぁーみれーみー]
[ふぁーそーらーふぁそーらーそふぁーそー]
[し-ー↑どーれー↓し-↑どーれーど↓し-ー↑どー↓]
らーし-ー↑どー↓らし-ー↑どー↓し-らーし-ー
らーし-ー↑[6どー]
れ2ど2↓し-らーそら2.
↑ど2↓し-2ら2そ4ら4
し-2ら2そ2ふぁ2
[8みふぁ]
み1
]
トラック2
l16
れーーれれーど↓しーししーらーそー[3らー↑どれ↓]↑ど↓しらー↓
[[
[4[4れ]ら[3れ]]
[4[4ふぁ]↑ど↓[3ふぁ]]
[4[4し-]↑ふぁ↓[3し-]]
[4[4ら]↑み↓[3ら]]
]]
Reference
이 문제에 관하여(LINE Messaging API를 사용하여 MML을 보낼 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/plageoj/items/ec74ca0ac457294eb523
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ccggaag2 ffeeddc2 [ggffeed2] ccggaag2 ffeeddc2
トラック1
l16
れーふぁーらーそらーー↑どー↓しーそーら1
[
[れーみーふぁーれみーふぁーみれーみー]
[ふぁーそーらーふぁそーらーそふぁーそー]
[し-ー↑どーれー↓し-↑どーれーど↓し-ー↑どー↓]
らーし-ー↑どー↓らし-ー↑どー↓し-らーし-ー
らーし-ー↑[6どー]
れ2ど2↓し-らーそら2.
↑ど2↓し-2ら2そ4ら4
し-2ら2そ2ふぁ2
[8みふぁ]
み1
]
トラック2
l16
れーーれれーど↓しーししーらーそー[3らー↑どれ↓]↑ど↓しらー↓
[[
[4[4れ]ら[3れ]]
[4[4ふぁ]↑ど↓[3ふぁ]]
[4[4し-]↑ふぁ↓[3し-]]
[4[4ら]↑み↓[3ら]]
]]
Reference
이 문제에 관하여(LINE Messaging API를 사용하여 MML을 보낼 수 있습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/plageoj/items/ec74ca0ac457294eb523텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)