エーテリアルラジオの開発

2026/08/28 23:59

エーテリアルラジオの開発

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:

この技術実装の主な目的は、Final Fantasy XIVにおいて現実的な風の音をシミュレーションし、オーディオアセットの反復や検出システムが反復パターンを検知しないようにすることです。本システムは、FFXIV が提供する範囲内で再生パラメータを動的にランダム化することでこの目標を達成します:whir の再生レートは 0.794 から 1.0 の間で変動し、ゲイン(音量)は 0.6 から 1.0 の間で調整されます。ピッチとタイミングにおける自然な変化を模倣するために、whir の再生は

setTimeout
を用いてスケジュールされ、ランダムな遅延(0〜2000 ミリ秒、最大間隔は約 2001 ミリ秒)に基づいて計算されます。これにより、音イベントの発生から直前または直後に最大 2 秒の不確実なPauseが導入されます。重要なのは、システムがブラウザの機能に応じて特定のオーディオ形式をロードすることです:Safari 向けに
.wav.opus.aac
を使用し、他の環境では標準的な
.wav.opus
ファイルがロードされます。コードは
Math.floor(Math.random() * whirs.length)
を用いてアセット配列からの資産選択を明示的に管理しており、再生レートを明示的に 0.63 に設定する専用の「hum」オーディオソースも含まれています。whir ソースが終了した際、新しいものが
chooseWhir
関数を通じて作成される前にノードがグラフから切断されます。全体のグラフセットアップフローには、ノードの割り当て、メタデータ(レートとゲイン)の設定、接続の確立、そして
start(0)
の呼び出しが含まれます。ランダム遅延の追加とノードの切り替えによりわずかなレイテンシが発生しますが、whir イベント間の本来長い間隔を考慮するとその影響は軽微であるとみなされています。結局のところ、この方法は一貫性があり生々しい聴覚体験の創出に成功しています。

本文

FFXIV 風のオーディオ「生命感」を実現するランダム制御手法

FFXIV は、ウィアの再生間隔ピッチ(音高)、および**ゲイン(音量)をランダムに制御することで、資産が単純に繰り返していることを検知しにくい「生命感」**のような錯覚を生み出しています。

FFXIV 側で公開されている各パラメータの最小・最大値に基づき、JavaScript でこれらの挙動を実装することができました。

パラメータ設定の実装例

以下のコードは、再生速度と音量をランダム範囲内に収めるロジックです。

const whirIndex = Math.floor(Math.random() * whirs.length);

// 再生レート:0.794 〜 1.0 の範囲
const whirPlaybackRate = Math.random() * (1 - 0.794) + 0.794;

// ゲイン(音量):0.6 〜 1.0 の範囲
whirGainNode.gain.value = Math.random() * (1 - 0.6) + 0.6;

手動でのオーディオグラフ構築手順

一度もオーディオグラフを手作業で作成したことがなければ、通常は以下の流れを意識します。

  • ノードの割り当て
  • メタデータの設定
  • コネクション(接続)の確立

ヒューム(低周波音)の例では、以下の手順で設定を行います。

const humSource = audioContext.createBufferSource();

// サンプルロード(ブラウザごとの拡張子判定あり)
humSource.buffer = await loadSample(
    audioContext,
    isSafari ? "assets/hum.wav.opus.aac" : "assets/hum.wav.opus",
);

// 設定値の固定
humSource.playbackRate.value = 0.63;
humSource.connect(humGainNode);
humSource.loop = true;
humSource.start(0);

注意点:

loop
プロパティを設定する前にノードへの接続を行っていても問題ありません。なぜなら、このノードは
start()
を呼び出すまでサンプリングを生成しないためです。

ウィアのループ制御戦略

儀式のもう一つの重要な要素は「ウィアのループ」の実装方法です。従来の単純なループ制御フローではなく、以下の手法を採用します。

  • while(true)
    ループの回避
    • 無限ループの中にランダムなスリープ時間を挟む方式は採用しません。
  • setTimeout
    の活用
    • 次のウィアの再生をランダムな間隔でスケジュールします。

実装コード(リフレッシュ方式)

function chooseWhir() {
    const whirSource = audioContext.createBufferSource();
    
    // 1. ランダムなアセット選択とパラメータ設定
    const whirIndex = Math.floor(Math.random() * whirs.length);
    const whirPlaybackRate = Math.random() * (1 - 0.794) + 0.794;
    whirGainNode.gain.value = Math.random() * (1 - 0.6) + 0.6;

    // 2. ノードの初期化と接続
    whirSource.buffer = whirs[whirIndex];
    whirSource.playbackRate.value = whirPlaybackRate;
    whirSource.connect(whirGainNode);
    whirSource.start(0);

    // 3. エンド時の処理(ループではなく置換)
    whirSource.onended = () => {
        whirSource.disconnect(whirGainNode);
        
        // 次の再生までのランダムな遅延(ms)
        const nextWhirDelay = Math.floor(Math.random() * 2001);
        setTimeout(chooseWhir, nextWhirDelay);
    };
}

この実装の重要なポイント

  1. ソースアセットの置換

    • ソースアセットが終了した際にループさせるのではなく、そのノードをグラフから削除して新しいものに置き換えます(再度
      chooseWhir()
      を呼び出す)。
    • ゲインノード自体は不変であり、値のみを更新します。
  2. レイテンシの許容性

    • 次のウィアの再生には期待される遅延時間があります。
    • ランダム計算によって生じるわずかなレイテンシを加えても差し支えないため、無視できるレベルのものとして扱えます。

同じ日のほかのニュース

一覧に戻る →

2026/08/30 4:33

