TuneFerry icon

TuneFerry

IC レコーダー、iPhone のボイスメモ、業務用フィールドレコーダー。あらゆる録音物を iPhone 上の "自分のライブラリ" として整理・再生する、Apple ネイティブのオーディオプレイヤー。

かつて iPod classic がそうだったように、聴きたい曲を「持っている」感覚を取り戻すための iPhone アプリ。

TestFlight 先行公開中 v0.0.1 · iOS 17.0+ iPhone 専用
TuneFerry プレイリスト Cover Flow 画面

こんな人のためのアプリ

音楽の素材を「自分のもの」として手元に置きたい人へ。配信サービスでは扱えない、自分で録った音・自分で持っている音のための場所。

🎤

練習録音を整理したい音楽家

ボーカル・楽器の自宅練習、レッスン録音、リハーサル、ライブ録音。IC レコーダーや iPhone のボイスメモで撮った素材を、日付・テイク・楽曲ごとに整理。後で聴き返して上達を確認できる。

📼

フィールドレコーダー使い

ZOOM H シリーズ、Sound Devices MixPre、TASCAM 等で記録した素材を、業務メタデータ (BWF/iXML) を保ったまま iPhone に集約。シーン名や録音時刻が落ちないので、後の編集や納品で迷わない。

📀

iPod classic を懐かしむ Apple ファン

かつて iPod に CD から曲を移して「自分のライブラリ」を作っていた頃の体験を、現代の iPhone で。Cover Flow、ハプティックなクリック感、Apple 純正フレームワーク (SwiftUI/AVAudioEngine) で実装された軽快な操作感。

主要機能

IC レコーダー / iPhone ボイスメモ / 業務フィールドレコーダー — 録音元を問わず、iPhone 上で「自分のライブラリ」を組み立てるための機能セット。

📥

USB / SD / iPhone から取り込み

USB-C ストレージ・SD カード・Files.app に保存したボイスメモまで、ソースを問わず取り込み可能。フォルダを 1 度登録すれば、フォアグラウンド復帰時に新規ファイルを自動取り込み。原本は不変。

🎚️

多軸ソート + スマート検索

追加日時 / タイトル / アーティスト / アルバム / 再生時間 / フォーマット / サンプルレート / ファイルサイズの 8 軸でソート + 全文検索。

📦

アルバム化 + 一括編集

1 イベントで取り込んだ複数 Track を選択 → アルバム化 / 一括編集 (アーティスト・アルバム) / 一括ノーマライズ / 一括削除。

🌊

WAV 詳細メタデータ + 32bit float

RIFF / LIST-INFO / BWF (bext) / iXML を解析し、ZOOM F・Sound Devices などの業務メタデータを保持。Format Tag を読み取って 32bit float (IEEE Float) と PCM int を区別表示。マニフェスト JSON でファイル外にも記録。

🎛️

ノーマライズ (Peak / RMS / Tilt EQ)

取り込み時に音量を自動正規化。ピーク / RMS (-16 dBFS) / RMS+Tilt EQ (-2 dB high-shelf @ 4 kHz) から選択可能。耳につく高音を緩和。

🎧

空間オーディオ + Head Tracking

AVAudioEngine + AVAudioEnvironmentNode (HRTFHQ) でステレオを 3D 配置。AirPods のヘッドトラッキングで音場が頭の動きに固定される。

🎨

ジャケット (PhotosPicker / AI 生成)

写真は短辺基準で正方形にトリミング。写真未指定時はジャンル毎の自動ジャケット生成。iOS 18.2+ で Image Playground による AI 生成にも対応。

🔊

バックグラウンド再生 + Now Playing

ロック画面・コントロールセンター・AirPods のリモコンに対応。再生キュー / 自動次曲遷移 / 電話などの割り込み復帰。

画面で見る TuneFerry

iPhone 上での実際の操作フローを 5 つの画面で紹介。iOS 17+ / iPhone 専用、Swift 5.9 + SwiftUI + SwiftData + AVAudioEngine で実装。

ライブラリの複数選択 + 一括操作メニュー
01 — Library

1 タップで複数曲をまとめて操作

「選択」モードに入ると、左の丸チェックで複数の録音をまとめて選べます。右上のメニューから アルバム化 / 一括編集 / ノーマライズ実行 / 削除 がワンアクション。練習録音 8 テイクを一気に「○月のレッスン」アルバムにまとめる、といった運用がスムーズです。

  • 選択モードのトグルとチェック UI
  • ボトムタブで「曲 / プレイリスト / USB / 設定」を切り替え
  • Recorder_xxxx 連番ファイル (ZOOM 系) も自動で並ぶ
SwiftData @QueryiPad 非対応 (iPhone 専用)
新規アルバム作成 (ジャケット + ジャンル指定)
02 — Album

1 イベントを 1 アルバムへ

