こんにちはマイコン制御

May FORTH be with you.

Smalltalkメモ20170625

Cincom Smalltalk - VisualWorks チュートリアル

  • 一番最初のチュートリアルからimageファイルの外の世界とのやり取りを説明するので(ウェブサーバのログ解析)多言語経験者でもピンときやすい。
    • 自由自在Squeakプログラミングも判りやすいんだけれど、自分はこっちのほうが飲み込みやすいかも。
    • 今はVisualWorks無料版が入手しづらい(郵送でDVD調達)がSmalltalk入門としてとてもお勧めなんじゃないだろうか。
  • GnuSmalltalkにはやっぱり公式でSDLバインディングがあるみたい。
    • あるって言ったり無いっていったり、不確かな情報を撒き散らしてごめんなさい。

LinuxMint18.1とPythonとSqueak

  • Macintoshで悲しい目にあってから、互換性とポータブルな環境にはこだわってるんですが(そのせいで作業をサボっているという話もありますが)そのせいでストレスが溜まるという本末転倒もあります。
  • 自分はPCはWindowsLinuxデュアルブートにしていて、Linuxはlinuxmintを使ってるんですが、ここんとこ色々無駄なファイルとかも溜まってしまっていたので、LinuxMint18.1-64bitに環境を移行しました。
    • ところがそうしたらpythonのバージョンがよくないんだかなんだか,easyguiが動かなくなってしまった。
      • なんかこう言うの本当に面倒くさい。
    • 結局"sudo apt-get install python3-tk"で解決したんですが。
    • easygui使えればpythonでなんか作る気にはなれます。
      • Windowsではpyaudioが動かないので全くの互換性ではないけれど、まあpythonは使って行ってもいいかな。
      • ちなみにpyaudioもpip3ではうまくインストールできなくて"sudo apt-get install python3-pyaudio"で無事インストール完了。
  • それで結局どのOSでもLPC動かせる鳴らせるというとScilabが手っ取り早そうという話になってしまっていてどうなのかしら。
    • でもScilabでもWAVファイルを読み込む時の挙動がWindowsLinuxで違うのが気に入らない(笑)。
    • まあAudiolazyでも大丈夫だと思いますが。
  • それを言い出すとSqueak5.1がLinuxMint18.1で動かないとかprocessing3の64bitが動かないとか細かいところは色々あるんですけど、そんなことやってたら本当に本質見失うというか。
    • 最近2軍落ちのBiduleもWINEで入れてみたけど問題なし。
    • VisualWorksLinux版はどうも不安定ぽいのでWINEでWindows版を入れてみたら無事動いてます。

f:id:SenjiNiban:20170618124751p:plain
f:id:SenjiNiban:20170618124913p:plain
f:id:SenjiNiban:20170618124858p:plain
f:id:SenjiNiban:20170618124809p:plain

Squeak Pharoでえらい勘違い / 道具を作る道具としてのPython

  • なんかずーっと「今はサウンドファイルといえばWAVがデフォルト」と思っていたので勘違いしてたけれど、SqueakにはAIFFFileReaderというクラスがあるのだった。
    • これでSqueakやPharoで音いじりが手軽にできるはず。
    • SoundBufferクラスにもsaveAsAIFFFileSamplingRateというメソッドがちゃんとあった。
      • よく考えればApple発祥だものね。
    • ただ基本的にはモノラルサウンド前提なのでステレオサウンドを扱うにはひと工夫要りますね。
      • とりこんだ後というか、内部のSoundBufferはステレオとかマルチチャンネルOKなんだよね。
  • という訳でSmalltalk勉強のモチベーションが近づいたけれどPythonPythonで進めます。
  • 普及率としても日本語資料の多さで言ってもSmalltalkとは雲泥の差のPythonだけれども、ポータブルさという意味で考えると色々微妙な部分も見えてきた。
    • 恐らく2.7系でやるのがポータブルさという意味では良いのだろうけど、今更2.7系で入門したくない。
    • 使ってるLinuxMintだとpython3.4で微妙に色々不便。
      • 一応3.5もソースからコンパイルはしたけど、音と関係ないところであんまり時間食いたくない。
  • なので少しルールを作ってやることにした。
    • ライブラリは使うけど(使わなかったらPythonでやる意味なし)最小限に留める
      • Audiolazy、pydub、numpy、matplotlibくらいで良い
    • GUIは公式tk環境で良い
      • easyguiが簡単みたいだから
      • wxpythonlinuxで上手く行かないし
    • 変換できればで最悪アプリから音はでなくても良い
      • pyAudioWindowsで動かない
      • 変換してセーブしてから鳴らすならば、OS毎に対処法はあるのでそれで良いや

