Discuss Scratch

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

 このトピックは、ノートブロックを使用して長い曲や楽器のパートの多い曲や和音の多い曲を演奏する方法として、MIDIを利用する方法を紹介し、できた作品を鑑賞し、感想を述べたりして、より良い曲を演奏する方法を話し合うことを目的とします。

 楽譜から音符毎の音階と長さを拾って、ノートブロックに入力して、ノートブロックを繋げて演奏する方法は、長い曲になるとブロック数が多くなってコードの容量が限界になります。また、重なる音(和音など)を出すのは、ノートブロックを繋げて演奏する方法では記述が難しくなります。

 そこでタイミングリスト、音階リスト、長さリストを作り、音符ごとに3種類のリストに入力しておき、指定されたタイミングでクローンを生成し、クローンが指定された音階を指定された長さだけ出すようにする演奏方法が一般的です。重なる音も複数のクローンで正確に演奏できます。

 しかし、上の方法でも長い曲になるとリストが長大になり、入力ミスも多くなります。そこで、MIDIファイルをプログラムで解析し、上記の3種類のリストにそれぞれ入力するためのテキストデータに変換し、リストにテキストデータを読み込ませる方法を採用している作品があります。このようにすると、長大な曲を正確に演奏できます。

 オルゴールのように音を出すタイミングで音階を複数指定しておき、音の長さを一定にしておく方法もあります。タイミングはリストの番号×演奏ピッチで表し、タイミングに対応する番号のリスト内に音階を入れておきます。重なる音があるので、音階は80音階に分けビットオンで指定します。このようにするとリストは1つで済みますので、容量を節約でき、より長大な曲を演奏できます。演奏ピッチは音符の最小間隔の2倍程度としておきます。

 MIDI編集ソフトの使用方法や解析方法、テキストデータへの変換方法、リストの使用方法、MIDIを変換してできた作品などを紹介し合いましょう。

Last edited by Little--Mermaid (Aug. 30, 2020 00:58:19)

inoking
Scratcher
1000+ posts

MIDIをノートブロックで演奏しよう!

技術的には大変有意義とは思いますが、
MIDI ファイルの入手先と著作権の問題はどうされるつもりですか?
この問題は解決していなかったはずです。

そこをクリアせずにトピックでこの話題を展開するのは難があるように思います。

Last edited by inoking (June 3, 2020 17:20:56)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

MIDIファイルはMIDI編集ソフトで入力して作成します。曲は著作権フリーの曲(クラシック、童謡など)を使用します。リストに手入力でタイミングや音階番号や長さを入れるよりは、MIDI編集ソフトで作成した方が正確です。このトピックでは、MIDI編集ソフトの使い方と変換方法などを主に話し合います。

Last edited by Little--Mermaid (June 4, 2020 18:27:00)

inoking
Scratcher
1000+ posts

MIDIをノートブロックで演奏しよう!

Little–Mermaid さんは著作権フリーではない曲の作品を大量に公開しています。
また、プロフィールコメントからすると1曲が早くて15分程度で作れるということですが
MIDI ファイルを自作されているとは思えません。

以上の状況で #3 のコメントは説得力がないように思います。
1014ICE
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

midiならflat.ioなどでつくればいいのではないですか?
abee
Scratcher
1000+ posts

MIDIをノートブロックで演奏しよう!

技術的な話と著作権の話は切り離して考えることができると思いますので、このトピック自体は問題ないと思います。
著作権に関する話題は、著作権について話し合うスレッドで続けることをお勧めします。
inoking
Scratcher
1000+ posts

MIDIをノートブロックで演奏しよう!

※MIDI ファイルはキーボードで弾くだけでも作れるようですね。
MIDI ファイルありきの技術なので著作権とは切り離せない話題だと思ったのですが。。

ともかくここではその件は持ち出さないことにします。
KimiruHamiru
New Scratcher
500+ posts

MIDIをノートブロックで演奏しよう!

トピックの趣旨に合うかわかりませんが、

