<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Zubin Jiang</title>
    <description>The latest articles on DEV Community by Zubin Jiang (@sirenmix).</description>
    <link>https://dev.to/sirenmix</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3803529%2F664dde0c-2d0b-475b-a531-dff69bc20d7c.png</url>
      <title>DEV Community: Zubin Jiang</title>
      <link>https://dev.to/sirenmix</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sirenmix"/>
    <language>en</language>
    <item>
      <title>How to Build a Privacy-First DJ Prep Workflow in the Browser</title>
      <dc:creator>Zubin Jiang</dc:creator>
      <pubDate>Mon, 31 Aug 2026 06:32:57 +0000</pubDate>
      <link>https://dev.to/sirenmix/how-to-build-a-privacy-first-dj-prep-workflow-in-the-browser-14bo</link>
      <guid>https://dev.to/sirenmix/how-to-build-a-privacy-first-dj-prep-workflow-in-the-browser-14bo</guid>
      <description>&lt;p&gt;Preparing a DJ set usually means jumping between a DAW, a tagging utility, a spreadsheet, and a folder of exports. A browser can cover much of the preparation work, but the design choice that matters most is where the audio is processed.&lt;/p&gt;

&lt;p&gt;This article describes a practical, privacy-first workflow for DJs and developers who want fast feedback without uploading their tracks to a server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Start with a small, repeatable workflow
&lt;/h2&gt;

&lt;p&gt;Before choosing tools, define the decisions you need to make for every track:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Tempo:&lt;/strong&gt; What BPM is the track, and does it fit the energy curve of the set?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key:&lt;/strong&gt; Is the harmonic relationship compatible with the neighboring tracks?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gain:&lt;/strong&gt; Will the track need a level adjustment before it is played in a room?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Structure:&lt;/strong&gt; Where are the clean intro, first drop, breakdown, and outro?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Export:&lt;/strong&gt; Which format and sample rate does the target player expect?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Keeping this list stable makes the process easier to automate. It also prevents a common mistake: changing metadata before you have listened to the transition in context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why client-side processing is useful
&lt;/h2&gt;

&lt;p&gt;Audio is personal data. Unreleased tracks, edits, and recorded sets should not need to leave your computer just to calculate BPM or inspect a waveform.&lt;/p&gt;

&lt;p&gt;A client-side workflow can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;decode a selected file with the Web Audio API;&lt;/li&gt;
&lt;li&gt;analyze samples in memory;&lt;/li&gt;
&lt;li&gt;show the result immediately;&lt;/li&gt;
&lt;li&gt;let the user export a converted file locally; and&lt;/li&gt;
&lt;li&gt;release the buffer when the job is finished.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That architecture does not make every application automatically private. It is still worth checking network requests, explaining what is stored in memory, and giving users a clear way to remove a file from the page.&lt;/p&gt;

&lt;p&gt;For a concrete example of this approach, &lt;a href="https://sirenmix.com/" rel="noopener noreferrer"&gt;SirenMix&lt;/a&gt; provides browser-based tools for BPM and key detection, BPM/key changes, gain adjustment, audio conversion, and spectrum analysis. The site is useful as a quick preparation layer before a track is moved into a library or performance system.&lt;/p&gt;

&lt;h2&gt;
  
  
  A practical set-prep sequence
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Analyze before editing
&lt;/h3&gt;

&lt;p&gt;Run BPM and key detection first, then listen to the result against the tracks that will surround it. Detection is a starting point, not a substitute for listening. A half-time or double-time reading can be musically valid even when it is not the number you expected.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Make the smallest correction
&lt;/h3&gt;

&lt;p&gt;If a track needs a BPM change, preview the proposed value and compare the transients. For gain changes, use a conservative adjustment and check the loudest section. Keeping edits small preserves more headroom and makes it easier to undo a decision later.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Inspect the spectrum when something sounds wrong
&lt;/h3&gt;

&lt;p&gt;A spectrum view can reveal a low-end buildup, a harsh high band, or a missing fundamental that is difficult to identify by ear in a noisy room. Treat it as evidence for a listening decision, not as a target curve that every track must match.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Export deliberately
&lt;/h3&gt;