メモメモ2

  • SuperColliderが音が良く聞こえるのは32bitで処理しているからかも
    • 製品のシーケンサーなんかはほとんど32bit以上で処理してるけど、フリーウェアだと少ないのかな。
  • こういう時に環境設定・確認に時間をとっちゃうのは悪い癖なんですが、しばらくは一応もう終わりにして今後は音作り曲作りの方に時間を掛けよう。
    • 取りあえず音素材作りにSuperColliderPureData(使わないというのももったいないので)。
    • LPCエフェクター作りにPythonとAudiolazy
      • pythonは3.5を選びました。とりあえずWindowsでもLinuxでもAudiolazyが動くしwxpythonも動いた。
      • pyinstallerは3.6がまだ上手く動かないようなので。
      • pyaudioWindowsでは動かないけど、一回WAVに吐き出してwinsoundで音出せば良いか、ということで。
    • あと最近開発が止まってるっぽいRenoiseも使い続ける予定。
      • SonicPiとibnizも少々。
  • SuperColliderで144文字でプログラムってお題のコンピがあったようで、全部ソースがアップされているんだけれど、どれも面白い。
  • 日本でもサイトとかあったと思うんだけれど、閉じてしまっているところが多いようだ。
    • いくつかはまだ存在しているけれど、活発に活動はしていないのかな。
  • SuperColliderチュートリアルIDEから英語で読んでいるけれど、自分の経験、知識が増えたせいか、割合引っかからずに読み進められる。
    • 前触って良く判らなかったところは実はSmalltalkっぽいところだったのかも。
    • 日本語訳も途中までならある。

sites.google.com

  • あとはPythonだけど、やりたい事やれればいいので深入りしない予定。
    • ファイル読み込んでLPC加工して、パラメータ変化させるのに簡単なGUIが付けられれば良いか、といった位。
      • MetaSynth位色々できるものが出来りゃそりゃ良いに決まってるけど。
      • プログラミング自体で言えばSmalltalkやForthといったものの方に断然興味があるんだけれど、ライブラリの充実度のせいでPythonを選ぶというは、むべなるかな、というかちょっと悔しい気もする、けどまあ良いか。
    • 以前Pythonもやろうとしてたので、投資した分無駄にしないためにも、ここで元を取るのは良かろう。

入門 Python 3

入門 Python 3

  • 今の段階ではプログラム言語にこだわるより自分のやりたいことに焦点を当てた方が良いという判断。
  • それでこんなものを中古で買ったり。
    • C言語のソースだけれどLPCの実装についてかなり詳しく説明されている。
      • レビンソン・ダービンのアルゴリズムが良く判からない。ううむ。

Interface (インターフェース) 2016年 6月号

Interface (インターフェース) 2016年 6月号