MIDIデータをScratch内で解釈するプロジェクト
MIDI Toolkit by RokCoderはご存じでしょうか?
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/286690095/
私の理解が正しければ、MIDI(Standard MIDI File)のデータを、「Scratch内で解釈する」というプロジェクトです。
MIDIファイルはバイナリ形式で、Scratchから直接読めないため、
十六進表記のテキストに変換する部分だけ、外部ツールを利用しているようです。

csvmidi, midicsv
世の中には、csvmidi, midicsvといったプログラムもあるようです。
その名の通り「MIDI<->CSVの変換」をすることができるようです。
CSVになっていればScratchに読み込めるので話が少し簡単になります。

その他のテキスト形式の譜面データ
MIDIファイルを利用することに特別な意味がなければ、MMLやMusicXMLといったデータ形式を選択することもできるかも知れません。
最初からテキスト形式なのでScratchでの扱いはいくらか楽になるはずです。

MMLのパーサは実装例があるようです。
MML(Music Macro Language) by Time_Tripper
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/92684333/

MusicXMLは現役のDAW類も結構対応しているようです。
MusicXMLを扱ったScratchプロジェクトはあるようですが、パース自体は外部でやっている感じでした。

トピックの目標に合うかどうかはひとまず置くとして、参考にできそうなものはあるようです。
Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

 MIDIファイルの作り方はMIDI編集ソフトの操作方法に従って作ります。電子キーボードから入力する方法やピアノロール画面から入力する方法などがあります。MIDIファイルの構造は定まっているので、中を解析すれば音符のタイミング、音階、長さを取り出すことができます。初心者の方はMIDIファイルの構造を調べてください。

 著作権フリーの曲の楽譜はネットから無料でダウンロードできますので、それを元にMIDIファイルを作ってみることをお勧めします。Franz Lisztの「愛の夢 第3番」の楽譜はネットから無料でダウンロードできますので、電子キーボードで演奏してみることをお勧めします。電子キーボードで演奏できない方は、ピアノロール画面から音符を入力することをお勧めします。MIDI編集ソフトに入力できたら、コンピュータで演奏して、おかしなところがあればピアノロール画面から修正します。

https://pianoclassics.net/score.php?id=109

 MIDIファイルが作成できたら、音符のタイミング、音階、長さを取り出し、Scratchのリストに渡すテキストファイルに変換するプログラムを作ってみることをお勧めします。プログラミング言語の種類は、ファイルの読み書きができれば、何でもOKです。

 最初からFranz Lisztの曲を演奏するのは難しいですので、著作権フリーの童謡から始めるとよいです。「ふるさと」、「もみじ」、「大きな古時計」、「もりのくまさん」などです。

Last edited by Little--Mermaid (June 12, 2020 11:18:27)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

KimiruHamiru wrote:

トピックの趣旨に合うかわかりませんが、

MIDIデータをScratch内で解釈するプロジェクト
MIDI Toolkit by RokCoderはご存じでしょうか?
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/286690095/
私の理解が正しければ、MIDI(Standard MIDI File)のデータを、「Scratch内で解釈する」というプロジェクトです。
MIDIファイルはバイナリ形式で、Scratchから直接読めないため、
十六進表記のテキストに変換する部分だけ、外部ツールを利用しているようです。

csvmidi, midicsv
世の中には、csvmidi, midicsvといったプログラムもあるようです。
その名の通り「MIDI<->CSVの変換」をすることができるようです。
CSVになっていればScratchに読み込めるので話が少し簡単になります。

以下略。

 MIDIを解釈して実行するScratchプロジェクトは、4年ほど前から、あるScratcherの方が作っており、知っております。ゲストユーザがリストにMIDIのデータをテキスト形式に変換して入力し、それを解釈して演奏するScratchプロジェクトです。そのテキスト形式データのフォーマットは、そのプロジェクトで指定しています。厳密な意味でのMIDI演奏シミュレータで、すごいです。

 MIDIファイルはバイナリ形式ですが、それをMIDI編集ソフトでCSV(コンマ区切りのテキストデータ)に変換できますが、膨大な量のCSVファイルになってしまいます。ノートオン、ノートオフ情報以外にもたくさんの情報が入っています。それを全部Scratchに渡して解析していたら処理速度が遅くなってしまいます。そこで、MIDIの情報全部ではなく、ノートオンのタイミング、音階番号、長さのみを取り出して、それぞれをテキストデータ(改行区切りの10進数テキスト)に変換します。音量データやテンポデータも必要であれば、それも取り出してテキストデータに変換することができます。厳密には音量やテンポも自由に変えたいところですが、あまり必要性はないので省略できます。アップテンポで重なる音が多い曲を、Scratchで演奏するには処理速度を上げる必要がありますので、MIDIの情報を極力簡素化してScratchに渡すことが必要となります。

