macOS(Apple Silicon)でTidal Cyclesを安定動作させるためのインストール記録
概要
-
何を 扱う記事か一文で
この記事は、macOS(Apple Silicon)環境において、音楽ライブコーディング環境であるTidal Cyclesを安定して動作させることに成功したため、その具体的なインストール手順と、GHC 9.6.1との互換性問題の解決策を記録したものです。 - 読了目安時間:10 分
- ソースコード:設定ファイルのみのため、本文中に記載
背景 / モチベーション
Tidal Cyclesは強力なライブコーディング環境ですが、Haskellの実行環境(GHC)への依存が強く、特に新しいアーキテクチャであるApple SiliconのmacOSでは環境構築でつまずくことがありました。
今回、公式ドキュメントで推奨されているバージョンと、最新のTidal Cyclesの組み合わせで発生する互換性問題を解決し、安定した環境を構築できたため、その手順を記録として残します。
想定読者は、Tidal CyclesをmacOSで始めたいと考えているライブコーディング初心者から中級者の方です。
環境
| 項目 | バージョン / 備考 |
|---|---|
| OS | macOS (Darwin 23.5.0) |
| アーキテクチャ | aarch64 (Apple Silicon) |
| GHC | 9.6.1 |
| Cabal | 3.10.1.0 |
| TidalCycles | 1.10.1 |
手順
1. 推奨ツールチェーンのインストール
Tidal Cyclesの公式サイトでは、GHC 9.6系 + Cabal 3.10.1.0 の組み合わせが推奨されています。
ここでは、Haskellのツールチェーン管理ツールである ghcup を使って、推奨バージョンのコンパイラ(GHC)とビルドツール(Cabal)をインストールし、有効化しました。
# GHC (Haskellコンパイラ) 9.6.1をインストールして設定
ghcup install ghc 9.6.1
ghcup set ghc 9.6.1
# Cabal (Haskellビルドツール) 3.10.1.0をインストールして設定
ghcup install cabal 3.10.1.0
ghcup set cabal 3.10.1.0
# バージョンを確認
ghc --version
cabal --version
2. Tidal Cyclesのインストール
次に、Cabalを使ってTidal Cyclesをインストールしました。v1-install を使うのがポイントでした。
cabal update
cabal v1-install tidal
インストール後、パッケージが正しく登録されているか確認します。
ghc-pkg list | grep tidal
ghc-pkg field tidal version
3. GHC 9.6.1との互換性問題の解決
TidalCycles 1.10.1をGHC 9.6.1環境でそのまま使うと、Preludeモジュールが読み込めずにエラーが発生しました。これは、Tidal CyclesのデフォルトのBootTidal.hsファイルがGHC 9.6.1と完全な互換性がないためです。
エラー内容
<no location info>: error:
Could not load module ‘Prelude’
It is a member of the hidden package ‘base-4.18.0.0’.
You can run ‘:set -package base’ to expose it.
...
この問題を解決するために、カスタムのBootTidal.hsを作成しました。
解決手順
ステップ1: カスタムBootTidal.hsファイルの作成
Tidal Cyclesでコードを評価する際のカレントディレクトリ(通常は .tidal ファイルが保存されているフォルダ)に、BootTidal.hsという名前で以下の内容のファイルを作成しました。
-- BootTidal.hs
-- Expose the base package to make Prelude available
:set -package base
-- Explicitly import Prelude to ensure basic types and operators are in scope
import Prelude
:set -fno-warn-orphans -Wno-type-defaults -XMultiParamTypeClasses -XOverloadedStrings
:set prompt ""
-- Import all the boot functions and aliases.
import Sound.Tidal.Boot
default (Rational, Integer, Double, Pattern String)
-- Create a Tidal Stream with the default settings.
tidalInst <- mkTidal
instance Tidally where tidal = tidalInst
:set prompt "tidal> "
:set prompt-cont ""
重要なポイント:
-
:set -package baseでbaseパッケージを明示的に公開します。 -
import Preludeで基本的な型と演算子をスコープに含めます。 - これらの記述を
import Sound.Tidal.Bootの前に追加することが重要でした。
ステップ2: VSCode拡張機能の設定
VSCodeのsettings.jsonを開き、Tidal Cycles拡張機能の設定を変更して、カレントディレクトリのBootTidal.hsを読み込むようにしました。
settings.jsonは、プロジェクト(ワークスペース)ごと、またはユーザー全体で設定できます。プロジェクトごとに設定を分けたい場合は、.vscode/settings.jsonに記述するのがおすすめです。
{
"tidalcycles.ghciPath": "~/.ghcup/bin/ghci",
"tidalcycles.useBootFileInCurrentDirectory": true
}
"tidalcycles.useBootFileInCurrentDirectory" を true に変更するのがポイントです。
4. 動作確認
以上の設定が完了したので、動作確認を行いました。
SuperColliderおよびSuperDirtのインストールと設定がまだの場合は、以下の記事などを参考にセットアップを完了する必要があります。
- SuperColliderを起動し、SuperDirtをスタートさせます (
SuperDirt.start)。 - VSCodeで
.tidalファイルを開き、パターンを評価します(例:d1 $ sound "bd sd")。
エラーが出ずにSuperColliderから音が出力されれば、セットアップは成功です。
まとめ
本記事では、macOS(Apple Silicon)環境でTidal Cyclesを安定して動作させるための手順を記録しました。
-
ghcupを使い、推奨バージョンのGHCとCabalをインストールする。 -
cabal v1-installでTidal Cyclesをインストールする。 - GHC 9.6.1との互換性問題を解決するため、カスタムの
BootTidal.hsを作成・設定する。
この手順により、同様の環境でもスムーズにライブコーディングを開始できるかと思います。
Discussion