broken changes
This commit is contained in:
@@ -1,11 +1,11 @@
|
||||
# DJ workstation — feature/dj_workstation
|
||||
|
||||
The main window has two tabs: **Karaoke** and **DJ Studio**. Both workspaces stay mounted, preserving playback, MIDI handling and selections when switching. The DJ tab has a larger independent browser. Existing singer, venue, rotation, video, background music and recursive directory import features remain available. Background music is a compact strip above karaoke transport. Each tab opens its own settings scope.
|
||||
The main window has two tabs: **Karaoke** and **DJ Studio**. Playback, MIDI handling and selections persist when switching. Native tab pages hide or detach inactive drop destinations so karaoke cannot intercept DJ drops. The DJ tab has a larger independent browser. Existing singer, venue, rotation, video, background music and recursive directory import features remain available. Background music is a compact strip above karaoke transport. Each tab opens its own settings scope.
|
||||
|
||||
## Using the decks
|
||||
|
||||
- Use the DJ browser’s Import Files / Folder button for DJ music. It has its own `DJ/Library.sqlite`, `DJ/Media` and playlists under the app support folder. It starts empty; existing karaoke songs are not migrated. The tested recursive importer is reused with audio-only import, without CDG graphics. MP3, WAV, M4A, MP4/M4V/MOV audio, AIFF/AIF, CAF, FLAC and AAC extensions are accepted; decoding depends on macOS format support. Imports support progress, cancellation and duplicate detection.
|
||||
- Select a DJ library row and use Load A/B, use the row’s A/B buttons, or drag a DJ library song onto a deck. Loading is paused, with no brief autoplay. Finder audio files can also be dropped onto either deck. Dropping onto a playing deck asks for confirmation before importing or replacing anything; Cancel preserves playback and Replace & Load explicitly overrides protection. Library loads also respect the active-deck protection preference.
|
||||
- Select a DJ library row and use Load A/B, use the row’s A/B buttons, or drag a DJ library song onto a deck. Loading is paused, with no brief autoplay. Finder audio files can also be dropped onto either deck’s header, platter area or centre waveform. Back-to-back drops are queued while a copy/import is running; re-dropping existing media still loads the selected deck. Dropping onto a playing deck asks for confirmation before importing or replacing anything; Cancel preserves playback and Replace & Load explicitly overrides protection. Library loads also respect the active-deck protection preference.
|
||||
- Cyan identifies A; amber identifies B. Each platter’s angle follows actual source playback time, including tempo changes, pauses and seeks. Drag around a platter to jog two source seconds per revolution. This is seek-based jogging, not vinyl scratching.
|
||||
- Waveforms come from decoded audio and reuse existing waveform caches. Click/drag to seek. A white position line and green loop region show current state.
|
||||
- High/mid/low EQ and the bipolar filter are beside each platter. Gain and level knobs have been removed from the on-screen decks. Drag a knob vertically; double-click to reset. Knobs expose adjustable accessibility actions and current values. EQ uses the existing three-band filters; filter is low-pass left, bypass centre, high-pass right.
|
||||
@@ -28,7 +28,9 @@ Automix requires Internal mixer mode and starts only when at most one deck is pl
|
||||
|
||||
## Audio routing
|
||||
|
||||
DJ Settings → Devices lists CoreAudio outputs including the Mac’s speakers and the controller’s internal sound card, with automatic device-list refresh on connection changes. Choose a stereo channel pair next to each device, then Apply; Revert restores the applied configuration. Routing persists in `DJ/DJAudioRouting.json`.
|
||||
DJ Settings → Devices lists routable CoreAudio outputs and every reported stereo pair, including ch 1–2 and ch 3–4 on the four-channel Numark. Explicit native channel menus apply selections immediately. Routing persists in `DJ/DJAudioRouting.json`; valid device/pair changes preserve playing/paused state and source position. Channel-only changes use a live HAL update where supported, while a physical-device switch can require a brief engine restart. Active headphone preview is re-routed rather than discarded. Conflicting intermediate edits leave the last valid route active and show an inline explanation. There is no Apply step.
|
||||
|
||||
Use the named controller preset button to configure its pairs. Switching to External sets up the two deck pairs and disables cue if those pairs are both public outputs. The detected-device list shows input/output counts and all stereo pairs; input-only devices are identified separately. Device connection notifications and a refresh loop while settings are open keep the list current.
|
||||
|
||||
- **Internal:** both decks use Main Output. Pre-Cueing can use another device or a non-overlapping pair on the same multichannel interface. On Mixtrack Go, choose Numark MixTrack Go Audio, main ch 1–2 and pre-cue ch 3–4.
|
||||
- **External:** decks A and B have independent device/pair selectors. The software crossfader is bypassed; use an external mixer. Decks cannot share the same device/pair, and cue cannot overlap either public output.
|
||||
@@ -69,3 +71,5 @@ Media imports stream into a staging file, verify SHA-256, and atomically rename
|
||||
The full macOS suite covers karaoke, recursive CDG/audio import, independent DJ imports/playlists, rotation, background handoff, media repair, real audio loops, live loop resizing, linked Sync, cue editing, waveform/BPM guides, Finder override, artwork, real knob double-clicks, native faders, XML profiles, automatic controller detection/reconnection, actual CoreMIDI output and delayed LED initialization/shutdown. Native workspace tab switching preserves simultaneous playback. Automix tests exercise timed transitions, both playing decks during a fade, manual takeover, loop waiting, unavailable files and queue persistence without launch autoplay.
|
||||
|
||||
Attached-interface checks verify available output devices and AUHAL stereo channel maps when the hardware is connected; that check skips when the interface is unavailable. Physical button response, visible LEDs and audible socket isolation still require hands-on verification. Builds compile for arm64 and x86_64; tests execute on Apple silicon. Temporary builds, logs, captures and scripts are under `/private/tmp/kjmix-xml-mappings`.
|
||||
|
||||
Latest validation: **145 tests executed, zero failures, one attached-interface check skipped because the user confirmed the Numark was unplugged**. Earlier attached-interface runs verified the four-channel AUHAL maps; native menu selection and live binding changes are also tested independently of hardware.
|
||||
|
||||
Reference in New Issue
Block a user