Last edited by Little--Mermaid (June 8, 2020 13:54:19)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

フリーでオープンソースの、MIDIシーケンサー・MIDI編集ソフトを紹介します。以下のリンクからダウンロードできます。サイトの記事を読めばわかりますが、充実した入力編集機能を持っていますので、MIDIの勉強には最適と思います。CSV形式テキストにも変換できます。

MIDIの説明はサイト内の「資料」ボタンをクリックすると表示されます。

https://openmidiproject.osdn.jp/Sekaiju.html

Last edited by Little--Mermaid (July 7, 2020 01:17:38)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

具体的にMIDIからScratch用のテキストファイルに変換する方法を紹介します。

先ずMIDIをCSV形式に変換してMIDI-CSVファイルを作ります。その内容はテキストエディタで確認してください。

次にC言語、C++、C#、Java、Visual Basic、Python、Excel VBAその他の言語を使用してMIDI-CSVファイルを読み込み、ノートオン情報(”Note_on_c”)とノートオフ情報(”Note_off_c”)を取り出します。ただし、ノートオン情報の中のベロシティ=0はノートオフ情報とみなします。

ノートオン情報の中のタイミング(経過時間)をテキスト①に書き出します。ノートオン情報の中の音階番号をテキスト②に書き出します。ノートオンに対応する(同じ音階番号の)ノートオフ情報のタイミング(経過時間)をテキスト③に書き出します。テキスト③はノートオフのタイミング(経過時間)でなく、長さ(ノートオフのタイミング ー ノートオンのタイミング)としてもよいです。

この3つのテキストに全部のノートオン情報とノートオフ情報を書き込みます。各テキストデータの区切りは改行を入れます。その後、Scratchの3つのリスト(開始時間、音階番号、長さ)にそれぞれテキストデータ①、②、③を読み込ませます。

Scratchはノートオンのタイミングになったら、クローンを生成し、対応する音階を長さだけ演奏します。同じタイミングで演奏する音(和音など)が複数あってもクローンが同時並行に音を鳴らすので、正確に演奏できます。

ピアノやギターやオルゴールなどの弦楽器は鳴らす音の長さを一定(例えば2拍)にすると、きれいに聞こえることがあります。それは16分音符のように短い時間で鳴らす音はよく響かないからです。常に一定の長さの音を鳴らすときは上記のテキスト③(長さ)は不要です。

Last edited by Little--Mermaid (July 7, 2020 01:20:25)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

MIDI-CSVファイルの中身について説明します。以下のようにして、音符の音階番号と開始タイミングと長さを取り出します。
尚、必要な複数トラックのデータが入っています。不要なトラックのデータはMIDI編集ソフトで削除できますので入っていません。

0, 0, Header, 1, 19,480 ←分解能は480(1拍の長さは480)
1, 0, Start_track
1, 0, Tempo, 600000 ←テンポは600,000μ秒
   ・
   ・ 省略
   ・