メモメモ

  • SqueakまたはPharoで音ファイルを取り込んで鳴らす、という単純なことについてストレートにやり方を説明している文章が無い。
    • あれ?って声が出るほど意外だった。
    • 言語ゲームのサイトで読んでいたから予期はしていたけれど、音を鳴らすプラットフォームとしてはデフォルトの状態ではあまり考慮されてないんだなあ。
      • 言語としてはとても興味深いしやる気は満々ですが、音楽用に使うのはちょっと先の話になりそう。
  • PureDataは機能としては今やりたい事に十分に応えてくれていると思う。
    • PureDataチュートリアル&リファレンスが良い情報とインスピレーションを与えてくれた事も大きい
    • ただこれは本当に感性的な話でしかないんだけれどMAX/MSP系、PureData系の音ってどうもちょっと気に入らないらしいんですね、自分。
  • 音でいえばSoniPiのサウンドエンジンとしても使われているSuperColliderの音が好き。
  • そういえばSuperColliderの文法ってとっつきにくくて、前チャレンジして挫折したんですが、その後Smalltalkに影響受けている、って話をどこかで読んだ。
  • それで久々にSuperColliderWindowsとLinuxMintにインストールしてみて、サイン波だしてみたらウットリした。
    • サイン波だけでウットリするのもどうかと思うけど、明らかにPureDataSqueakとは違う音なんだよな。多分凄く安定しているんだと思う。
    • 色々なアイディアはPureDataチュートリアル&リファレンスから頂きつつ、SuperColliderに乗り換えようかな
  • LPCについてはCsoundの代用品としてのPython+Audiolazyの一択状態です。

Speak&Spell2000

  • 土日はLPCについて調べてました。
  • 出発点としてはSpeak&Spellとか初期Macの喋るアプリが好きで、それを使って曲のSEやらネタ音が作れないかというのが出発点だったのです。
  • 早い時期にCsoundでLPCが使えることが判ったんですが、当時は色々勉強不足で理解出来なかった。
    • Ceciliaがどうにも安定して動く環境を整備できなかったのも痛かった。
      • あれから大分経って色々高性能になっているみたい。なんか思っていたのと違う方向性だけど。

www.csounds.com

  • その後、ForthとPropellerとかのマイコンに出会って情熱が再燃したけれどまたちょっと放置気味でした。

senjiniban.hatenablog.com

  • そして最近また懲りずにチャレンジを始めています。
    • 自分の悪い癖でまず環境から整備しようとするのですが、これが難航しました。
    • Macで痛い目にあったんで、どのOSでも動くやつを探すんですがこれがなかなかハードルが高い。
  • 土日で調べた結果、候補が下の2つになりました。

AudioLazy 0.6 — AudioLazy 0.6 documentation
http://www.scilab.org/

  • どっちも安定して動くし資料も整っているぽいんだけれど、プレビューで音の出力がどうも安定しない
    • Linuxでaudilolazy動かすとなんとか音が出てくれる。
      • Win版のpythonをもう一度チャレンジしてみるか。
  • そうするとどのOSでも、ということではSqueakかPharo強いって事になるなあ。
    • まずaudiolazyで確かめたり実験したりしながら、Pharoで自分で作るってのが道筋になりそう。

Smalltalkメモ5

前回のSDLつながりで、久しぶりにIBNIZ触ったら楽しかったので。

testone#2

  • VisualWorksの日本語チュートリアルを読みながら触ってみたらとても丁寧で理解しやすかった。さすが商品。
    • DLLandCConnectGuide_ja.pdf読んでSDLも理解すればVisualWorksからサウンド扱えるはず。
    • Sirenを今の7.10日本語版に楽に対応できないものか。
  • 他にSmalltalkからSDLを扱う簡単な方法は無いのか調べてみたら、やっぱりありました。
    • Pharoは4くらいからSDLを取り込んでいてOSWindowクラスから直接SDLを扱えるようです。
      • サウンドはどうなんだ?
      • クラス見た限りでは音は対象外っぽいです。
    • GNUSmalltalkは公式ではSDLを使うライブラリとかクラスはない。自分の勘違いでした。
    • GNUSmalltalkもSDLを公式に扱える仕組みあり。
      • 公式HPに説明がありました。
    • DolphinSmalltalkにもその名もSDLSmalltalkというライブラリがあったようだけど今はページが404でした。
    • Squeakは公式には対応していないっぽいです。
      • VMMakerは4.4Jには対応していない?