This the multi-page printable view of this section. Click here to print.

Return to the regular view of this page.

Getting Started

Let’s start your mimium experiences

実行環境

mimiumは現在以下の環境で利用可能です。

  • macOS(x86のみ)
  • Linux(ALSAを利用します)
  • Windows 10

Visual Studio Code拡張ではじめる

もっとも簡単にmimiumを利用する方法は無料のテキストエディタ/IDEであるVisual Studio Codeを利用する方法です。

  1. Visual Studio Code を公式Webサイトからインストールする。
  2. Visual Studio Codeを起動したら、拡張機能メニューを開く。 (Cmd+Shift+X).
  3. 検索欄から"mimium"と検索し、出てきた拡張をインストールする。
  4. `hello.mmm'という名前でファイルを作成し、以下のコードを貼り付けて保存し、再度開く。
  5. 最新版のmimiumバイナリをダウンロード、インストールするか聞くダイアログが現れるのでインストールする。
  6. Cmd+Shift+P でコマンドパレットを開き、“mimium"で検索する。 “Run currently opening file” を選択すると、ターミナルが新たに立ち上がり、現在開いているファイルを実行してくれる。
  7. Ctrl+Cを押すこと音を止めることができる。
// hello.mmm
fn dsp(){
  output = sin(now*440*2*3.141595/48000)
  return (output,output)
}

その他のインストール方法

GitHub Releaseより最新版のバイナリをダウンロードできます。bin/mimiumを適当な場所(macOS/Linuxであれば/usr/local/binなど)にコピーしてください。

macOS,Linuxユーザーの場合はHomebrew/Linuxbrewを利用してインストールができます。1

brew install mimium-org/mimium/mimium

手動ビルドなどより詳しい情報は インストールページを参照してください。

また、エディタにVisual Studio Codeを利用している場合は拡張機能の検索からmimium-languageをインストールすることでシンタックスハイライトが利用できます。これ以外の環境の場合はRustのシンタックスハイライトを利用すると概ね正しく表示してくれます。

実行

コマンドラインからmimiumを実行することでmimiumを利用できます。正しくインストールされていれば以下のコマンドからヘルプが参照できます。

$mimium --help

現在の実行ディレクトリにhello.mmmというファイルを作成し、上のコードをコピーして保存してください。

そして、ターミナルから以下のコマンドを実行してみましょう(スピーカーの音量に注意してください)。440Hzのサイン波が聞こえてくるはずです。

$mimium hello.mmm

Making Soundのページからより詳しい文法の解説に進みましょう。


  1. macOS 11.0ではHomebrewでのバイナリ配布が現在行えないため、ソースからビルドが行われます。この場合XCodeのインストールなどが必要になります。 ↩︎

1 - インストール

mimiumをインストールしてみよう

Homebrewを使ったインストール

macOSとLinux向けのパッケージマネージャツール、Homebrewを利用すると、簡単にmimiumをインストールできます。

もしhomebrewをインストールしていない場合は、ターミナルアプリを開いて、以下の行をコピー&ペースト、Enterキーを押して実行してください。(より詳しい方法はhomebrewのドキュメントを参照してください。)

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

brewコマンドが使えるようになったら、以下のコマンドをコピー&ペースト、実行するとインストールされます。

brew tap mimium-org/mimium && brew install mimium

以下のコマンドを打ってバージョンが表示されたらインストール完了です!

mimium --version # will return mimium version:x.x.x

手動インストール

mimiumのビルド済みバイナリをGithub Release Pageからダウンロードすることが可能です。

mimium-vx.x.x-Darwin.zip がmacOS用、 mimium-vx.x.x-Linux.zip がLinux用、 mimium-vx.x.x-Windows.zip がWindows用です。

ダウンロードとzip展開が終わったら、binフォルダの中にあるmimiumプログラムを/usr/local/mimiumに、libフォルダにあるファイルすべてを/usr/local/libにコピー/移動/シンボリックリンクを貼るのいずれかを行ってください。GNU/Linuxにおいては/usr/local/libはデフォルトで動的リンクのライブラリパスに入っていないので、/usr/local/lib/etc/ld.so.conf.d/配下のファイルに追記し、ldconfigをroot権限で実行してください。Windowsでは適当な場所にダウンロードしたフォルダを配置して、環境設定からパスを通してください。

ソースからビルドする

mimiumの実行環境はC++で書かれていますので、ビルドにはC++のコンパイラーが必要です。 macOSの場合はxcode-select --installを実行してインストールされるclang、Linuxの場合はGCC >= 9が推奨されています。(g++ on macやclang++ on Linuxでは標準ライブラリのリンクに競合を起こすことがあります)

Windowsの場合は、MSYS2のMinGW64環境を利用してビルドできます。

加えて、以下のツールやライブラリが必要になります。

macOSでは、xcode-selectでclangをインストールしたタイミングでcmakeとgitはインストールされています。

これらに加えて RtAudio(クロスプラットフォーム向けオーディオドライバライブラリ) にも依存しますが、RtAudioはcmakeが自動でダウンロード&ビルドするので手動でインストールする必要はありません。

これらのツールやライブラリを brew やLinuxの場合は apt-get、MSYS2ではpacmanを用いてインストールするのが簡単です。

GitHubからソースコードをダウンロード

git clone https://github.com/mimium-org/mimium.git
cd mimium
# 'master' が安定版です。'dev'ブランチで開発版のビルドができます。他、v0.1.0などリリースバージョンのtagを用いてバージョンを変更することが可能です。
git checkout master 

CMakeのConfigure

cmake -Bbuild . -DCMAKE_BUILD_TYPE=Debug

このステップでCMakeは自動でRtAudioをダウンロード&ビルドします。

cmakeコマンドには、-Dを先頭につけることで以下のようなオプションが渡せます。

  • -DCMAKE_INSTALL_PREFIX=/your/directory 後述のインストールステップのコピー先(標準では/usr/local)
  • -DCMAKE_BUILD_TYPE=Debug 最適化のレベルの指定。 ‘Debug’, ‘Release’, ‘MinSizeRel’ , ‘RelWithDebinfo'から選べる
  • -DCMAKE_CXX_COMPILER=/path/to/compiler ビルドに使用するC++コンパイラの指定。
  • -DBUILD_SHARED_LIBS=ON ONにするとライブラリを動的リンクライブラリとしてビルドします(Linux、Windowsではうまく動かないケースがあります)。
  • -DBUILD_TEST=ON テストをビルド対象に含めます。
  • -DENABLE_COVERAGE=ON GCovを利用したカバレッジ計測のためのコンパイラオプションを有効化します。

ビルド

cmake --build build -j

-j はビルド時にCPUを並列で使用できる最大スレッド数を指定できます。-j8なら最大8スレッド、番号なしの-jは可能な限り多くのコア/スレッドを使用します。

インストール

cmake --build build target=install

アンインストール

cmake --build build --target uninstall

このアンインストールステップでは、先ほどのインストールステップで自動生成された build/install_manifest.txtに書かれている情報を利用してファイルを削除します。もし失敗した場合はこのファイルの中身を確かめるか、もう一度ビルド、インストールを行ったあとアンインストールするを順番に行ってみてください。

バイナリでインストールした場合は/usr/local/bin/mimium/usr/local/lib/libmimium*を削除してください。

ソースからビルドした場合は以下のコマンドでインストールできます。

Visual Studio Code向けシンタックスハイライト

シンタックスハイライトとして、クロスプラットフォームで動作するVisual Studio Code向けの拡張機能を用意しています。

vscode上でのextensionsパネルでmimium-languageと検索するか、以下のリンクよりインストールをしてください。

https://marketplace.visualstudio.com/items?itemName=mimium-org.mimium-language

2 - サウンドを作る

ここではmimiumを使った基本的なサウンドの作り方を学びます。

440Hzのサイン波の音をつくろう

  1. 初めに「hello.mmm」というファイルを用意します。
  2. そのファイルに以下のスニペットを貼り付けて、ファイルを保存します。
fn dsp(){
    output = sin(now*440*3.14*2/48000)
    return (output,output)
}
  1. 最後にbashなどを使って、先程のプログラムを起動します。
$ mimium hello.mmm

3 - サンプル例

mimium初心者のための例を交えた簡単な機能紹介。
  1. dsp系
  2. selfを使用した例
  3. シンプルなエフェクト
  4. composition系
  5. ドレミ音
  6. リズムパターン

サンプル: ドレミ音

下の例では、システムのオーディオドライバーのサンプルレートが48000Hzの時、ドレミファソラシドを1秒おきに鳴らします。

notes = [260.7,293.3,330,347.7,391.1,440,495]
index = 0
fn updateIndex(){
  index = (index+1)%7
  updateIndex()@(now+48000)
}
updateIndex()@48000
fn dsp(){
 vol = 0.2
 octave = 1
 sec = now/48000
 freq = notes[index]
 out = vol * sin(octave*freq*3.14*2*sec)
 return (0,out)
}

チェックポイント1「配列」

notes = [260.7,293.3,330,347.7,391.1,440,495] // 1行目

mimiumでは、配列を定義することができます。配列の定義は[]でおこないます。インデックスの先頭は0です。 この例のドレミ音を作る1行目の配列には、ドレミファソラシ音の周波数を格納し、その後の処理で使用しています。

  • ド音: 260.7Hz
  • レ音: 293.3Hz
  • ミ音: 330Hz
  • ファ音: 347.7Hz
  • ソ音: 391.1Hz
  • ラ音: 440Hz
  • シ音: 495Hz

配列の利用の仕方は、1,2行目のように配列名[インデックス]で表現します。 freq = notes[index] // 1,2行目

チェックポイント2 継時再帰(Temporal Recursion)

// 3~7行目
fn updateIndex(){
  index = (index+1)%7
  updateIndex()@(now+48000)
}
updateIndex()@48000

v0.3.0現在の仕様では、一般的な言語がもつforループ文は採用していませんが、再帰関数を定義して、再帰ループを3~6行目のように表現することができます。 ドレミ音の例では、7行目で48000サンプル時にupdateIndex()を実行した後、関数内でnowキーワードと@キーワードを併用して、現時点から48000サンプル時点にupdateIndex()を実行しています(5行目)。

チェックポイント3「nowキーワードと@キーワードの併用」

updateIndex()@(now+48000) // 5行目

mimiumでは、現在のサンプル数をnowで取得することができます。ユーザーは、v0.3.0現在の仕様では、nowキーワードが、リアルタイム時間を表していないことに注意してください。単位はサンプルです1

また、mimiumには、@キーワードという演算子があります。 これは 「@キーワード以降の式で算出されたサンプル数のときに、@前の関数を実行する」 という意味になります。 さらに、@の時間は、オーディオドライバが起動してからの絶対時間を示しており、7行目のようにupdateIndex()@48000と書いた場合は、必ず起動してから48000サンプル後に1度だけupdateIndex()を実行する形になります。 例の5行目では、now48000+演算子で結ぶことで、現時点から先のサンプル時点を定めることができ、さらに@を使うことでそのサンプル時点で関数を実行することができます。

チェックポイント4「オクターブ」

// 8~15行目
fn dsp(){
 vol = 0.2
 octave = 1
 sec = now/48000
 freq = notes[index]
 out = vol * sin(octave*freq*3.14*2*sec)
 return (0,out)
}

音階は、振動数(Hz)が倍になれば1オクターブ上がり、反対に半分になれば1オクターブ下がる関係性があります。例の8〜15行目では、octave = 1と固定なので260.7Hz〜495Hzのドレミファソラシド音を鳴らすのですが、例えばこの値を2と変更すれば1オクターブ上がった音階を表現することができます。


  1. mimiumには現在オーディオドライバのサンプルレートを動的に取得する方法がありません。これは今後のバージョンで環境変数という形で導入される予定です。。 ↩︎