HQStream Bridge lite
- Digital0 JPY

【macOS専用】HQStreamBridge Lite 〜 「引き算」で丁寧に作った Bit-Perfect オーディオプレーヤー&ストリーマー 〜 Macの音楽を、なるべくそのままUSB DACやネットワークプレーヤーに届けたくて作ったアプリです。 イコライザーもアップサンプラーも入っていません。音に何かを足す機能は最初から作らないと決めていました。そのかわり、劣化やノイズの原因になりそうなものを地道に引いていく。そういう作り方をしています。 Macで鳴っている音をキャプチャして送る機能もあります(これはこれで便利です)が、本気で作り込んだのはローカルファイル再生のほうです。 ■ やっていることは「引き算」だけ その1. 仮想オーディオデバイスを使いません。 システム音を拾うときはOS標準のタップ機能で直接取り込みます。ローカルファイル再生なら、そのタップすら通らない最短経路を選べます(USB DAC直結のとき)。途中でビットに触る処理は入れていません。音量調整すら付けていませんが、これは手抜きではなく設計です。理由は下の注意点で。 その2. 再生中のMacをなるべく静かにします。 ・Memory Play:曲を丸ごとRAMに展開して、再生中はストレージに触らない ・Pure Playback:再生中の画面更新や雑多な処理を抑える ・Engine Backend「subprocess」:再生エンジンをGUIと別プロセスに分ける。画面をいじったときの負荷が音声処理に波及しにくくなります このあたりは全部入れた状態(subprocess + Pure Playback + Memory Play)がいちばん効きます。Advanced Settingsからどうぞ。 細かいところでは、先読みなどの裏方スレッドはわざと低優先度にしてあり、Apple Siliconでは高効率コア側に寄ります。性能コアは音声のために空けておく、という考え方です。 その3. USB DACは占有します。 Hog ModeでDACを排他確保して、他のアプリの音やOSミキサーが混ざらないようにします。物理フォーマットは整数のまま維持し、曲のサンプルレートに合わせてDAC側も自動で切り替わります。 ■ ネットワーク送信も「引き算」で ネットワークプレーヤー(UPnP/DLNA)には、無加工のPCM(WAV)をそのまま送ります。受け側の機器が自分のクロックで読み出していくpull型なので、送り手側の事情が機器のクロックに入り込まない構成です。 ここから先は完全に趣味の領域ですが、送信エンジンはPython実装とネイティブ(Swift)実装の2系統あり、Advanced Settingsから切り替えて聴き比べができます。ネイティブ側は送信タイミングを単調クロックの絶対スケジュールで管理していて、起床精度は実測でマイクロ秒のオーダー。統計値も確認できます。送り方も選べて、標準のほかに、チャンクを小さく等間隔で送る等時(isochronous)モードを用意しました。 どの送り方がいいかは機器との相性なので、実測ツールも付けました。「Measure Profile」ボタンを押すと、手持ちの曲を使って送信設定の組み合わせを実際に再生しながら測り、いちばん安定した設定を機器ごとのプロファイルとして保存します(実再生で回すので、短めの曲で試すのがおすすめです)。 送り方なんてどれも同じだろう、と言われればそれまでなのですが、ここを詰めたくなる人に向けて作っています。 ■ 使い方の目安 ローカルファイル再生(おすすめ) WAV/FLAC/AIFFをプレイリストで管理して、USB DAC直結かネットワーク送信で再生します。音質を優先するならこちらです。 キャプチャ送信 Macで鳴っている音(音楽配信サービスやブラウザなど)を、アプリ単位またはシステム全体で拾ってキャストします。気軽にいろいろ聴きたいときに。音質の作り込みはローカル再生ほどではありません。 画面はライトモードに馴染む白基調で、設定はアコーディオンを開け閉めするだけのシンプルなものです。いまBit-perfectで鳴っているか、USB側のフォーマットが何か、といった状態は表示で確認できるようにしてあります。耳だけだと不安になるので。 ■ 注意点(大事です) 音量調整機能はありません。デジタルで絞る処理を入れたくなかったためです。必ずDACやアンプの音量を下げてから再生を始めて、ハードウェア側で調整してください。ここだけは本当に気をつけてください。 初回起動時に「画面収録とシステムオーディオ録音」(OSのバージョンによっては「画面収録」)と「ローカルネットワーク」の許可を求められます。音を拾うためと機器を探すためで、画面の録画はしていません。macOSのアップデート後にこの許可が外れて、キャプチャだけ音が出なくなることがあります。そのときは設定から再許可してください。 なお、取り込んだ音声の扱いは各コンテンツの利用条件の範囲でお願いします。 ■ 動作環境 macOS 14.2 (Sonoma) 以降 / Apple Silicon Mac(M1〜M4シリーズ) 配布の.appだけで動きます。ドライバや仮想デバイスの追加インストールはありません。 ■ 無料です 伝送品質を考えながら作った実験的なアプリです。「うちのDACだとこうだった」「ここが使いにくい」といった感想がいちばんの開発材料になるので、無料で置いておきます。まずはローカルファイル再生から、気軽に試してみてください。 ■ English HQStreamBridge Lite — a free, bit-perfect audio player & streamer for macOS Play your local files (WAV / FLAC / AIFF) bit-perfect to a USB DAC, or stream them untouched to a UPnP/DLNA network player. No virtual audio device, no drivers — just the .app. Apple Silicon, macOS 14.2+. Free. The idea: subtraction I wanted to get the music on my Mac to a USB DAC or a network player with as little done to it as possible. There's no EQ and no upsampling — I decided early on not to add anything to the sound, and instead to keep taking things away: whatever might cause degradation, noise, or interference. No virtual audio device. System capture uses the OS's built-in tap directly; for local files you can take an even shorter path that skips the tap entirely. Nothing touches the bits along the way. A quiet Mac during playback. Memory Play (whole track into RAM), Pure Playback (holds back screen redraws and busywork), and an optional separate-process playback engine. Background threads run at low priority and get pushed to the efficiency cores on Apple Silicon, leaving the performance cores for audio. Exclusive USB DAC. Hog Mode takes the DAC for itself so no other app or the OS mixer can mix in. It keeps the physical format as integer and matches the sample rate to the track automatically. The network side To a UPnP/DLNA player it sends plain, untouched PCM (WAV), pull-style — the player reads on its own clock. For the curious, there are two transport engines (a Python one and a native Swift one) you can switch between and compare by ear, plus a standard and an "isochronous" send mode. A built-in "Measure Profile" tool plays a track of yours through the different settings, measures them, and saves the most stable one per device. (Use a short track — it plays for real.) How you'd use it Local file playback (the main event) — WAV/FLAC/AIFF in a playlist, straight to a USB DAC or out to a network player. This is the one for when sound quality comes first. Capture & send — Grab whatever your Mac is playing (streaming services, a browser) per-app or system-wide and cast it to the network. Handy, though not built to the same standard as local playback. The status display shows whether it's actually running bit-perfect and what the USB format is — so you can see it, not just hope. Please note (important) There's no volume control — I didn't want a digital attenuator in the path. Turn your DAC or amp down before you start, and adjust on the hardware side. On first launch it asks for "Screen & System Audio Recording" (or just "Screen Recording," depending on your macOS version) and "Local Network" — for capturing audio and finding devices. It does not record your screen. After a macOS update these can get dropped and capture goes silent; just re-grant them in Settings. Please keep your use of captured audio within the terms of whatever you're listening to. Requirements macOS 14.2 (Sonoma) or later · Apple Silicon Mac (M1–M4) · runs from the .app alone, nothing else to install. It's free — an experiment in transmission quality. The best fuel for it is hearing how it does with gear that isn't mine, so I'm leaving it up for free. Feedback very welcome.
