A versatile control system that connects StreamDeck and macOS applications via Unix socket communication. StreamDeck operations can be sent to any macOS application, enabling custom control system development.
This project is a versatile server system that sends StreamDeck button and dial operations to macOS applications via Unix sockets. StreamDeck operations can be received and processed by any application, making it applicable to various use cases.
Audio Control Features:
Professional music control functionality is implemented for system operation verification and demonstration purposes. It enables intuitive operations for DJ and music production, with real-time effect control and simultaneous multi-channel control.
This workspace consists of the following two components:
-
StreamDeckActionPlugin: StreamDeck-side plugin
- Action groups for verifying Tap (button press) and Dial (dial rotation) operations
- Sends operations to macOS applications via Unix sockets
-
StreamDeckSocketServer: macOS application (server-side)
- Starts Unix socket server and receives communications from StreamDeck
- Implements audio operation processing (for demonstration purposes)
StreamDeckWorkSpace/
├── StreamDeckActionPlugin/ # StreamDeck plugin
│ └── Sources/Plugins/Actions/ # Tap・Dial action groups
├── StreamDeckSocketServer/ # macOS application
│ ├── Repository/ # Socket server・Audio processing
│ ├── View/ # SwiftUI UI
│ └── Resource/Sound/ # Audio files
└── StreamDeckWorkspace.xcworkspace/ # Xcode workspace
┌─────────────────┐ Unix Socket ┌─────────────────┐
│ StreamDeck │ ←──────────────→ │ macOS App │
│ Plugin │ │ (Server) │
└─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ AdvancedSound │
│ Player │
└─────────────────┘
│
▼
┌─────────────────┐
│ AVAudioEngine │
│ + Nodes │
└─────────────────┘
│
▼
┌─────────────────┐
│ Audio Output │
└─────────────────┘
- macOS 15.2 or later
- Xcode 16.0 or later
- Stream Deck +
- Clone Repository
git clone https://github.com/your-username/StreamDeckWorkSpace.git
cd StreamDeckWorkSpace- Build and Install StreamDeck Plugin
cd StreamDeckActionPlugin
make buildNote: The first build may take around few minutes due to dependency resolution and cache generation.
- Start macOS Server
Open
StreamDeckSocketServer.xcodeprojin Xcode and run
Launch the macOS app to start the Unix socket server
- Open StreamDeck App
- Place on Buttons: Drag and drop to place on StreamDeck buttons
StreamDeck plugin automatically connects to the server
- Button Press: Audio playback, effect switching
- Dial Rotation: Real-time parameter adjustment
You can verify in real-time whether operations from StreamDeck are being received correctly on the macOS server app screen.
You can check operation status with a 4x4 grid, and when buttons are pressed or dials are rotated, the corresponding buttons are highlighted.
This system's Unix socket server can be applied to the following use cases:
- Development Tool Control: IDE, debugger, build tool operations
- System Control: Application startup, system setting changes
- Workflow Automation: Automatic task execution, notification control
- Game Control: In-game operations, macro execution
- IoT Control: Smart device, sensor operations
- Audio Control: Currently implemented audio control functionality (for demonstration)
For custom use cases, modify the message processing logic in MessageProcessor.swift to achieve integration with any application. The audio control functionality serves as a reference implementation example for system operation verification and demonstration purposes.
If you don't have a Stream Deck device yet, you can still try this project quickly using the following options:
- Stream Deck Mobile (iPhone/iPad): https://apps.apple.com/app/elgato-stream-deck-mobile/id1440014184
- Virtual Stream Deck (Desktop, requires Stream Deck 7.0+):
Note: Button-based actions can be tested easily. Dial-specific actions target Stream Deck + and may have limitations depending on the virtual/mobile environment.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Create a Pull Request
This project is licensed under the MIT License. See LICENSE for details.
- StreamDeck Plugin SDK - StreamDeck plugin development
If you have any issues or questions, please report them in Issues.
StreamDeck Socket Server - A versatile control system that connects StreamDeck and macOS applications 🔌