騰訊發布並開源騰訊Hy4預覽版

## Japanese Translation: 以下の改良版は、完全性を保ちながら読みやすさを維持するため、不足していた技術仕様と性能指標を組み込んでいます。 ## 改善された要約 Tencent は次世代の 770B パラメータを持つ大規模言語モデル(アクティブパラメータ:49B)「Hy4 preview」をローンチしました。このモデルは高生産性タスクに特化して最適化されており、1M トークンを超える広大なコンテキストウィンドウを備えています。Hy4 はシリーズ初となる自主的なトレーニングおよび推論システムの最適化を実現し、オペレーターフュージョンによりエンドツーエンドのスループットを 31.8% 向上させました。内部での盲目評価において、203 のエンジニアリングタスクにわたる 163 名の専門家によって行われ、GLM-5.3(2.92)および Kimi K3(2.94)に対してそれぞれ 2.99/4.00 と高いスコアを記録し、主要競合他社を上回りました。 ソフトウェアエンジニアリング、ゲーム、金融、科学の分野で Tencent の専門家によって共同作成された高品質なデータを用いてトレーニングされた Hy4 は、長文脈開発、単一のプロンプトからのゲームプロトタイピング、分子動力学や物理学などの科学研究分野において明確な優位性を発揮します。現在、Hy4 は Tencent Cloud TokenHub および OpenRouter を介して世界中で利用可能であり、競合的 API 料率(入力トークンあたり 83.4 米セント)で提供されています。同モデルは WorkBuddy および CodeBuddy の Tencent プラットフォーム上で 2 週間無料利用が可能ですが、前世代の Hy3 は引き続き 9 月 30 日までの間アクセス可能です。

2026/08/24 14:09

Tether:Linux での iMessage や SMS の利用

## Japanese Translation: テザー(Tether)は、iPhone とペアリングされた際の macOS の「Continuity」機能——iMessage、SMS、コンタクト同期、通知、ファイル共有、クリップボード同期、ワンタイムパスワード(OTP)の自動入力——を Linux へ統合し、KDE Connect など既存ソリューションが補えていないギャップを埋めています。セキュリティは当初から最優先事項であり、iOS と Linux の通信には mTLS 暗号化を採用し、定期的に Opus および Fable のセキュリティスキャンを実施することで実現しました。他のメールクライアントへの広範なサポートはまだ利用できません。開発者はバックエンド開発を優先し、拡張子の移植には集中しないためです。OTP の自動入力は、Zen Browser(Firefox)と Betterbird(Thunderbird)向けのブラウザおよびメール拡張機能を通じて行われ、メールからコードを拡張機能へ送ってログインフォームの自動埋め込みを実現します。 直接の iMessage/SMS アクセスのための Bluetooth 統合は、GPL ベースのプロジェクト(例:ancs4linux や BlueFerry)とのライセンス衝突を避けるために、独自のカスタム C++「クリーンルーム」手法を用いて実装されています。テザーは引き続き MIT ライセンスを採用しています。現在の Linux ベースのデーモンは、Tailscale などの earlier プロキシ方式と比べてより優れた直接的な接続体験を提供しており、ユーザーからは不快であると評価されていました。iOS アプリが先に登場し、当初は基本的なクリップボード同期のみを処理し、その後に広範な Continuity スタックが構築されました。 ファイル共有およびプッシュ通知は直ちに利用可能ですが、ハードウェア制約や Bluetooth 切断の問題など、将来のアップデートにおける課題依然存在しています。特に Bluetooth の実装は 2026 年においてもエッジケースが多いため困難です。本プロジェクトは金銭的利益よりも真なる価値と満足感を提供することを目指しており、シームレスなクロスプラットフォーム接続を求める技術愛好家にとってユニークなツールとなっています。バグレポート、機能要望、翻訳、ドキュメントなどの貢献をコミュニティから歓迎します。

2026/08/30 3:22

vLLM 0.28.0

## Japanese Translation: このリリースは、主要なアーキテクチャ変更と拡張ハードウェアサポートにより AI 推論を加速することに焦点を当てた決定的なアップグレードです。主なパフォーマンス向上としては、ファインズドカーネルによって大きなモデル(特に MegaMoE)で最大 1.5〜3 倍の高速化、推論の最適化(DFlash2/DSpark)、GPU ごとに約 17 GiB のメモリ節約を実現する共有エキスパートシャッディングなどがあります。この更新はハードウェア互換性を大幅に拡大し、NVIDIA アーキテクチャ(Blackwell SM90/B12X を含む、ネイティブな DSA/FlashInfer パスを備えたもの)および AMD ROCm プラットフォーム(gfx950/gfx120x)、MLA および FP8 推論向けの特定の最適化を可能にします。 機能面では、Weight Offloading、マルチレイヤー MTP KV キャッシュ、アテンション不要なモデルサポートといった機能を備えた Model Runner V2 が導入されました。また、バッチトークン上限値を 16384 に倍増させたり、Mamba モデルにデフォルトでプレフィックスキャッシュを有効化したりするなどの推論デフォルトも標準化されています。エコシステムの主要な更新としては、PyTorch 2.12 と Transformers 5.15.0 への移行が必須となり、ディスクオフローディングをサポートする階層型 KV キャッシュシステムが追加されました。さらに、gRPC を通じたネイティブ Rust フロントエンドサポートが追加され、Muse Glimmer、Ling 3.0 Flash、Qwen3.8 など多数の新しいモデルへの対応も開始(AMD 向け)。組織は、これらの高度な機能を利用するために、非推奨化された関数や特定の依存関係に関する破壊的な変更に対応する必要があります。