1, 0, End_track
2, 0, Start_track
2, 960, Control_c, 0, 0, 0
2, 965, Control_c, 0, 32, 0
2, 970, Program_c, 0, 71
2, 975, Control_c, 0, 7, 100
2, 980, Control_c, 0, 11, 127
2, 985, Control_c, 0, 10, 64
2, 990, Control_c, 0, 91, 40
2, 995, Control_c, 0, 93, 0
2, 1000, Control_c, 0, 94, 0
2, 9360, Note_on_c, 0, 73, 101  ←音階番号73の音を開始(タイミング=9360)
2, 9594, Note_off_c, 0, 73, 64   ←音階番号73の音を停止(タイミング=9594)長さ=9594-9360+60=240
2, 9600, Note_on_c, 0, 78, 101  ←音階番号78の音を開始(タイミング=9600)
2, 9834, Note_off_c, 0, 78, 64   ←音階番号78の音を停止(タイミング=9834)長さ=9834-9600+60=240
2, 9840, Note_on_c, 0, 76, 100  ←音階番号76の音を開始(タイミング=9840)
2, 10074, Note_off_c, 0, 76, 64  ←音階番号76の音を停止(タイミング=10074)長さ=10074-9840+60=240
2, 10320, Note_on_c, 0, 73, 97  ←音階番号73の音を開始(タイミング=10320)
2, 10554, Note_off_c, 0, 73, 64  ←音階番号73の音を停止(タイミング=10554)長さ=10554-10320+60=240
2, 10560, Note_on_c, 0, 78, 103  ←音階番号78の音を開始(タイミング=10560)
2, 10794, Note_off_c, 0, 78, 64  ←音階番号78の音を停止(タイミング=10794)長さ=10794-10560+60=240
2, 10800, Note_on_c, 0, 76, 98  ←音階番号78の音を開始(タイミング=10560)
2, 11034, Note_off_c, 0, 76, 64  ←音階番号78の音を停止(タイミング=10794)長さ=11034-10800+60=240
   ・
   ・ 省略
   ・
タイミング(9360)を分解能(480)で割ると19.5となり、19.5拍目という意味です。1小節を4拍とすると、5小節目の3.5拍目となります。
長さ(240)を分解能(480)で割ると0.5拍となります。

実際のタイミング、長さをミリ秒で表すときは、テンポ(μ秒/1拍)を使用して計算します。60,000,000μ秒/テンポがBPMとなります。
テンポ=1,000,000のとき60BPMとなり、1拍は1秒となります。0.5拍は0.5秒となります。
テンポが600,000のときは
240/480×60,000,000/60/テンポ=0.5×1,000,000/600,000=500,000/600,000=0.8333秒
と少し長くなります。

テンポによる開始タイミングと長さの実時間への換算は、Scratchプロジェクト内で実行してもよいです。

Last edited by Little--Mermaid (June 8, 2020 06:52:37)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

#1に書いたオルゴールのように音を出すタイミングで音階を複数指定しておき、音の長さを一定にしておく方法の詳細については、次のプロジェクトを参照してください。

MIDIデータのScratchによる自動演奏
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/320975078
Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

「スクリプト演奏を楽しむスタジオ」を作成しました。
https://scratch-mit-edu.ezproxyberklee.flo.org/studios/27414137/projects/

スタジオの内容は次のようになっています。
———————————————————————————————————————————————-
 スクリプト演奏を楽しむスタジオです。きれいな音楽の演奏方法、キャラクターとの連動方法、曲の音符
データの自動作成方法などを話し合い、作品を作っていきます。

 マネージャーを師匠とし、キュレーターを弟子とさせていただきます。作った作品は、どんどん登録して
ください。作品のスタイルは自由です。

 師匠レベルになれば、マネージャーに昇格できます。

 キュレーターは、どんどん弟子を招待してください。
———————————————————————————————————————————————-

リストを使って演奏する作品、MIDIから音階データを取り出しリストに入力して演奏する作品の作り方、
できた作品の紹介、師匠と弟子との連絡用にご利用ください。弟子になりたい方はスタジオのコメント欄に
「弟子希望」と書いてください。よろしくお願いします。

Last edited by Little--Mermaid (Aug. 30, 2020 02:13:25)

mep0mep0mip0mip0
Scratcher
4 posts

MIDIをノートブロックで演奏しよう!

midiをscratch上で解析して演奏するプロジェクトを作ってみました。このプロジェクトでは、midiをscratchに読み込むとき1byteずつ読み取って16進数に変換し、リストの1項目につきmidiの1byteの内容が入るようなテキストデータに変換する必要があります。
(変換には別言語で作ったプログラムを使いました。誰でもできるような方法があると良いのですが…)

リスト、「解析」に読み取った情報(イベントやデルタタイムなど)が表示されるので、一目でそのmidiがどのような構造になっているかが分かりやすくなっています。

