Morikatron Engineer Blog

モリカトロン開発者ブログ

Pythonと音楽と...(3)MIDIファイルの再生

こんにちは、モリカトロンのチーフエンジニア松原です。 連載第3回めの今回は、MIDIファイルの読み込み、解析、音声波形の生成、合成、再生まで実装しました。

  • MIDIについて
    • 概要
    • MIDIの仕様書を読みたい方は
    • MIDIファイルの中身
    • MIDIファイルを入手するには
  • PythonでMIDIを扱うには
    • むかし
    • いま
  • sample5_play_midi.py
  • marching.midについて
  • まとめ
続きを読む

Pythonと音楽と...(2)トラックとミックス

こんにちは、モリカトロンのチーフエンジニア松原です。
連載第2回めの今回は、前回作成した音を鳴らすプログラムをもうすこしキチンとした実用的なプログラムに改造して行きます。具体的には、音楽を扱いやすいように「トラック」を導入し、音の切れ目のプチプチノイズを除去する仕組みも入れてみます。また、音名(C4とかそういうの)を指定してメロディを作り、複数トラックのミックス(合成)まで実装します。

  • トラックとは
  • sample3_play_all.py
  • プチプチノイズの除去
  • トラックのミックス
  • sample4_play_all_tracks.py
  • ということで
続きを読む

ホットサンドメーカーを買いました

暑いんだか涼しいんだか分からない毎日が続いておりますが、皆様いかがお過ごしでしょうか。
食べ物のお話担当、モリカトロンの大里です。

前回の更新でネタが尽きたら小麦粉の話でもするか、と思っていましたが、キャンプ大好き上司たちの話を聞いているうちにネタがふってきました。そう、タイトルにあるとおり「ホットサンドメーカー」です。

最近はお家でできるキャンプやら、ホットサンドメーカーで作るレシピも話題になってます。なので周回遅れだとは思いつつも、自分が買った時に気をつけたポイントをお伝えいたします。

  • どこで使うか?
  • 直火式だとしても、IH対応か?
  • ちゃんとパン同士が圧着できるか?
  • サンドイッチ以外も焼きたい!
  • 内側で分割できたり1枚で焼いたり
  • コンパクトにしまいたい!
  • そういえば、トースターで使うやつって?
  • 結論(ではない)
続きを読む

Pythonと音楽と...(1)音を鳴らす

モリカトロンのチーフエンジニア松原です、こんにちは!
今回から「Pythonと音楽と...」と題して連載します(全部で四回くらいの予定)。第一回は「音を鳴らす」。音のデータ化や録音・再生の仕組みから、Pythonで指定した周波数の音を発音するところまで、となります。Pythonで音を鳴らしたい人、Pythonでメロディを再生したい人、PythonでMIDIを扱ってみたい人などが対象読者です。どうぞよろしくお願いします。

  • そもそも音ってなんなの?
  • Pythonで音を出すには
  • サイン波を作って鳴らしてみる
    • sample1_play_file.py
  • メモリ上の音を直接鳴らす
    • sample2_play_buf.py
  • 今後の予定
  • 参考にさせていただいたサイト(ありがとうございます)
続きを読む

WebSocket を TCP の代わりに使ってみる

どうも、モリカトロンでプログラマおじさんをしている岡島です。

現在 TCP を使ってプロセス間の通信を行っているのですが、同一のマシンで沢山のプロセスと通信しようとすると空いているポート番号がたくさん必要になるし、 ネットワーク上の複数の機器を使って分散処理をしようとするとポート開放をしないといけない……と悩むことが多くなってきました。 そこで TCP の代わりに WebSocket を使えないないかを検討しています。

ということで、今回は Python ですでに TCP を使って通信をしているプログラムを出来るだけ少ない変更で WebSocket に置き換えられないかというお話です。

  • TCP 通信をしていて困ってること
  • TCP の代わりとして見る WebSocket
  • TCP を WebSocket に置き換えてみる
    • Python で使える WebSocket
    • asyncio?
    • 簡単な TCP 通信のプログラムを Websocket に置き換えてみる
      • tcp_server.py
      • tcp_client.py
      • ws_server.py
      • ws_client.py
    • 同一機器から複数接続してみる
      • ws_client_multithread.py (これは正しく動かない)
      • asyncio.get_event_loop() はサブスレッドから呼び出せない
      • 正しく動く ws_client_multithread.py
  • 最後に
続きを読む

お取り寄せタレ・ドレッシング

梅雨も本格的になり湿度と暑さが迫りくる日々ですが、皆さまいかがお過ごしでしょうか。
食べ物の話題担当、モリカトロンの大里です。

今回も引き続きお取り寄せのお話をいたします。
といってもおやつがもう限界なので、ご紹介するのは液体です。タレやドレッシングですね。

  • その1:フォロドレッシング
  • その2:ピエトロのドレッシング
  • その3:味付ぽん酢柚子 君がいないと困る
  • その4:雪国仕立て辛みそ胡麻ソース
続きを読む

神様のゲーム#8

「体の中の警察」

FPSやRPGでのお楽しみの1つに、武器や装備のカスタマイズがある。
同じ武器でも装着する弾薬の種類を替えることができれば、武器の種類x弾薬の種類だけのバリエーションが生まれる。
装備にしてもしかり。武器を2つ持てるとすると、(武器の種類x弾薬)x(武器の種類x弾薬)だけのバリエーションが生まれる。
武器が5種類、弾薬が10種類だけでも、武器2つ持ちで単純計算で(5x10)x(5x10)=2,500パターンとなる。どういう組み合わせにしようかと十分に悩める(楽しめる)。
プレイヤーがうれしいだけじゃなく、作り手もうれしい。用意するのは、武器が5種類、弾薬が10種類、計15アイテムだけだからだ。ウインウインの仕様である。

続きを読む