<?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: Muhammed Shabeer OP</title>
    <description>The latest articles on DEV Community by Muhammed Shabeer OP (@shabeer_wms).</description>
    <link>https://dev.to/shabeer_wms</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3468009%2F09d08b49-86c4-4745-9377-9db814f8585f.jpg</url>
      <title>DEV Community: Muhammed Shabeer OP</title>
      <link>https://dev.to/shabeer_wms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shabeer_wms"/>
    <language>en</language>
    <item>
      <title>Building a Low-Latency Audio Palette for Desktop with Flutter &amp; Sidecar</title>
      <dc:creator>Muhammed Shabeer OP</dc:creator>
      <pubDate>Mon, 27 Apr 2026 09:32:38 +0000</pubDate>
      <link>https://dev.to/shabeer_wms/building-a-low-latency-audio-palette-for-desktop-with-flutter-sidecar-4278</link>
      <guid>https://dev.to/shabeer_wms/building-a-low-latency-audio-palette-for-desktop-with-flutter-sidecar-4278</guid>
      <description>&lt;p&gt;As a creator, I kept running into the same issues with soundboard apps: they were bulky, slow to respond, or just awkward to use in live setups. So I built PadVibe—a desktop-focused audio pad designed to be fast, minimal, and easy to work with.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Low-latency playback using SoLoud&lt;/li&gt;
&lt;li&gt;Flexible output routing for multi-device setups&lt;/li&gt;
&lt;li&gt;Drag-and-drop mapping for quick setup&lt;/li&gt;
&lt;li&gt;Global hotkeys that work across applications&lt;/li&gt;
&lt;li&gt;Open source and available on GitHub&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Tech Stack
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Flutter (Desktop):&lt;/strong&gt; Used for the UI layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python (Sidecar):&lt;/strong&gt; Handles the heavy lifting for audio processing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GetX:&lt;/strong&gt; Manages the application state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions:&lt;/strong&gt; Automates our builds and releases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Latency: Many audio libraries introduced noticeable delay. Using Sidecar helped keep playback responsive enough for live use.&lt;br&gt;
Desktop behavior: Handling things like global shortcuts, window layering, and transparency took extra work to feel native.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links&lt;/strong&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/shabeer-wms" rel="noopener noreferrer"&gt;
        shabeer-wms
      &lt;/a&gt; / &lt;a href="https://github.com/shabeer-wms/padvibe" rel="noopener noreferrer"&gt;
        padvibe
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      PadVibe — cross‑platform Flutter app (macOS‑first) with drag‑and‑drop, multi‑window, file picking, and SoLoud‑based audio.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;PadVibe 🎚️&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://flutter.dev" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d3c29386ff2081dd72db5d61f10bab06fa4197bf80dec40bac89190e80ca8993/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f466c75747465722d332e782d626c75653f6c6f676f3d666c7574746572" alt="Flutter"&gt;&lt;/a&gt;
&lt;a href="https://www.python.org/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d475129cabe958b76a6208587b9ef0ecd2954a3296d3d4b4878a166931bb57e1/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f507974686f6e2d332e392b2d3337373641423f6c6f676f3d707974686f6e266c6f676f436f6c6f723d7768697465" alt="Python"&gt;&lt;/a&gt;
&lt;a href="https://flutter.dev/desktop" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/403cde5c862ec2d503f5b47fd6be499c766fcb117e40c1127ac6d4fb65cbd128/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f506c6174666f726d2d6d61634f5325323025374325323057696e646f77732532302537432532304c696e75782d6c6967687467726579" alt="Platform"&gt;&lt;/a&gt;
&lt;a href="https://github.com/shabeer-wms/padvibe/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/5caa455d8debc46fb23abbadb45a733a937f3910a73fc875c2f7820468e1bb54/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d677265656e" alt="License"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PadVibe&lt;/strong&gt; is a professional-grade, cross-platform audio sample triggering application. It combines the expressive UI capabilities of &lt;strong&gt;Flutter&lt;/strong&gt; with a high-performance &lt;strong&gt;Python Sidecar&lt;/strong&gt; audio engine to deliver low-latency playback, advanced routing, and real-time DSP.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;🏗️ Architecture: The Sidecar Pattern&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;PadVibe employs a unique &lt;strong&gt;Dual-Engine Architecture&lt;/strong&gt;. While Flutter handles the complex UI and state management, a dedicated Python process (the "Sidecar") manages the heavy lifting of audio and MIDI.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🔌 Communication Flow&lt;/h3&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Flutter (Client):&lt;/strong&gt; Sends JSON commands via &lt;strong&gt;WebSockets&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Dynamic Port Discovery:&lt;/strong&gt; The Sidecar automatically finds an available port (8765-8775) and broadcasts it to Flutter for a seamless handshake.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Python Sidecar (Server):&lt;/strong&gt; Executes audio playback, DSP, and MIDI polling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time Feedback:&lt;/strong&gt; The Sidecar streams audio levels (RMS/Peak) and MIDI events back to Flutter for immediate UI updates.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Key Features&lt;/h2&gt;

&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;🎧 Pro Audio Engine&lt;/h3&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Device Routing:&lt;/strong&gt; Assign individual pads to specific hardware output channels or different audio interfaces…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/shabeer-wms/padvibe" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://padvibe.pro26.in/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpadvibe.com%2Fog-image-v2.png" height="" class="m-0" width=""&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://padvibe.pro26.in/" rel="noopener noreferrer" class="c-link"&gt;
            PadVibe | The Premium Audio Palette for Creators
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Master your audio flow with PadVibe. The zero-latency audio palette for professionals.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fpadvibe.pro26.in%2Fassets%2Flogo.png" width="800" height="800"&gt;
          padvibe.pro26.in
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m planning to add mixing controls and possibly a mobile companion for remote triggering.&lt;/p&gt;

&lt;p&gt;If you’ve worked with Flutter on desktop or low-latency audio, I’d love to hear about your experience. Specifically, did you run into similar window layering issues on macOS vs Windows? Let's discuss in the comments!&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>opensource</category>
      <category>python</category>
    </item>
  </channel>
</rss>
