概要
MATLAB用のマルチチャンネルオーディオ信号の同時入出力ライブラリplayrecの最新インストール方法についてご紹介します。
#2025年07月16日時点情報
#テスト環境: Windows 11, Intel 64-bit, MATLAB 2023a, Visual Studio 2019
# macOS 15.5, AppleSilicon 64-bit, MATLAB 2024a, Xcode 15
背景
playrecは2015前後に開発を停止し,それ以来win64への対応問題や,最近ではPortAudio/Windows SDK/macOSの仕様にアップデートできていないため,
公式情報のみでインストールができなく,さらにネット情報を手掛かりにインストールすることも大変時間と手間がかかるので,本サイトで情報をまとめました。
なお,現在MATLABのAudioToolboxはplayrecとほぼ同様な機能(audioPlayerRecorder)をサポートしていますので,
アカデミア版や個人版MATLABユーザでしたら代わりにAudioToolboxの使用をおすすめします。
一方で企業用ライセンスに関してはAudioToolboxが高価なので,筆者と同様に困っている方に一助になれば幸いです。
インストール手順(OS共通)
まず,playrec公式の最新情報を参考に準備します。
最新版ファイルはGitHubからダウンロードできます
またOSと関わらず最新版PortAudio(v19.7.0 stable release)のダウンロードが必要となります。
それからplayrecの.mスクリプトに少し修正を加える必要があります。
64-bit Windowsへの対応は羽田陽一先生のサイト,PortAudio仕様変更への対応はGitHub上alastairhmooreさんのスレッドを参考に
playrec-master/m_files/compile_playrec_func.m
line 42-56: 'src/os/mac_osx'を削除
修正前
pa_include_dirs = {'src/common',...
'src/hostapi/alsa',...
'src/hostapi/asihpi',...
'src/hostapi/asio',...
'src/hostapi/coreaudio',...
'src/hostapi/dsound',...
'src/hostapi/jack',...
'src/hostapi/oss',...
'src/hostapi/wasapi',...
'src/hostapi/wdmks',...
'src/hostapi/wmme',...
'src/os/mac_osx',...
'src/os/unix',...
'src/os/win',...
'include'}; %just include all possibilities!
修正後
pa_include_dirs = {'src/common',...
'src/hostapi/alsa',...
'src/hostapi/asihpi',...
'src/hostapi/asio',...
'src/hostapi/coreaudio',...
'src/hostapi/dsound',...
'src/hostapi/jack',...
'src/hostapi/oss',...
'src/hostapi/wasapi',...
'src/hostapi/wdmks',...
'src/hostapi/wmme',...
'src/os/unix',...
'src/os/win',...
'include'}; %just include all possibilities!
line 78-80: 'src/os/mac_osx/pa_mac_hostapis.c'を'src/os/unix/pa_unix_hostapis.c'へ変更
修正前
pa_os_specific_files = [pa_os_specific_files, ...
{'src/os/mac_osx/pa_mac_hostapis.c', ...
'src/os/unix/pa_unix_util.c'}];
修正後
pa_os_specific_files = [pa_os_specific_files, ...
{'src/os/unix_osx/pa_unix_hostapis.c', ...
'src/os/unix/pa_unix_util.c'}];
(optional, mac版ASIO未テストのため) line 84-93: macOS ASIO用修正
修正前
api_include_dirs = [api_include_dirs, ...
resolve_paths(asio_path,...
{'common',...
'host',...
'host/mac'})];
api_files = [api_files,...
resolve_paths(asio_path,...
{'host/asiodrivers.cpp',...
'host/mac/asioshlib.cpp',...
'host/mac/codefragements.cpp'})];
修正後
api_include_dirs = [api_include_dirs, ...
resolve_paths(asio_path,...
{'common',...
'host'})];
api_files = [api_files,...
resolve_paths(asio_path,...
{'host/asiodrivers.cpp'})];
line 104: macOS CoreAudio用修正
修正前
compiler_flags = [compiler_flags, {'PA_USE_COREAUDIO'}];
修正後
compiler_flags = [compiler_flags, {'PA_USE_COREAUDIO=1',...
'__MACOSX_CORE__'}];
line 114: WIN64用修正
修正前
compiler_flags = [compiler_flags, {'WIN32'}];
修正後
if strcmp(computer, 'PCWIN64')
compiler_flags = [compiler_flags, {'WIN64'}];
else %strcmp(computer, 'PCWIN32')
compiler_flags = [compiler_flags, {'WIN32'}];
end
playrec-master/m_files/build_mex.m
line 94: WIN64用修正
修正前
build_args = {build_args{:}, ['LIB#', cell2mat(lib_dirs(n)), ';$LIB']};
修正後
if strcmp(computer, 'PCWIN64')
build_args = {build_args{:}, ['-L', cell2mat(lib_dirs(n))]};
else %strcmp(computer, 'PCWIN32')
build_args = {build_args{:}, ['LIB#', cell2mat(lib_dirs(n)), ';$LIB']};
end
羽田先生のサイトに記述されている他の修正点について,GitHub最新版ではアップデートされているので修正は不要です。
インストール手順(Windows)
Windowsの場合,C++コンパイラ(筆者はVisual Studio 2019),Windows SDK(筆者は10.0.26100.0)をダウンロードする必要があります。
また,ASIOを使用する場合は,ASIO SDKをあらかじめ用意してください。
DirectSoundサポートは以前されていましたが,筆者は現在のSDKでインストールできませんでした。
playrec-master/compile_playrec.mを実行し,指示通りに進めばインストールはできるはず。
#前述の通り,DirectSoundのチェックボックスを外してください。
#PortAudioとASIOのフォルダをplayrec-master/libに入れると実行時自動にパスを探してくれます。
#Platform SDK DirectoryはC:\Program Files (x86)\Windows Kits\10となります。
#フォルダにplayrec.mexw64が生成されたら多分インストールはできています。
インストール手順(macOS)
macOSの場合,インストールはかなり大変で,筆者は何度も心が折れましたが,CoreAudioのみでしたら下記の通りをやればできると思います。
Windowsと同様にplayrec-master/compile_playrec.mを実行し,指示通りに進めます。
#ASIOのチェックをいれるとC++のコンパイラ(Xcode Clang++)が使用されて,portaudioのコンパイルが通らなくなるので外してください。
#Jack Audio Connection Kitも,途中でファイルが見つからないというエラーが出るので外してください。
#DebugとVerboseは必ずチェックを入れてください。
途中でエラーが発生し,コンパイルが終了されますが,フォルダに.oファイル(mex_dll_core.oなど)が10個ほど生成されているであれば次に進みます。
このタイミングでコマンドウィンドウのログを遡ります。エラーコード直前の一行とさらに一行前のコマンドをコピーします。
環境によって内容が異なる場合もあると思いますが,下記のようなログが出ていると思います。([USERNAME]はログインしているユーザ名となります)
コマンドA
/Applications/MATLAB_R2024a.app/bin/maca64/usResourceCompiler3 --manifest-add
/private/var/folders/4t/wrqf688j0tldphxlqcl8nggc0000gn/T/mex_20302766153414_11620//mw_mex_tempmex_manifest.json
--bundle-name mexVersioning --out-file
/private/var/folders/4t/wrqf688j0tldphxlqcl8nggc0000gn/T/mex_20302766153414_11620//mw_mex_tempmex_bundle.zip
コマンドB
/usr/bin/xcrun -sdk macosx15.5 clang -Wl,-twolevel_namespace -arch arm64 -mmacosx-version-min=11.0 -Wl,
-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk
-bundle -Wl,-exported_symbols_list,"/Applications/MATLAB_R2024a.app/extern/lib/maca64/mexFunction.map"
mex_dll_core.o pa_dll_playrec.o pa_allocation.o pa_converters.o pa_cpuload.o pa_debugprint.o pa_dither.o
pa_front.o pa_process.o pa_ringbuffer.o pa_hostapi_skeleton.o pa_stream.o pa_trace.o pa_mac_core.o pa_mac_core_utilities.o
pa_mac_core_blocking.o pa_unix_hostapis.o pa_unix_util.o c_mexapi_version.o -g -Wl,-exported_symbols_list,
"/Applications/MATLAB_R2024a.app/extern/lib/maca64/c_exportsmexfileversion.map" -L"/Applications/MATLAB_R2024a.app/bin/maca64"
-lmx -lmex -lmat -lc++ -o /Users/[USERNAME]/Documents/MATLAB/playrec-master/playrec.mexmaca64 -Wl,
-sectcreate,__TEXT,us_resources,/private/var/folders/4t/wrqf688j0tldphxlqcl8nggc0000gn/T/mex_20282859537241_11620//mw_mex_tempmex_bundle.zip
これらをテキスト編集ソフトにペーストし,編集します。
まず,コマンドB(実際1行しかありませんが)3行目にあるmex_dll_core.oの直前に下記の内容を追加します。
-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreFoundation -framework CoreServices
次に,コマンドAの2行目,4行目とコマンドB最後にある/private/var/...というパスを適当なアクセスできるフォルダに書き換えます。例えば:
/Users/[USERNAME]/Downloads/mw_mex_tempmex_manifest.json
/Users/[USERNAME]/Downloads/mw_mex_tempmex_bundle.zip
#この.zipファイルは一時的に生成されます。インストール完了後は手動で削除してください。
編集後のコマンドはこんな形になります。
コマンドA
/Applications/MATLAB_R2024a.app/bin/maca64/usResourceCompiler3 --manifest-add
/Users/[USERNAME]/Downloads/mw_mex_tempmex_manifest.json
--bundle-name mexVersioning --out-file
/Users/[USERNAME]/Downloads/mw_mex_tempmex_bundle.zip
コマンドB
/usr/bin/xcrun -sdk macosx15.5 clang -Wl,-twolevel_namespace -arch arm64 -mmacosx-version-min=11.0 -Wl,
-syslibroot,/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.5.sdk
-bundle -Wl,-exported_symbols_list,"/Applications/MATLAB_R2024a.app/extern/lib/maca64/mexFunction.map"
-framework CoreAudio -framework AudioToolbox -framework AudioUnit -framework CoreFoundation -framework CoreServices
mex_dll_core.o pa_dll_playrec.o pa_allocation.o pa_converters.o pa_cpuload.o pa_debugprint.o pa_dither.o
pa_front.o pa_process.o pa_ringbuffer.o pa_hostapi_skeleton.o pa_stream.o pa_trace.o pa_mac_core.o pa_mac_core_utilities.o
pa_mac_core_blocking.o pa_unix_hostapis.o pa_unix_util.o c_mexapi_version.o -g -Wl,-exported_symbols_list,
"/Applications/MATLAB_R2024a.app/extern/lib/maca64/c_exportsmexfileversion.map" -L"/Applications/MATLAB_R2024a.app/bin/maca64"
-lmx -lmex -lmat -lc++ -o /Users/[USERNAME]/Documents/MATLAB/playrec2025/playrec.mexmaca64 -Wl,
-sectcreate,__TEXT,us_resources,/Users/[USERNAME]/Downloads/mw_mex_tempmex_bundle.zip
ターミナルを開きます。.oファイルが生成されたフォルダに移動します。
cd /Users/[USERNAME]/Documents/MATLAB/playrec-master
編集後のコマンドAをターミナルで実行します。エラーが出るが無視します。
この段階で上述のmw_mex_tempemx_bundle.zipは生成されているはずです。
コマンドBをターミナルで実行します。
終了後,.oファイルのフォルダにplayrec.mexmaca64が出来上がったらインストールは完了となります。
#.oファイルは終了後削除しても問題ないです。