CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

Rustで音楽 mml文法

2023-02-23 20:34:50 | Rust
【手を動かして考えればよくわかる 高効率言語 Rust 書きかた・作りかた】には書かれていなかったmmlの文法について調べてみた。
半音上げる#はc(ド)~b(シ)のすぐ後ろに#または+と付ければ良い。
半音下げる♭は-を付ければ良い。

音の長さはl(エルの小文字)プラス数字で指定。例えばl4で四分音符、l2で二分音符を表す。
じゃあ16分音符ならl16、32分音符ならl32となる。

テンポはtプラス数字、音量はvプラス数字で表せば良いらしい。

この本の385ページから422ページまでは音を鳴らしたり簡単な音楽を奏でる方法が書いてあった。
一番最初は、440Hzのラの音を3秒間だけ鳴らすというものであり、こちらはコピペで難なくクリアした。
コマンドプロンプトで
cargo new プロジェクト名
と入力してEnterキーを押すと、然るべきディレクトリにプロジェクト名のフォルダが自動で作られるので、
cd そのフォルダ名
と入力してEnterキーを押すと
そのディレクトリに移動できる。
そしてその中のmain.rsというファイルをメモ帳で開いて編集するわけだが、本の通りにプログラムを写経して書いて上書き保存し、cargo runと入力してEnterキーを押すとフォルダの中にwavファイルが出来上がっている。
このwavファイルをクリックすると音楽再生アプリが立ち上がって音が出る、という仕組みだ。

397ページにはカエルの歌とキラキラ星の二曲のサンプルコードが書かれている。

さあ、もうこれだけでほとんどの曲(単音でかつ3連符など複雑なリズムの無い曲)は作れるであろう。

ところで和音や複雑なリズムはどうやって表せば良いのだろうか?
もうちょっとmml文法について学ぶ必要があるかもしれない。

1998年辺りから携帯電話が普及し始め、俺は単音での着メロ作成にはまった。
もちろん、和音なんかできなかったので、旋律の音の長さを最も短くし、間に伴奏の音を長さを最短にして挟むという方法をとった。旋律と伴奏が被った所は旋律の音のみにした。

そうしたらかなりリアルなものに近づいた。

さて転職のポートフォリオのネタはこれで決まったな。ショパンの幻想即興曲をプログラミングしてソースコードを提出し、面接の時に再生して見せれば多少はインパクトが残せるかも。

独学の未経験ですが、自力で応用してここまで漕ぎ着けました、とアピールしてみてはどうか?



このコはJUNNA。
天才ドラマーだ。
今は二十歳くらいになってるかも。

P.S.
3連符とか複雑なリズム、複数の旋律、和音、音色を変えるなど詳しいmml文法が載っているサイトを発見した!!!


これで難しい曲も表現できるであろう。
例えばラフマニノフのピアノ協奏曲第二番の左手部分みたいに7連符とか9連符とか。


Rust用ゲームエンジンPistonで簡単なゲームを作ってみた

2023-02-23 17:03:36 | Rust
下のサイトで紹介されていた通りにコピペだけどプログラムコードを書いてみたら見事にRust消防の俺でもできました!
Rustでゲームを作る(入門編) ~Rust用ゲームエンジンPistonの基本的な使い方~ - Qiita

Rustでゲームを作る(入門編) ~Rust用ゲームエンジンPistonの基本的な使い方~ - Qiita

本記事は「Develop fun!」を体現する Works Human Intelligence Advent Calendar 2020の17日目の記事です。はじめに本記事では、Rust用ゲームエンジンであるPistonの...

Qiita

これがその証拠。
cargo runコマンドで実行してみたらちゃんと再現できた。
しかし、コンパイルが遅く感じた。
高速なコンパイラが欲しいと思った。




Rustでベンチマークテスト!

2023-02-23 14:47:16 | Rust
pythonで九九の表を作成した時に使ったプログラムをRustで書くとどうなるか?
同じように10の所を99に書き換えてみた。
fn main() {
for y in 1..99 {
for x in 1..99 {
print!("{:3},", x * y);
}
println!("");
}
}

pythonにソックリであることが分かり、驚くであろう。
しかし、さらに驚くことは実行速度の速さである。
pythonなら30秒くらいかかる所をRustはたったの0.533秒で終わった。まさに一瞬である。


Rustは君の傍にいるwww


Pythonで九九の表を作成するソースコードをいじってみた

2023-02-23 11:48:51 | python
先日買ってきたクジラ飛行机さんの本に書かれていた九九の表のソースコードを改造してみた。
改造と言っても10を99に変えただけなのだが・・・

結果が出るまで30秒くらいかかっていた。
やはりpythonは遅い!

for y in range(1,10):
for x in range(1,10):
print("{:3},".format(y∗x), end="")
print("")
for y in range(1,99):
for x in range(1,99):
print("{:3},".format(y∗x), end="")
print("")
と変えただけなのだが・・・