いちおう演奏機能もつけておきました。
まだまだ試作段階ですが、とりあえず1トラックのmidiをscratchで演奏することができました。
ランニングステータスや細かいイベント内容を反映させた演奏には後々対応させようと思います。

プロジェクトはこちらです
https://scratch-mit-edu.ezproxyberklee.flo.org/projects/409692953/
Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

プロジェクトを拝見しました。よくバイナリ形式のMIDIを解析できましたね。私はそういう面倒なことをしたくないので、MIDIをCSV形式のテキストデータに変換してからVisual Vasicで解析しています。使っている情報はNote_on_cだけです。Note_off_cは使っていません。どの音も2拍鳴らすからです。このプロジェクトの演奏方法も同じですね。

私は複数トラックのNote_on_cを統合して1つのトラックに合成しています。多分このプロジェクトも同様に複数トラックのon/off情報を統合して1つのトラックに合成すれば複数トラックの演奏ができると思います。同一タイミングの同一音階は1つにまとめるようにします。

このプロジェクトはMIDIを16進数のテキストデータに変換してリストに入力すれば演奏してくれるので、誰でも使えるのでいいですね。

テンポ情報もMIDIに入っているので、その値をテンポに設定できると思います。私は耳で聞いてテンポを決めています。

今後のバージョンアップに期待していますので頑張ってください。

Last edited by Little--Mermaid (July 7, 2020 01:27:40)

Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

スクラッチとオルゴールの相性は抜群によいです。オルゴールの曲を数値化すれば、スクラッチで演奏できます。
サンプルのプロジェクトを紹介しますので、興味のある方はリミックスして曲を作って、共有しませんか?
MIDI編集ソフトを使用しなくてもリストへの手入力で作成できます。もちろんMIDI編集ソフトを使用して作成した
データをテキスト形式ファイルに出力してリストに読み込ませてもよいです。

<<作品例1>>

サンプル音楽:スクラッチ観覧車

48番の音から81番の音まで20段階に分かれています。半音階(♯や♭)はありません。

48番(ド)・・・・・・1ビット目(数値:1)
50番(レ)・・・・・・2ビット目(数値:2)
52番(ミ)・・・・・・3ビット目(数値:4)
53番(ファ)・・・・・4ビット目(数値:8)
55番(ソ)・・・ ・・5ビット目(数値:16)
57番(ラ)・・・・ ・6ビット目(数値:32)
59番(シ)・・・ ・・7ビット目(数値:64)
60番(ド)・・・ ・・8ビット目(数値:128)
62番(レ)・・・・・・9ビット目(数値:256)
64番(ミ)・・・・・・10ビット目(数値:512)
65番(ファ)・・・・・11ビット目(数値:1024)
67番(ソ)・・・ ・・12ビット目(数値:2048)
69番(ラ)・・・・ ・13ビット目(数値:4096)
71番(シ)・・・ ・・14ビット目(数値:8192)
72番(ド)・・・ ・・15ビット目(数値:16384)
74番(レ)・・・・・・16ビット目(数値:32768)
76番(ミ)・・・・・・17ビット目(数値:65536)
77番(ファ)・・・・・18ビット目(数値:131072)
79番(ソ)・・・・・・19ビット目(数値:262144)
81番(ラ)・・・・・・20ビット目(数値:524288)

あるタイミングで鳴らしたい音のビットを立てます。和音の場合は複数ビットを立てます。
ビットを立てるときは、対応する数値を足してください。ド(48番)+レ(49番)+ミ(50番)=1+2+4=7です。
タイミングは1~360まであります。休止するタイミングのときは数値は0にしてください。

music-xの1~360番目に各音の数値を入れてください。


<<作品例2>>

サンプル音楽:マーメイドのオルゴール館V

「マーメイドのオルゴール館Ⅴ」より6オクターブ、半音階ありになりました。これでどのような曲も演奏できる
ようになりました。
36番の音から107番の音まで72段階に分かれています。もちろん♯や♭もあります。

