🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1426閲覧

PyPIのドキュメントを見てもその先どうすればいいのかわからない

saki1214

総合スコア36

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/12/12 03:56

前提・実現したいこと

Music Macro Languageというプログラミングで音楽を作るということを試してみようと思っています。

調べたところPythonにMMLlib というlibraryがあり、pipインストールするところまではできたのですが、その先どのようにスクリプトを書いたらいいのかがわかりません。

Symbolというものがあり、これを並べていけばいいのかと思ったのですが、全くそうではないようです。
このようなとき、どこをどのように見ればその記述ほうがわかるのかが知りたいです。

発生している問題・エラーメッセージ

スクリプトの記述のしかたがわかりません

該当のソースコード

Symbols of MML

A-G[#,+,-][length]: A-G are notes. # or + following a note produces a sharp; - produces a flat. L(n): Sets the length of each note. L4 is a quarter note, L1 is a whole note, and so on. n may be from 1 to 64. Length may also follow the note to change the length for that note only. A16 is equivalent to L16A. Default is L4. ML: Music legato. Each note plays the full period set by L. MN: Music normal. Each note plays seven-eighths of the time determined by L (length). ・ ・ ・

https://pypi.org/project/MMLlib/

補足情報(FW/ツールのバージョンなど)

Python3.5.2 / Windows

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

文法についてはMMLLibのページの下の方に書いてあります。

文法はMicrosoft GWBasicというプログラミング言語で使われていたMusic Macro Language互換とのことです。

主要な文法は以下の通りです。(さっと読んだだけなので間違っているかもしれません)
・音階=CDEFGAB ド~シに対応

・シャープ・フラットは+/-

・音階の後に数字nを置くと、それがn分音符として扱われます。
例:A4B4C4D4 で四分音符の「ラシドレ」になります。

・L+数字を指定すると、それ以降のマクロで音階の後の数字を省略した場合、その数字がn分音符として扱われます。
例;「L8ABCDE」  は 「A8BC8D8E8」と同じ意味です。(ラシドレミ8分音符)

・T :テンポを指定します。

mmlLibだけで音を鳴らそうとすると、Linux上で実行し、かつ適当なドライバが必要なようです。
ドライバがない場合の現実的な使い方としては、

MMLマクロを書いたファイルを適当な名前(例:test.mml)として保存
→MMLLibをpipインストールしたターミナル(コマンドプロンプト)で

mml2musicxml test.mml > testmml.xml

と入力すると、Music XML形式に変換されたファイルがtest.mmlと同じ場所に保存されるので
testmml.xmlファイルを適当な音楽ソフトに読み込ませてMIDI形式に変換するなどになるでしょう。

オンラインでMusic XMLファイルをmp3に変換してくれるサイトもあるようです。
https://noike.info/~kenzi/cgi-bin/xml2mp3/index.cgi#submissionform)

Microsoft GWBasicのMMLのサンプルが置かれたサイトもありました。
https://archeagemmllibrary.com/

投稿2020/12/12 05:09

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saki1214

2020/12/12 05:46

ありがとうございます。基本的なことはわかりました。 もう一つもしわかれば教えていただきたいのですが、重音を表現する方法はMMLにあるのでしょうか?
退会済みユーザー

退会済みユーザー

2020/12/12 06:43

一口にMMLと言ってもいろいろ方言があります。 方言によってはカンマ区切りや「|:」を使うことで複数トラックを放言できるものもあるようです。 上記MMLLibでは「|:」を記述することでFloppi-Music向けに複数トラックを同期できると書いてあります。 また、下記はAruduino用のMML変換スクリプトですが、カンマ区切りによって複数トラックに対応していると書いてあります。 (https://github.com/maxint-rd/MmlMusic) ただし、自分の環境で、「|:」や「,」を記述したMMLファイルを、上記のMMLLibを通してMusic XMLに変換し、上記サイトを使ってmp3に変換しても複数トラックとして再生することはできませんでした。 調べたところ、Music XMLで和音を使うには「Chord」というタグを使う必要があるなのですが、(https://www.musicxml.com/ja/tutorial/notation-basics/multi-part-music/) 上記MMLLibには「chord」タグをインサートする機能自体がないようですので、Music XMLでの和音には非対応ということになります。 和音を再現しようと思うと、音源が貧弱だった昔のPCゲームのように、アルペジオで細かく刻んで再現するしかなさそうです。
saki1214

2020/12/12 06:52

丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問