Oscilla Contribution Recorder

Complete Feature Specification (Client, Server, Licensing)


1. Purpose

The Contribution Recorder enables performers to record short audio contributions directly within Oscilla, as part of the existing Contribution Surface. Recording is treated as a method of material acquisition that occurs entirely within the score environment.

There is no separate recording application, booth, or mode. The score itself is the site of listening, contribution, recording, and activation.


2. Design Principles


3. Scope

In scope

Out of scope


4. Interaction Context & Directory Semantics

Core rule

The destination directory for a recording is determined by the annotation context at the moment of recording.


4.1 Case A — Recording inside an existing annotation

User action

Behaviour

Example

audio/
  ann_4F2QK/
    impulse.wav
    voice_01.wav

Meaning


4.2 Case B — Recording outside any existing annotation

User action

Behaviour

Example

audio/
  ann_9M8L2/
    recording_01.wav

Meaning


4.3 Case C — Recording into an explicitly chosen directory (optional)

User action

Behaviour

Meaning

(This case is optional for initial implementation.)


5. Client-Side Behaviour

5.1 Entry Conditions


5.2 UI Placement

Within the annotation editor’s trigger configuration:

[ ⬆ Upload Audio ]   [ ⏺ Record ]

No new tabs or configuration panels are introduced.


5.3 Recording Modal

Clicking Record opens a minimal modal dialog.

Modal contents


5.4 Recording Constraints


5.5 Save Behaviour

On Use recording:

  1. Audio Blob is produced via MediaRecorder
  2. Blob is uploaded to the server using the existing upload endpoint
  3. Target directory is provided explicitly by the client
  4. Server returns a relative file path
  5. Annotation editor updates its source field with that path

From this point on, recorded audio is indistinguishable from uploaded audio.


6. Server-Side Behaviour

6.1 Core principle

The server treats recorded audio as standard audio uploads.

The server does not:


6.2 Upload Endpoint

Existing endpoint is reused:

POST /api/upload-audio/:project?subdir=<relative_dir>

No new endpoints are introduced.


6.3 File Acceptance

The server must accept:

Validation should allow MIME or extension.


6.4 Directory Creation


6.5 Filename Handling


6.6 Network Behaviour


7. Licensing & Consent

7.1 Core licensing principle

Contributions are licensed explicitly for artist use by default.
They are not automatically made public or open for derivative works.


7.2 Mandatory Consent (Required)

Before recording or uploading audio, the user must check:

☐ I consent to my contribution being used by the artist in performances, installations, documentation, and future works related to this project.


7.3 Optional Openness (Future Extension)

Optionally, contributors may choose to apply a Creative Commons licence.

This is opt-in, never default.

Example options:

Licence choice, if any, is stored with the annotation.


7.4 Rationale


8. Conceptual Framing

The Contribution Recorder is described as:

A score-native mechanism for leaving sonic material within the score, rather than a recording or performance tool.

Recording is framed as leaving a trace, not producing a finished work.


9. Selective Agency

Contributions persist without requiring continued control, supporting negotiated, collective authorship.


10. Explicit Non-Goals

The following must not be added as part of this feature:


11. One-Sentence Summary

The Oscilla Contribution Recorder allows performers to record and leave audio material directly within the score environment, storing contributions in annotation-scoped directories under explicit consent, without introducing new server endpoints or recording-specific infrastructure.