&lt;p&gt;Use a lossless intermediate when you expect another round of editing. For a performance copy, choose a format supported by the target player and verify the exported file by reopening it. A successful download is not proof that the metadata, duration, or peak level is correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  Engineering details worth getting right
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Never assume the file extension tells you the codec. Inspect the decoded stream and handle unsupported formats gracefully.&lt;/li&gt;
&lt;li&gt;Keep long-running analysis off the main UI path where possible. Workers can keep waveform and progress controls responsive.&lt;/li&gt;
&lt;li&gt;Show units and rounding rules. “128 BPM” is easier to trust when users can see how the value was calculated.&lt;/li&gt;
&lt;li&gt;Make failures recoverable. A single malformed file should not clear the rest of a user’s queue.&lt;/li&gt;
&lt;li&gt;Be explicit about privacy. A short statement such as “audio stays in this browser” is helpful only when the implementation matches it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  A compact checklist
&lt;/h2&gt;

&lt;p&gt;Before a set leaves the preparation stage, I check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;BPM and key were reviewed against neighboring tracks.&lt;/li&gt;
&lt;li&gt;Gain changes were previewed on the loudest section.&lt;/li&gt;
&lt;li&gt;Cue points were tested from the actual playback device.&lt;/li&gt;
&lt;li&gt;Exported files were reopened and spot-checked.&lt;/li&gt;
&lt;li&gt;Temporary files and object URLs were released.&lt;/li&gt;
&lt;li&gt;No private audio was uploaded unless I intentionally chose a service that requires it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The best workflow is the one that makes these checks routine. Browser-based tools are especially effective when they combine immediate feedback with a clear privacy boundary, so the DJ can spend less time moving files around and more time listening to the set as a whole.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building SirenMix: Privacy-First Browser Audio Tools for DJs</title>
      <dc:creator>Zubin Jiang</dc:creator>
      <pubDate>Tue, 03 Mar 2026 09:35:05 +0000</pubDate>
      <link>https://dev.to/sirenmix/building-sirenmix-music-cloud-storage-built-for-djs-3oi6</link>
      <guid>https://dev.to/sirenmix/building-sirenmix-music-cloud-storage-built-for-djs-3oi6</guid>
      <description>&lt;p&gt;SirenMix is a collection of privacy-first browser audio tools built for day-to-day DJ work. Each tool focuses on a practical task and runs directly in your browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your audio files stay local: processing happens in the browser, and files are never uploaded.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tools for the DJ workflow
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;BPM Changer&lt;/strong&gt; — Detect a track's BPM, change its tempo while preserving pitch, preview the result, and export when it sounds right.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Audio Converter&lt;/strong&gt; — Batch-convert MP3, WAV, FLAC, and OGG files for different players, libraries, and performance setups.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gain Adjuster&lt;/strong&gt; — Inspect the waveform and peak level, adjust gain, and export safely without accidental clipping.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Changer&lt;/strong&gt; — Transpose a track in semitone steps while keeping its speed unchanged, with Camelot guidance for harmonic mixing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Spectrum Analyzer&lt;/strong&gt; — Inspect a full-track spectrogram and cutoff frequency to help identify fake 320 kbps files and fake lossless audio.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Camelot Wheel&lt;/strong&gt; — Use a clear harmonic-mixing reference to find compatible keys quickly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can open the full toolkit at &lt;strong&gt;&lt;a href="https://sirenmix.com/tools" rel="noopener noreferrer"&gt;sirenmix.com/tools&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech stack
&lt;/h2&gt;

&lt;p&gt;SirenMix is built with &lt;strong&gt;SvelteKit 5&lt;/strong&gt;, &lt;strong&gt;TypeScript&lt;/strong&gt;, &lt;strong&gt;LibAV.js/WebAssembly&lt;/strong&gt;, and &lt;strong&gt;Paraglide&lt;/strong&gt;. The browser-based architecture keeps audio processing close to the user while providing a fast, focused interface for each task.&lt;/p&gt;

&lt;p&gt;If you DJ with a browser in your preparation workflow, try the tools and let me know what would make them more useful.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>showdev</category>
      <category>javascript</category>
      <category>svelte</category>
    </item>
  </channel>
</rss>
