Skip to content

Releases: developdh/Music-Reels-Generator

v1.8.0 — Multi-Language UI

17 Mar 04:43

Choose a tag to compare

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 switch on UILanguage ensures compile-time translation completeness
  • All views, status messages, error messages, and menu items localized

v1.7.0 — Horizontal Reels Mode (가로모드)

17 Mar 03:33

Choose a tag to compare

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

17 Mar 01:46

Choose a tag to compare

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

16 Mar 06:31

Choose a tag to compare

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

16 Mar 03:20

Choose a tag to compare

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

16 Mar 03:11

Choose a tag to compare

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 .mreels project 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

15 Mar 14:42

Choose a tag to compare

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 .mreels project 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

14 Mar 02:17

Choose a tag to compare

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

13 Mar 13:52

Choose a tag to compare

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

13 Mar 00:00

Choose a tag to compare

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

  1. Download and unzip MusicReelsGenerator-v1.0.0-macOS.zip
  2. Move Music Reels Generator.app to Applications
  3. 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.