Skip to content

HyperDeck Integration

MediaMagic CRM integrates with Blackmagic HyperDeck devices for professional video recording workflows.

Overview

The HyperDeck integration allows automated control of recording filenames via Keyboard Maestro triggers.

API Endpoint

Set Recording Filename

Configure the filename for the next HyperDeck recording.

Endpoint: POST /api/hyperdeck/filename

Request Body:

json
{
  "filename": "S02E15_Interview_JohnSmith"
}

Response:

json
{
  "success": true,
  "filename": "S02E15_Interview_JohnSmith"
}

Keyboard Maestro Setup

Create a Keyboard Maestro macro that triggers before recording:

  1. Trigger: Hotkey (e.g., ⌘⌥H)
  2. Action: Execute Shell Script
    bash
    curl -X POST http://localhost:3100/api/hyperdeck/filename \
      -H "Content-Type: application/json" \
      -d '{"filename": "'"$KMVAR_EpisodeName"'"}'
  3. Action: Display notification "HyperDeck filename set"

Episode Integration

The HyperDeck filename handler is integrated with episode records:

Frontend Handler

Location: espocrm/custom/client/src/handlers/cepisode-hyperdeck.js

javascript
// Automatically called when episode is opened
onLoad() {
  const episodeName = this.model.get('name');
  const filename = this.generateFilename(episodeName);
  this.setHyperdeckFilename(filename);
}

Filename Generation

Filenames are automatically generated from episode metadata:

javascript
generateFilename(episodeName) {
  // Format: YYYYMMDD_EpisodeName
  const date = new Date().toISOString().split('T')[0].replace(/-/g, '');
  const sanitized = episodeName
    .replace(/[^a-zA-Z0-9]/g, '_')
    .replace(/_+/g, '_');
  return `${date}_${sanitized}`;
}

Use Cases

1. Episode Recording Setup

When opening an episode detail page:

  1. Episode loads in EspoCRM
  2. Handler automatically sets HyperDeck filename
  3. Producer starts recording with pre-configured filename
  4. Recording file matches episode in CRM

2. Multi-Camera Workflows

For productions with multiple HyperDeck units:

  • Each camera can have unique filename prefix
  • Episode handler sets base filename
  • Camera operators append camera identifiers
  • Example: 20260209_Interview_CAM1.mov

3. Batch Recording Sessions

When recording multiple episodes:

  1. Open Episode A → Filename set to EpisodeA
  2. Record Episode A
  3. Open Episode B → Filename set to EpisodeB
  4. Record Episode B
  5. Files automatically organized by episode

Bridge Route

The HyperDeck route is minimal and stateless:

javascript
// bridge/routes/hyperdeck.js
router.post('/filename', (req, res) => {
  const { filename } = req.body;
  
  // Save to state/config for reference
  global.hyperdeckFilename = filename;
  
  res.json({
    success: true,
    filename
  });
});

Future Enhancements

Planned features for the HyperDeck integration:

  • [ ] Direct HyperDeck SDK integration (TCP control)
  • [ ] Start/stop recording via CRM
  • [ ] Recording status monitoring
  • [ ] Automatic file upload after recording
  • [ ] Multi-camera synchronization
  • [ ] Timecode integration

MediaMagic CRM Documentation