36番(ド)・・・・・・72文字目
37番(ド♯)・・・・・71文字目
38番(レ)・・・・・・70文字目
39番(レ♯)・・・・・69文字目
40番(ミ)・・・・・・68文字目
41番(ファ)・・・・・67文字目
42番(ファ♯)・・・・66文字目
43番(ソ)・・・・・・65文字目
44番(ソ♯)・・・・・64文字目
45番(ラ)・・・・・・63文字目
46番(ラ♯)・・・・・62文字目
47番(シ)・・・・・・61文字目
48番(ド)・・・・・・60文字目
49番(ド♯)・・・・・59文字目
50番(レ)・・・・・・58文字目
51番(レ♯)・・・・・57文字目
52番(ミ)・・・・・・56文字目
53番(ファ)・・・・・55文字目
54番(ファ♯)・・・・54文字目
55番(ソ)・・・・・・53文字目
56番(ソ♯)・・・・・52文字目
57番(ラ)・・・・・・51文字目
58番(ラ♯)・・・・・50文字目
59番(シ)・・・・・・49文字目
60番(ド)・・・・・・48文字目
61番(ド♯)・・・・・47文字目
62番(レ)・・・・・・46文字目
63番(レ♯)・・・・・45文字目
64番(ミ)・・・・・・44文字目
65番(ファ)・・・・・43文字目
66番(ファ♯)・・・・42文字目
67番(ソ)・・・・・・41文字目
68番(ソ♯)・・・・・40文字目
69番(ラ)・・・・・・39文字目
70番(ラ♯)・・・・・38文字目
71番(シ)・・・・・・37文字目
72番(ド)・・・・・・36文字目
73番(ド♯)・・・・・35文字目
74番(レ)・・・・・・34文字目
75番(レ♯)・・・・・33文字目
76番(ミ)・・・・・・32文字目
77番(ファ)・・・・・31文字目
78番(ファ♯)・・・・30文字目
79番(ソ)・・・・・・29文字目
80番(ソ♯)・・・・・28文字目
81番(ラ)・・・・・・27文字目
82番(ラ♯)・・・・・26文字目
83番(シ)・・・・・・25文字目
84番(ド)・・・・・・24文字目
85番(ド♯)・・・・・23文字目
86番(レ)・・・・・・22文字目
87番(レ♯)・・・・・21文字目
88番(ミ)・・・・・・20文字目
89番(ファ)・・・・・19文字目
90番(ファ♯)・・・・18文字目
91番(ソ)・・・・・・17文字目
92番(ソ♯)・・・・・16文字目
93番(ラ)・・・・・・15文字目
94番(ラ♯)・・・・・14文字目
95番(シ)・・・・・・13文字目
96番(ド)・・・・・・12文字目
97番(ド♯)・・・・・11文字目
98番(レ)・・・・・・10文字目
99番(レ♯)・・・・・9文字目
100番(ミ)・・・・・ 8文字目
101番(ファ)・・・・ 7文字目
102番(ファ♯)・・・ 6文字目
103番(ソ)・・・・・ 5文字目
104番(ソ♯)・・・・ 4文字目
105番(ラ)・・・・・ 3文字目
106番(ラ♯)・・・・ 2文字目
107番(シ)・・・・・ 1文字目

あるタイミングで鳴らしたい音の文字を「1」にします。鳴らさない音は「0」にします。和音の場合は複数文字を
「1」にします。これを72文字の文字列にします。
タイミングは無限です。休止するタイミングのときは文字列はオール0にしてください。

music-xの1~∞番目に各音の文字列を入れてください。


<<作品例3>>

サンプル音楽:Fur Elise

「Fur Elise」は6オクターブ+8半音階のピアノ曲になりました。音階の表し方は以下のようになっています。
あるタイミングで鳴らしたい音のビットを「1」にします。鳴らさない音は「0」にします。和音の場合は複数
ビットを「1」にします。これを80音階:80ビットの2進数にします。
タイミングは無限です。休止するタイミングのときは2進数は0にしてください。
music-1の1~∞番目に各音の2進数を10進数に変換して入れてください。

各音階と、その音を鳴らすタイミングは、楽譜やMIDI編集ソフトを見て入力してください。また、MIDI編集ソフト
の出力ファイルから各音階と、その音を鳴らすタイミングをプログラムで読み取り、テキストファイル(.txt)に
書き出し、Scratchのリストmusic-1に手動で読み込ませる方法もあります。私は、この方法を採用しています。

