Embrace is a music player for social dance DJs, designed to be used in combination with iTunes.
In late 2021, I decided to remove Embrace from Apple's Mac App Store and instead offer it as a free standalone download. Due to the COVID-19 pandemic combined with Apple's focus on streaming music, I no longer felt comfortable selling Embrace.
For the curious, the source code to Embrace is available on GitHub.
Downloads
Design & Features
Embrace was designed to be a simple app, focused on playback of a single set list. Only features essential to DJing for social dance are included. Others, such as live mixing, sound effects, and table backspinning are purposely left out. Leave the distractions and extra noise behind, and focus on what’s important — the music.
In most music players, it’s too easy to stop playback — accidentally pressing the space bar can bring your set to a deafening pause. In Embrace, pressing the space bar to stop a track first asks for confirmation. And you can still use the Hard Stop or Hard Skip for emergencies, giving you complete control of when playback stops.
Most DJ software features automatic crossfading between songs. When DJing for social dance, we want a gap of silence between each song so that dancers can thank their current partner and find a new partner.
To avoid abrupt transitions, some social DJs create small tracks of silence and insert them between songs. Others create scripts to automatically stop playback after each song for a specific amount of time before resuming playback. Both methods are cumbersome and can result in too long of a stop when used with songs that have silence built into the end or start of the track.
Use the slider at the bottom of the Set List window to adjust the Auto Gap time interval.
Embrace fully utilizes Apple's Core Audio framework for high-quality sound playback. Audio files are decoded to Core Audio's native floating-point format prior to applying user-chosen effects (such as an equalizer or a peak limiter). This prevents the output of one effect from clipping before reaching the input of the next effect.
You can play tracks with a different audio device, allowing you to use a higher quality USB sound card for Embrace, while previewing or pre-cueing tracks in iTunes via the built-in headphone jack. Embrace can take exclusive control of the selected audio device, preventing alerts and other noises from playing over your music.Frequently Asked Questions
Which file formats and metadata does Embrace support?
Embrace supports all DRM-free music files supported by iTunes. This includes all music purchased from the United States iTunes Store since April 2009.
Note that Apple Music songs downloaded for offline use contain DRM, and will not work with Embrace nor any other music player.
Embrace reads embedded metadata such as Artist, Beats Per Minute, and Track Name. It also reads iTunes library metadata, such as Start Time and Stop Time. Embrace supports the Initial Key Signature tag added via programs such as Mixed In Key or beaTunes.
What should Sample Rate and Frames be set to for my USB audio device?
In general, the Sample Rate should be kept at 44100 Hz. This rate matches almost all digital music files. The Frames setting controls the size of Embrace's internal audio buffers. A higher value increases overall safety but decreases the update rate of the visual level meters. While Embrace defaults to 2048, I personally use a very conservative value of 4096.
My venue doesn't have Internet access, will Embrace still work?
Yes, Embrace runs fine without Internet access!
How does the Match Loudness feature work?
Match Loudness analyzes the perceived loudness of each track and lowers a track's overall volume if it is too loud. Embrace uses the ITU BS. 1770-3 loudness monitoring algorithm.
How do I fade out a song early?
As the song is playing, slowly drag the volume slider to fade it out. Once the slider is all the way to the left, releasing it stops playback and marks the song as played. To resume playback of the next song, click Play.
Can I see the time when a song will end playing?
The Reveal End Time command temporarily displays the end time for a specific song. You can also hold down the Option key when to mouse is over the set list to reveal song end times. This makes it easy to figure out when your set will end.
How do I stop playback after a specific song?
Secondary click (right click or Control-click) the song in the set list and then check the Stop After Playing option. A dotted red line will appear below the song, indicating that playback will stop after the song finishes. To resume playback of the next song, click Play.
Some users prefer to always stop playback and manually start each song. To do so, drag the slider at the bottom of Embrace's window to the rightmost position.
Why does my audio sound weird?
Embrace's sound engine is designed to provide the best audio quality. That said, you can still add effects that cause the overall sound level to exceed maximum. When this happens, Embrace activates an emergency peak limiter to prevent clipping. This isn't ideal, but a limited signal is much less noticeable than clipping.
When the emergency peak limiter activates, a red dot appears in the volume meter at the top of the Playlist window. If you see this red dot, open Effects from the Window menu, and either reduce the volume of any added effect or reduce the overall volume.
What's the meter in the top right corner of the window?
This is the Danger Meter. The bar measures the likelihood of an audio glitch due to low computer resources. The dot on the right will flash red if an audio glitch occurs.
Ideally, this meter should be less than 10% full. To reduce risk of glitches: quit other applications (especially web browsers), reduce the number of effects, or increase the audio device's frame size.
Is it possible to write a plug-in or otherwise extend Embrace?
Embrace has basic AppleScript support to query the current track and set list. Using this, you can create a visualizer such as Mikael Holber's BEAM and Brandon Tearse's Visual Connection. If you need additional AppleScript commands or have requests for specific features, please contact me.