選択した曲をひとまとめにして、ジャケット (写真ライブラリから or AI 生成) とジャンルを与えるとアルバムができあがります。写真は 短辺基準で自動的に正方形にトリミング されるので、横向きの撮影でも縦向きでも迷わずジャケット風に整います。

  • iOS 18.2+ なら Image Playground で AI 生成
  • ジャンル選択でジャケットの色合いも自動調整
  • アルバム化された曲は「曲」タブから外れ、リストがすっきり
PhotosPickerImage Playground正方形クロップ
プレイリスト Cover Flow + アイコン表示
03 — Cover Flow

横スワイプで切り替える、所有感のある音楽棚

プレイリストタブの上部は iPod / iTunes 時代の Cover Flow を彷彿とさせる横スワイプ式の大きいジャケット表示。下部はリスト / アイコン (2 列グリッド) を切り替え可能で、自分のコレクションを「所有している」感覚で並べ直せます。タップでそのまま全曲再生が始まります。

  • カードタップで即再生、「ⓘ」で詳細画面
  • アイコン表示はジャケットを並べる音楽棚風
  • 長押しで「詳細 / 削除」のコンテキストメニュー
SwiftUI TabView pagingHaptic feedback
USB プロファイル管理 + 自動取り込み
04 — Auto Import

USB / SD / iPhone のボイスメモから自動取り込み

取り込み元のフォルダを「プロファイル」として一度だけ登録すれば、以降は アプリを開く・前面に戻すたびに新規ファイルだけを自動でライブラリにコピー。原本ファイルは触らず、TuneFerry 内部のコピーだけを管理対象にします。IC レコーダーの USB、SD カードリーダー、iPhone のボイスメモ、外付け SSD など、どのソースでも同じ仕組みで動作します。

  • Security-Scoped Bookmark で次回もそのフォルダから開始
  • 同名 + 同サイズで重複検出 → 確認ダイアログ
  • 取り込み時に自動ノーマライズ (任意設定)
UIDocumentPickerNSMetadataQuery原本不変
設定画面 (ノーマライズ + 空間オーディオ)
05 — Settings

ノーマライズと空間オーディオを思いどおりに

取り込んだ録音物の音量を整える ノーマライズは 3 方式から選択: シンプルなピーク正規化 / RMS 正規化 / RMS + 4 kHz High-shelf -2 dB の Tilt EQ。フィールド録音で目立ちやすい「耳につく高音」を抑える設計まで含まれています。AirPods での空間オーディオ + ヘッドトラッキングも 1 タップで切替。

  • 目標ピーク -1.0 dBFS をスライダーで微調整
  • RBJ Audio EQ Cookbook 準拠の biquad フィルタ
  • AirPods Pro / Max / 第 3 世代以降に対応
AVAudioEngineHRTFHQCMHeadphoneMotionManager

開発状況

Phase 1〜6 の実装フェーズで段階的にリリース。各 Phase 完了で TestFlight 配信。

完了

Phase 0 — Bootstrap

プロジェクト雛形 / CI / TestFlight 配信パイプライン

完了

Phase 1 — MVP

UIDocumentPicker 取り込み / AVFoundation 再生 / 基本ソート

完了

Phase 2 — 永続化

SwiftData / プレイリスト / 多軸ソート + アルバム化 / アートワーク / Cover Flow

完了

Phase 3 — Auto Import

USB プロファイル / 自動取り込み / Custom Folder Picker

対応済み

Phase 4 — Format Expansion

WAV メタデータ抽出 / 32bit float 判別 / 3 方式ノーマライズ / マニフェスト JSON

対応済み

Phase 5 — Spatial Audio

AVAudioEngine + AVAudioEnvironmentNode (HRTFHQ) + Head Tracking + Stereo Upmix + Ambisonics デコード

完了

Phase 6 — Polish

バックグラウンド再生 / Now Playing / Haptic / Image Playground

テクニカルスペック

対応 OS
iOS 17.0+ (iPhone 専用)
言語
Swift 5.9+ / SwiftUI / Swift Concurrency
データ層
SwiftData (Track / Playlist / USBProfile @Model)
再生エンジン
AVAudioEngine + AVAudioPlayerNode + AVAudioEnvironmentNode (HRTFHQ)
取り込み
UIDocumentPicker + Security-Scoped Bookmark + コピー方式 (原本不変)
メタデータ
AVURLAsset.commonMetadata + RIFF/INFO/bext/iXML パーサー + WAV Format Tag 解析 (32bit float 判別) + マニフェスト JSON
サンプル形式
16/24/32 bit PCM int + 32 bit float (IEEE Float) + Extensible (SubFormat GUID 解決) を判別表示
音量正規化
Peak / RMS / RMS + High-shelf Tilt EQ (RBJ Audio EQ Cookbook)
空間オーディオ
AVAudioEngine + AVAudioEnvironmentNode (HRTFHQ) + CMHeadphoneMotionManager (AirPods Pro / Max / 第3世代)
AI ジャケット生成
Image Playground (iOS 18.2+ / Apple Intelligence)
CI/CD
Jenkins (Tailscale 経由) / develop マージで自動 TestFlight 配信
署名
Automatic Signing (Team: TNU5GR62GT)
ライセンス
Private (一般配布なし、TestFlight Internal のみ)