I’m loser, baby.

So why don't you kill me?

Factor再び

  • PythonSmalltalkも触れていないんですが、ふと偶然Factor触ってみたら何かAHA!体験(死語)したのでちょっと日記にしておく。
    • 以前はブロックの考え方がピンとこなかったんですが、Smalltalk再入門した目で見たら判った。
      • 手続き型じゃない、「全てが〇〇」という言語仕様にするとこういう扱いになるんですね。
    • 特にfactorはオブジェクト指向だし、インスペクタとかノティファイアとかがあるのでSmalltalkでプログラムしている感覚に近いかも。
      • また言語仕様ではないけれど、付属のヘルプブラウザでワードは全部見ることができるのでシステムブラウザ代わりになる。
      • もともとゲーム開発用言語として始まったという話もあってオーディオ周りのワードもたっぷりあった。
  • Smalltalkだと全てがオブジェクトで「if」もオブジェクトだったりするけれど、Forth系は全てが命令で「1」で「値1をスタックに積む」ってことだったりする。
    • なんかSmalltalkとForthだとプログラムの主従が逆な感じ。
      • でもどちらもシステムの中に分け入っていける、システムに手の届く感じはとてもいいなあ。
  • あと少しだけ導入の際の備忘録
    • Macは試していないけどWindowsは公式バイナリ落として解凍して好きなところに置けばすぐ動く。
    • Linuxも本当はそうなはずだったんだけれど自分の環境だと色々ライブラリが足りないと言われたので、試しにソースを落としてビルドしてみた。
      • stableのソースをダウンロードして解凍。
      • /factor/build-support/に移動
      • "./factor.sh help"でオプションを確認。自分はLinuxMintなので"deps-apt-get"で必要なライブラリをインストール。
      • "./factor.sh install"でビルド。結構時間は掛かる。あとインストールと言ってもビルドまで。
      • /factor/build-support/factor/以下のファイルを適当なディレクトリにコピーしてパスを通して完了。
      • ちなみにscaffoldで作られる自分用ボキャブラリは/factor/work/に保存されるのでエイリアスか何か作っておくと楽。
    • ATOMにはFactor用の設定もある。
      • 本当に何でもあるね。
  • 真の日本語プログラム言語だと思っているMindがWindowsもフリーになっていた!
    • MS-DOSで遊んでた。遊んでただけだけど。

oss.infoscience.co.jp
Factor programming language
日本語プログラミング言語 Mind
Mind (プログラミング言語) - Wikipedia

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の一択状態です。