Releases: developdh/Music-Reels-Generator
Releases · developdh/Music-Reels-Generator
v1.8.0 — Multi-Language UI
What's New
Multi-Language UI (Korean / English / Japanese)
- All ~200 UI strings now support 3 languages
- Language picker in the toolbar for instant switching
- Setting persists across sessions via UserDefaults
- Default language: English
Localization Architecture
L10n.swift: Centralized string definitions with nested enum namespaces- Exhaustive
switchonUILanguageensures compile-time translation completeness - All views, status messages, error messages, and menu items localized
v1.7.0 — Horizontal Reels Mode (가로모드)
What's New
Horizontal Reels Mode (가로모드)
New crop mode that keeps the entire horizontal video visible within the vertical 9:16 canvas:
- Video is scaled down to fit inside the frame
- Empty space is filled with a blurred, zoomed-in copy of the same video as background
- Adjustable blur intensity (10–50), vertical position, and zoom
- Mode picker in Crop inspector: 세로모드 (cover crop) / 가로모드 (fit + blur)
Bug Fixes
- Fix yt_download.sh crash caused by set -e + grep pipefail interaction when yt-dlp outputs [download] lines without a percentage
Documentation
- Update README with URL Import setup, Sparkle auto-update, and horizontal reels mode docs
v1.6.0 — Sparkle Auto-Update & External YouTube Download
What's New
Sparkle Auto-Update
- App now checks for updates automatically via Sparkle framework
- "Check for Updates…" menu item in app menu
- Updates are signed with EdDSA and served from GitHub Releases
External YouTube Download Script
- YouTube download feature extracted to external script (
yt_download.sh) - Script lives in
~/Library/Application Support/MusicReelsGenerator/Scripts/ - Survives app auto-updates — no more losing the feature on update
- Easy install: run
Scripts/install_yt_download.sh
Bug Fixes
- Fix app crash caused by invalid code signature after framework embedding
- Fix Sparkle failing to start when EdDSA key is not configured
v1.5.0 — Multi-language Support & Optional Secondary Lyrics
What's New
Configurable Primary Language
- Select primary language for speech recognition: 日本語 / 한국어 / English / 다중언어 (Auto)
- Language picker in the toolbar, saved per-project
- Whisper transcription uses the selected language (Auto = auto-detect)
Optional Secondary Language
- Lyrics input now accepts 1-line blocks (primary only) or 2-line blocks (primary + secondary)
- When secondary line is empty, only the primary line is rendered in subtitles
- No more "odd number of lines" error — mixed 1-line and 2-line blocks are allowed
UI Label Updates
- "Japanese" / "Korean" labels replaced with "주 언어 (Line 1)" / "부 언어 (Line 2)"
- Font settings renamed to "주 언어 폰트" / "부 언어 폰트"
Previous (v1.4.x)
- Ignore regions for excluding time ranges from alignment
- Cmd+↑/↓ block navigation shortcuts
- Fix trim end playback loop
v1.4.1 — Fix trim end playback loop
Bug Fix
- Fix playback not looping at trim end — Pressing play at the trim boundary now correctly seeks back to trim start. Previously, floating-point timing mismatch caused the player to briefly play and immediately stop again instead of looping.
v1.4.0 — Ignore Regions & Block Navigation
What's New
Ignore Regions (v1.3.0)
- Mark specific time ranges to exclude from speech recognition alignment
- Useful for live concert videos with MC talk, audience interaction, or spoken interludes
- New Ignore tab in Inspector with add/remove/edit controls and time nudge buttons
- Ignore regions saved in
.mreelsproject files (backward-compatible)
Block Navigation Shortcuts
- Cmd+↑ — Select previous lyric block
- Cmd+↓ — Select next lyric block
- Playback position stays unchanged, allowing quick block browsing while listening
Also included
- MIT License
- README updates for crop zoom, draggable trim handles, and alignment pipeline improvements
v1.3.0 — Ignore Regions for Alignment
What's New
Ignore Regions
- Mark specific time ranges to exclude from speech recognition alignment
- Useful for live concert videos with MC talk, audience interaction, or spoken interludes
- Whisper segments overlapping ignore regions are filtered out before alignment, local re-alignment, and anchor correction
- New Ignore tab in the Inspector panel with full CRUD controls:
- Add ignore region at current playback position
- Adjust start/end with "Set to Current" or ±0.1s / ±1s nudge buttons
- Editable labels, seek-to-region, delete
- Ignore regions are saved in
.mreelsproject files (backward-compatible)
Also included
- MIT License added
- README updated with crop zoom, draggable trim handles, non-speech filtering, vocal range-aware interpolation, and overlong block capping documentation
v1.2.0 — Draggable trim handles & instrumental gap fix
What's New
Draggable Trim Handles
- Drag the green (start) and red (end) handles on the trim bar to adjust the trim range visually
- Cursor changes to left-right resize on hover
- Existing button-based controls (Set to Current, ±0.1s/±1s) are preserved
Bug Fix: Subtitle visibility during instrumental gaps (v1.1.0)
- Lyrics no longer appear during instrumental/interlude sections
- Non-speech whisper segments (
(拍手),(音楽), etc.) are now filtered from alignment - Overly long blocks are capped to reasonable display durations
- Fixed array index crash in gap-aware block distribution
Note
Re-run Auto-Align on existing projects to apply the improved timing logic.
Full Changelog: v1.0.0...v1.2.0
v1.1.0 — Fix instrumental gap subtitle visibility
What's New
Bug Fix: Subtitle visibility during instrumental gaps
- Fixed: Lyrics no longer appear during instrumental/interlude sections
- Root cause: Whisper produces non-speech segments like
(拍手)(applause) for instrumental sections. The alignment engine was combining these with adjacent speech segments, causing lyrics to display during interludes - Solution: Non-speech segment detection and filtering in the alignment pipeline
Technical Changes
isNonSpeechSegment()detects(拍手),(音楽),[Music],[Applause], etc.- DP alignment skips non-speech segments as match starting points
- Segment combination no longer crosses non-speech boundaries
capOverlongBlocks()trims blocks that are significantly longer than their text warrants- Gap-aware interpolation distributes unmatched blocks only into vocal ranges
- Fix array index crash in
distributeBlocksIntoVocalRanges
Note
After updating, re-run Auto-Align on existing projects to apply the new timing logic.
Full Changelog: v1.0.0...v1.1.0
v1.0.0
Music Reels Generator v1.0.0
macOS app for generating vertical (9:16) bilingual lyric videos from music videos.
Features
- Production alignment engine (whisper-cpp + position-aware beam-search DP)
- Dual anchor system (auto-anchors + user anchors) with piecewise correction
- Bilingual subtitles (Japanese + Korean) with per-language styling
- Title/artist metadata overlay with dark background box
- Reusable style presets across projects
- Video trimming and 9:16 vertical reframing
- Two-stage export (FFmpeg crop + AVFoundation frame-by-frame subtitle burn-in)
- Project persistence (.mreels JSON files)
Requirements
- macOS 14.0+ (Sonoma)
- FFmpeg (
brew install ffmpeg) - whisper-cpp (
brew install whisper-cpp) + whisper model for alignment
Installation
- Download and unzip
MusicReelsGenerator-v1.0.0-macOS.zip - Move
Music Reels Generator.appto Applications - Right-click > Open (first launch only, to bypass Gatekeeper)
Note: This build is not code-signed or notarized. macOS will show a security warning on first launch. Use right-click > Open to allow it.