5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Windows環境でLisp/Scheme処理系を試す選択肢。

Last updated at Posted at 2019-12-24

自分のスペック

  • 銀行系SEな会社に所属してますがプログラム書く機会が少ないです
  • 業務では以前にC言語、Java、PL/1等を書いてました。直近ではPHPやJS、HTMLをゴリゴリ書いてWebページ魔改造マンになってました
  • 趣味でゲーム・シンセサイザー・メガデモ等のプログラム書いてます
  • 趣味で使う言語はC・C++・C#・x86アセンブラ等。あとシェーダ言語各種
  • 最近は作曲のためにSchemeやHaskellでプログラム書いてます

記事を書く経緯

  • 以前Extemporeっていうライブコーディング環境触った記事を投稿したんだけど、Extempore自体が記述可能な文法としてSchemeに近い体系を採用しているみたい。で、「簡潔にデータを生成する書き方」みたいなのを色々試すことができて、作曲のアプローチとして有効なのではと思い始めてる。
  • どうも昔からLispを作曲に使うというアプローチがあるみたいで、譜面生成もそうだしうまくいけばオーディオデータ作成等にも使えるんじゃないかと考え中。
  • メガデモ(主に4K intro)でシーケンスデータ生成したりそれをそのまま使ったりでデータ縮められないかな?と考え中。(実際Lisp用コンパイラ作ってアセンブラ出力する事例もあるみたいだし)
  • ゲームや自作ツールのスクリプトとしてLisp/Schemeを実装するというのも一つのアプローチでは?と思い始めてる。(インタプリタ自体の実装もそれほど行数なさそうだし)
  • そもそもLisp/Scheme試そうとすると情報が数年前更新とかもザラだもんよ。(処理系がいくつもあるのは置いといて)
  • 俺がWindowsメイン(MacやLinux系OS入れてるPCも持ってはいますけど、プログラム書くのもWindowsのPCが中心なので)

総じて「プログラム的な興味」と「作曲ツールとしてのLisp/Schemeへの興味」というのが一番の理由ですね。

資料

ググった結果とか自分で試した結果を貼っつけてます。

Lisp処理系

SBCL
http://www.sbcl.org/
今だとPortacleとかで用意するのが便利。
https://portacle.github.io/
あとRoswellも同じようにLisp環境を用意できる。個人的にはroswell便利。
https://github.com/roswell/roswell

OKI ISLisp
http://islisp.org/jp/OKIISLisp-jp.html

CLISP
https://clisp.sourceforge.io/

ClozureCL
https://ccl.clozure.com/

Fuel
最近これ使って遊んでます。
C#版だとコンパイラも実装されてるみたい。
https://github.com/mneuroth/fuel-lang

OpenMusic
http://repmus.ircam.fr/openmusic/home

Scheme処理系

TinyScheme(MSVCでコンパイル出来るバージョン)
ありがたいことに作ってる人がいたのでちょっと内容確認してるところ。
とりあえず自作プログラムへの組み込みは確認できた。
https://github.com/ignorabimus/tinyscheme

minischeme(MSVCでコンパイル出来るバージョン)
上記の作者と同様の対応をminischemeでも行っているので、
ありがたくソース読ませてもらおうかと。
https://github.com/ignorabimus/minischeme

Schemy(Microsoft製のScheme処理系。C#で実装されてる)
うちの環境だと.net frameworkの関係かSchemy.dllしかコンパイルできなかったので、別途組み込みプログラムを書く必要がありそう。
https://github.com/microsoft/schemy

ChickenScheme
Cプログラムにトランスレート可能
https://www.call-cc.org/

ChezScheme
最近これ使って遊んでます。元々商用なだけあって高機能。
https://github.com/cisco/ChezScheme

MIT-Scheme
http://groups.csail.mit.edu/mac/projects/scheme/

s7
これ自作プログラムへ組み込みしてみたんだけど、VCのコンパイラだと辛い部分があるのでどうしたものか。(色々書き換えたりオプション外したりして動いたことを確認したけど)
https://ccrma.stanford.edu/software/snd/snd/s7.html

20200909追記

Common Music(Grace)
http://commonmusic.sourceforge.net/
どうも上のs7を組み込んでるっぽい環境。
ソフトを起動すれば、Evalが可能な環境までが揃っているので、これ使ってしまうのが一番はやい気がしてる。
元々作曲用に用いられる環境のためか、MIDI出力にも対応している。
これとloopMIDIを使うとWindows環境でソフトシンセをライブコーディングで鳴らすことが可能になる。

番外?

Nyquist
Audacityに組み込まれてるらしい、オーディオ処理が可能なLisp処理系。
https://manual.audacityteam.org/man/nyquist.html#start

Ypsilon Scheme System
ピンボールゲームの作成で利用するらしいScheme処理系
http://www.littlewingpinball.com/doc/ja/ypsilon/index.html

参考資料

Extempore
Schemeベースらしい言語で作曲やシンセサイズ可能。
ちなみにグラフィックも出力可能。
https://extemporelang.github.io/

TidalCycles
こっちはHaskellを利用する作曲環境なんだけど、
譜面を効率的にまとめたりするのは同じアプローチかな、と。
https://tidalcycles.org/index.php/Welcome

Rose Shank by XZM & tAAt (2007)
どうもこのデモはLispベースの言語で実装して(バイトコードに変換してから?)専用のVM上で動かしたらしい。
https://jet.ro/visuals/4k-intros/

CommonLispMusic
https://ccrma.stanford.edu/software/clm/

Lispとコンピュータ音楽 Vol.1
https://booth.pm/ja/items/1575612

shigoto-lisp: はじめてLispを実装するときに 〜 パース編
https://qiita.com/t-sin/items/c961b8bba803a5d2fd4b
これ以降の記事も参考になる。

オーディオ・映像用プログラミング言語・Extemporeの紹介
自分の投稿です。
https://qiita.com/MachiaWorx/items/6d43749e91b8d1b2a639

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?