P.S.
ちなみにRustで同じプログラムをコンパイルして実行してみたら一瞬で結果が表示された!(0.533秒)
さらに99を9999999にしてみたら、さすがのRustでもなかなか終わらなかった。
何分かかったのだろうか?
これはベンチマークテストとして使えるかな?

IDEとは何か?Rust用のおすすめIDEはどれか?etc.

2023-02-23 11:03:15 | Rust
https://e-words.jp/w/IDE.htmlによると・・・
プログラムのソースコードを記述するためのコードエディタを中心に、ソフトウェアの操作画面の設計や要素の配置、挙動の指定などを支援するGUIデザイン機能、ライブラリや開発中のクラスなどの仕様や内部構造を表示する機能、コンパイラやリンカを呼び出して実行可能ファイルを構築するビルド機能、ステップ実行インスペクションエラー箇所のハイライト表示などテストやデバッグを支援する機能などを持っていることが多い。

要するにプログラムのソースコードを書くためのアプリということだ。最も単純なIDEはWindowsに元々入っているメモ帳で、これを使えばホームページを作れる。

ではRust用のIDEで良いものはないか探してみた。
Rust プログラミング - インフォグラフィック:2021年開発者エコシステムの現状

Rust プログラミング - インフォグラフィック:2021年開発者エコシステムの現状

「2021 年開発者エコシステムの現状」は言語、ツール、テクノロジー、および開発者のライフスタイルにおける最新のトレンドをまとめた、プログラミングコミュニティに関する...

JetBrains: Developer Tools for Professionals and Teams

Visual Studio codeはもうすでにインストールしてあるのだが、使いづらい。俺がいつも使っているpython用のIDLE Shell3.11.1の方がはるかに使いやすい。例えば、
x=1+1
print(x)
と入力してEnterキーを押せば即座に実行してくれて答えが表示される。



写真は高松ななちゃん。
お笑い芸人としてワザとブスなファッションで登場しているが、実はめちゃくちゃかわいコちゃんなのだ。
残念ながら犬HKをパワハラで退職してしまったが、フェリス女学院大学卒という高学歴のお嬢様の能力を活かして国賊犬HKを本人訴訟でブチのめして欲しかった。
派遣社員だった俺でもできた簡単なことなのに。

Pythonアプリをexeファイルに変換する方法

2023-02-23 09:33:31 | python
Pythonでプログラミングをすると拡張子が.pyとなる。pythonのプログラミングができるフレームワーク、開発環境でないと実行できないものをフレームワーク・開発環境が無いパソコンでも実行できるexeファイルに変換する方法を紹介したものが以下のサイト。
【Django】Pythonアプリをexe化・第三者に配布する方法|Pyinstallerによる実行ファイル作成

【Django】Pythonアプリをexe化・第三者に配布する方法|Pyinstallerによる実行ファイル作成

Djangoプロジェクトを実行ファイルに変換して第三者に配布したい方向けに「Pyinstallerを活用したEXEファイル変換方法」について解説します。

DXCEL WAVE | AI・機械学習・データサイエンス・アナリティクス・RPA自動化・デジタルマーケティング・フィンテック等の最新デジタル技術を幅広く配信


ちなみにDjangoとはpythonのwebアプリ開発のフレームワークの一つとして今一番人気がある。
pythonで開発されたwebアプリで有名なものはyoutubeだ。



画像は"楽器を持たないパンクバンド"BiSHのモモコグミカンパニー。BiSHは2023年に解散が予定されているという。
個人的にモモグミカンパニーが好みのタイプかな。

P.S.
上のサイトでのやり方が分かりにくい、うまくいかなかったという場合は次のサイトを参考にしたらどうか?
俺はこのサイトのやり方でpythonのexe化に成功した。
pythonのIDLEが入っている前提でざっと説明する。
まずpyinstallerをインストールするためにWindowsのコマンドプロンプトを立ち上げよう。
py -m pip install pyinstaller
と入力してEnterキーを押す。
Cドライブフォルダを開き、python_envフォルダを作る。
ここにexe化したい.pyファイルをぶちこむ。
再びコマンドプロンプトを立ち上げて
cd C¥:python_env
と入力してEnterキーを押し、
pyinstaller さっきぶちこんだexe化したいPythonのファイル名.py
と入力してEnterキーを押す。

そうするとpython_envフォルダの中にbuildフォルダが出来ていて、さらにその中に「さっきぶちこんだexe化したいPythonのファイル名」のフォルダが出来ているので、そのフォルダを開くと拡張子がexeとなっているファイルが見つかるはずだ。
このexeファイルをクリックして実行すればよい。
ちなみに俺はbmiプログラムをexe化してみたが、一瞬だけウィンドウが開き、何も起こらずに消えてしまった。
何がダメだったのだろうか?