ピアノの音を1音鳴らすときは、必ず1.5拍以上鳴らしてください。そうしないとピアノの響きを再現できません。
曲のテンポが遅いときは4拍鳴らしてください。4拍鳴らして前後の同じ音が被るときは、2~3拍にしてください。
0.25拍、0.5拍、0.75拍、1拍で音を止めてしまうと、きれいなピアノの響きは得られません。

28番(ミ)・・・・・・1ビット目(数値:1)
29番(ファ)・・・・2ビット目(数値:2)
30番(ファ#)・・・3ビット目(数値:4)
31番(ソ)・・・・・・4ビット目(数値:8)
32番(ソ#)・・・・・5ビット目(数値:16)
33番(ラ)・・・・・・6ビット目(数値:32)
34番(ラ♯)・・・・・7ビット目(数値:64)
35番(し)・・・・・・8ビット目(数値:128)
36番(ド)・・・・・・9ビット目(数値:256)
37番(ド♯)・・・・・10ビット目(数値:512)
38番(レ)・・・・・・
39番(レ♯)・・・・・
40番(ミ)・・・・・・
41番(ファ)・・・・・
42番(ファ♯)・・・・
43番(ソ)・・・・・・
44番(ソ♯)・・・・・
45番(ラ)・・・・・・
46番(ラ♯)・・・・・
47番(シ)・・・・・・
48番(ド)・・・・・・
49番(ド♯)・・・・・
50番(レ)・・・・・・
51番(レ♯)・・・・・
52番(ミ)・・・・・・
53番(ファ)・・・・・
54番(ファ♯)・・・・
55番(ソ)・・・・・・
56番(ソ♯)・・・・・
57番(ラ)・・・・・・
58番(ラ♯)・・・・・
59番(シ)・・・・・・
60番(ド)・・・・・・
61番(ド♯)・・・・・
62番(レ)・・・・・・
63番(レ♯)・・・・・
64番(ミ)・・・・・・
65番(ファ)・・・・・
66番(ファ♯)・・・・
67番(ソ)・・・・・・
68番(ソ♯)・・・・・
69番(ラ)・・・・・・
70番(ラ♯)・・・・・
71番(シ)・・・・・・
72番(ド)・・・・・・
73番(ド♯)・・・・・
74番(レ)・・・・・・
75番(レ♯)・・・・・
76番(ミ)・・・・・・
77番(ファ)・・・・・
78番(ファ♯)・・・・
79番(ソ)・・・・・・
80番(ソ♯)・・・・・
81番(ラ)・・・・・・
82番(ラ♯)・・・・・
83番(シ)・・・・・・
84番(ド)・・・・・・
85番(ド♯)・・・・・
86番(レ)・・・・・・
87番(レ♯)・・・・・
88番(ミ)・・・・・・
89番(ファ)・・・・・
90番(ファ♯)・・・・
91番(ソ)・・・・・・
92番(ソ♯)・・・・・
93番(ラ)・・・・・・
94番(ラ♯)・・・・・
95番(シ)・・・・・・
96番(ド)・・・・・・
97番(ド♯)・・・・・
98番(レ)・・・・・・ 71ビット目
99番(レ♯)・・・・・ 72ビット目
100番(ミ)・・・・・ 73ビット目
101番(ファ)・・・・ 74ビット目
102番(ファ♯)・・・ 75ビット目
103番(ソ)・・・・・ 76ビット目
104番(ソ♯)・・・・ 77ビット目
105番(ラ)・・・・・ 78ビット目
106番(ラ♯)・・・・ 79ビット目
107番(シ)・・・・・ 80ビット目

みなさんの作品を楽しみにお待ちしております。

Last edited by Little--Mermaid (July 13, 2020 00:43:35)

abee
Scratcher
1000+ posts

MIDIをノートブロックで演奏しよう!

Little--Mermaid wrote:

曲は著作権フリーの曲(クラシック、童謡など)を使用します。
というお約束だったと思うのですが、いかがでしょうか。
Little--Mermaid
Scratcher
100+ posts

MIDIをノートブロックで演奏しよう!

紹介する曲を間違えました。クラシックの曲に変更しました。

Powered by DjangoBB