Multispors musikoptagelsesapplikation — Version 0.1.1
2026-04-13
Musician's Canvas er en multispors musikoptagelsesapplikation til stationære computere. Den understøtter lydoptagelse fra mikrofoner og line-in-enheder, MIDI-optagelse fra keyboards og controllere samt miksning af alle spor til en enkelt WAV- eller FLAC-fil. Et ledsagerprogram, Virtual MIDI Keyboard, giver et software-klaviatur til afsendelse af MIDI-noter.
Musician's Canvas er designet til at være let at bruge, samtidig med at det tilbyder funktioner, der ofte findes i digitale lydarbejdsstationer (DAW'er):
Kør den eksekverbare fil musicians_canvas fra byggmappen eller din installationsplacering:
./musicians_canvas
Ved første start åbner applikationen med et tomt projekt. Du skal angive en projektmappe, før du kan optage.
Ved opstart anvender applikationen det gemte tema (mørkt eller lyst), og hvis en projektmappe tidligere er blevet brugt og indeholder en project.json-fil, indlæses projektet automatisk.
Angiv projektmappen: Indtast eller gennemse til en mappe i feltet "Project Location" øverst i vinduet. Det er her, optagelser og projektfilen gemmes.
Tilføj et spor: Klik på knappen + Add Track. Et nyt spor vises med standardindstillinger. Hvis det er det eneste spor i projektet og endnu ikke er optaget, armeres det automatisk til optagelse.
Navngiv sporet: Skriv et navn i tekstfeltet ved siden af knappen "Options". Dette navn bruges som filnavn for den optagede lydfil.

Lige under menulinjen er der en værktøjslinje med hurtigadgangsknapper:

Projektfilen (project.json) gemmer spornavne, typer, MIDI-noter, lydfilreferencer og alle projektspecifikke indstillinger. Lydfiler gemmes i samme mappe som project.json og navngives efter deres spor (f.eks. My_Track.flac).
Hvis du lukker applikationen med ikke-gemte ændringer, spørger en bekræftelsesdialog, om du vil gemme, før du afslutter.
Mens et projekt er åbent, kan du trække en eller flere understøttede lydfiler fra din filhåndtering (Windows Stifinder, macOS Finder, Linux-filhåndtering osv.) direkte til Musician's Canvas-vinduet for at tilføje dem som nye lydspor.
.wav og .flac. Filer i ethvert andet format
springes stille over, og en dialog til sidst viser, hvilke filer der blev
sprunget over.Bass Line.wav et lydspor
med navnet "Bass Line".Hvert spor kan konfigureres som enten Audio (til mikrofon/line-in-optagelse) eller MIDI (til keyboard/controller-optagelse).
For at ændre sportypen:
Dette åbner dialogen Sporkonfiguration, hvor du kan vælge inputkilden.

Hver sporrække har følgende kontroller:
Når et projekt har præcis ét spor, og det spor endnu ikke er optaget, armeres det automatisk til optagelse. Dette gælder både, når det første spor tilføjes til et nyt projekt, og når et eksisterende projekt med et enkelt tomt spor åbnes.
Den optagede lyd gemmes som en FLAC-fil i projektmappen, navngivet efter sporet.
Under optagelse og afspilning deaktiveres alle interaktive kontroller (sporknapper, indstillinger osv.) for at forhindre utilsigtede ændringer.
Lydspor har en knap Effekter lige under Options. Den åbner dialogen Spor-effekter, hvor du sætter en ordnet kæde af insert-effekter til optagelse på det spor:

Effekttyper omfatter Reverb, Chorus, Flanger, Overdrive / distortion, Amp & cabinet (modellering af forstærker og kabinet: amptype, kabinet, gain, bas/mellem/discant, luft og mix) og Vibrato (Tremolo).
Vibrato (Tremolo) er Fender‑stil “Vibrato” (tremolo): en periodisk volumenmodulation. Brug Speed til hastighed og Intensity (Depth) til dybde (fra subtilt skær til fuld “chop”).
Skærmbilleder af Amp & cabinet:


Effekter anvendes, når du stopper optagelsen, efter sædvanlig capture og resampling. Konfigurationen
gemmes i project.json under audioEffectChain.
Project → Project Settings → Mix Effects lets you build the same kind of ordered effect chain as Track effects (Reverb, Chorus, Flanger, Overdrive / distortion, Amp & cabinet, Vibrato (Tremolo)), but applied to the entire mixed program: when you press Play to hear all enabled tracks together, and when you export with Mix tracks to file (toolbar or Tools menu). The chain is saved in project.json under projectSettings → mixEffectChain.
Project → Project Settings → Aux / Send Bus configures a shared effect chain fed by each track’s Aux send slider (on the track row). The dry mix of all tracks is summed, each track’s post-gain/post-pan signal is scaled by its Aux level and sent through this bus, then the wet aux output is added back to the dry sum before Mix Effects run. Use it for a single shared reverb/delay while keeping per-track insert effects independent.
To reduce harsh digital clipping when processing pushes peaks toward full scale, the effect engine applies a soft limiter to normalized float samples immediately before conversion to 16-bit PCM. The EffectWidget base class documents guardFloatSampleForInt16Pcm() and softLimitFloatSampleForInt16Pcm() for any new real-time code that writes to 16-bit audio.
Each track row includes a compact mixer strip:
Options → Track Configuration also offers Clip trim (non-destructive): Trim start and Trim end skip that many seconds from the beginning and end of the clip for playback, mix, and export without deleting the underlying recording.
MIDI tracks can carry control change (CC) automation stored in the project and in exported .mid files; offline playback and mix use these events when rendering MIDI to audio.
Edit → Undo / Redo (standard shortcuts) apply to mixer and trim changes made on tracks.
Ved siden af tidsdisplayet bestemmer Lyt til lyd under optagelse, om live input sendes til projektets lydudgang under optagelse:
Indstillingen gemmes i projektet (monitorWhileRecording i project.json). Slå fra for at mindske mikrofonfeedback.
Når du optager et nyt spor, mens andre aktiverede spor allerede indeholder lyd- eller MIDI-data, udfører Musician's Canvas overdub-optagelse: de eksisterende spor mikses sammen og afspilles i realtid, mens det nye spor optages. Dette giver dig mulighed for at høre tidligere optagede dele, mens du lægger en ny del.
Mikset af eksisterende spor forberedes, før optagelsen begynder, så optagelse og afspilning starter på omtrent samme tidspunkt, hvilket holder alle spor synkroniserede.
Musician's Canvas understøtter to lyd-capture-backends:
Optagelsesbackenden kan konfigureres pr. projekt i Project > Project Settings > Audio.
Musician's Canvas optager med lydinputenhedens native samplerate og konverterer derefter automatisk til projektets konfigurerede samplerate ved hjælp af resampling i høj kvalitet. Det betyder, at du kan indstille enhver projektsamplerate (f.eks. 44100 Hz eller 48000 Hz) uanset enhedens native rate. Konverteringen bevarer tonehøjde og varighed nøjagtigt.
Nogle lydenheder (f.eks. USB-webcam-mikrofoner) er fysisk mono, men annonceres som stereo af operativsystemet. Musician's Canvas detekterer dette automatisk og justerer kanalantallet i overensstemmelse hermed. Hvis projektet er konfigureret til stereo, duplikeres monosignalet til begge kanaler.
MIDI-noter vises i en pianorulle-visualisering på sporet.
Musician's Canvas indeholder en indbygget metronom, der kan bruges under optagelse til at hjælpe med at holde takten. Klik på metronomknappen på knaplinjen (under menulinjen) for at åbne dialogen med metronomindstillinger:

Dialogen indeholder:
Når metronomen er aktiveret, begynder den at tikke, når optagelsen faktisk starter (efter at 3-sekunders nedtællingen er gennemført), og stopper, når optagelsen slutter.
Klik på knappen Play for at mikse og afspille alle aktiverede spor. Knappens værktøjstip ændres for at angive, om den vil afspille eller optage, baseret på om et spor er armeret. Deaktiverede spor (ikke afkrydset) udelukkes fra afspilningen.
Under afspilning dekodes lydspor fra deres FLAC-filer, og MIDI-spor renderes til lyd ved hjælp af den indbyggede FluidSynth-synthesizer. Alle spor mikses sammen og afspilles gennem systemets lydoutputenhed.
Klik på knappen Stop for at afslutte afspilningen når som helst.
Brug Tools > Mix tracks to file (Ctrl+M) til at eksportere alle aktiverede spor til en enkelt lydfil. En dialog giver dig mulighed for at vælge outputstien og formatet:
Mikset bruger projektets konfigurerede samplerate. MIDI-spor renderes ved hjælp af den konfigurerede SoundFont.
Brug Settings > Configuration (Ctrl+,) til at indstille globale standarder, der gælder for alle projekter:



.sf2 SoundFont-fil til MIDI-syntese. På Linux kan en system-SoundFont blive automatisk detekteret, hvis pakken fluid-soundfont-gm er installeret. På Windows og macOS skal du konfigurere SoundFont-stien manuelt.

Brug Project > Project Settings (Ctrl+P) til at tilsidesætte globale standarder kun for det aktuelle projekt. Dette er nyttigt for projekter, der kræver en bestemt samplerate, SoundFont eller lydenhed. Projektspecifikke indstillinger gemmes i project.json-filen.


The Mix Effects tab is a scrollable list with the same controls as Track effects (Add effect…, drag ≡ to reorder, ✕ to remove). Processing order is top to bottom on the combined mix of all enabled tracks. These effects run during whole-project playback and when mixing to a single WAV or FLAC file; they are not baked into individual track files on disk. An empty list leaves the mixed signal unchanged aside from the mixer's own level handling.
Configure the shared aux effect chain (same effect types as track inserts). Each track’s Aux slider on the track row controls how much of that track’s signal is sent through this bus; the wet aux return is summed with the dry mix before Mix Effects are applied.
| Menupunkt | Genvej | Beskrivelse |
|---|---|---|
| Save Project | Ctrl+S | Gem det aktuelle projekt til disk |
| Open Project | Ctrl+O | Åbn en eksisterende projektfil |
| Close | Ctrl+Q | Afslut applikationen |
| Menupunkt | Genvej | Beskrivelse |
|---|---|---|
| Project Settings | Ctrl+P | Configure project-specific settings (includes Aux / Send Bus) |
| Tempo map | Edit tempo changes (seconds vs BPM) for metronome and MIDI quantization | |
| Add Demo Data to Selected Track | Tilføj eksempel-MIDI-noter til demonstration |
| Menu Item | Shortcut | Description |
|---|---|---|
| Undo | Ctrl+Z | Undo recent mixer/trim edits on tracks |
| Redo | Ctrl+Shift+Z | Redo |
| Menupunkt | Genvej | Beskrivelse |
|---|---|---|
| Configuration | Ctrl+, | Åbn globale applikationsindstillinger |
| Menupunkt | Genvej | Beskrivelse |
|---|---|---|
| Mix tracks to file | Ctrl+M | Eksportér alle aktiverede spor til en fil |
| Export stems to folder | One WAV stem per track (gain/pan/trim; no master Mix Effects) | |
| Recording options | Punch-in region for audio; loop playback for the whole project | |
| Quantize MIDI | Snap MIDI note starts to a grid (all MIDI tracks or armed track only) | |
| Add drum track | D | MIDI-trommespor og .mid (se nedenfor) |
| Virtual MIDI Keyboard | Start ledsagerapplikationen til keyboard |
| Menupunkt | Genvej | Beskrivelse |
|---|---|---|
| Manual | Alt+M | Åbn PDF-brugermanualen på det aktuelt valgte sprog |
| About | Vis versions- og programinformation |
| Genvej | Handling |
|---|---|
| Ctrl+S | Gem projekt |
| Ctrl+Z | Undo (mixer/trim) |
| Ctrl+Shift+Z | Redo |
| Ctrl+O | Åbn projekt |
| Ctrl+M | Miks spor til fil |
| D | Tilføj trommespor (Tools-menuen) |
| Ctrl+P | Projektindstillinger |
| Ctrl+, | Indstillinger / Konfiguration |
| Alt+M | Open PDF manual (Help) |
| Ctrl+Q / Alt+F4 | Afslut |
Tools → Add drum track (genvej D) tilføjer et MIDI-trommespor på kanal 10 General MIDI (indeks 9). Standardnavn Drums (evt. nummer).
En .mid skrives i projektmappen: to takter 4/4 (kick, snare, lukket hi-hat). Tempo:
Links: Audient, MDrummer, Reddit, CS229 PDF.
Virtual MIDI Keyboard er en ledsagerapplikation (virtual_midi_keyboard), der giver et skærmklaviatur til afsendelse af MIDI-noter. Den kan startes fra menuen Tools > Virtual MIDI Keyboard i hovedapplikationen eller køres selvstændigt.

Computerens tastatur er kortlagt til klavertangenter over to oktaver:
Nedre oktav (starter ved den aktuelle oktav):
| Tast | Node |
|---|---|
| Z | C |
| S | C#/Db |
| X | D |
| D | D#/Eb |
| C | E |
| V | F |
| G | F#/Gb |
| B | G |
| H | G#/Ab |
| N | A |
| J | A#/Bb |
| M | B |
Øvre oktav (en oktav højere):
| Tast | Node |
|---|---|
| Q | C |
| 2 | C#/Db |
| W | D |
| 3 | D#/Eb |
| E | E |
| R | F |
| 5 | F#/Gb |
| T | G |
| 6 | G#/Ab |
| Y | A |
| 7 | A#/Bb |
| U | B |
| I | C (næste oktav) |
| 9 | C#/Db |
| O | D |
| 0 | D#/Eb |
| P | E |
Taster lyser visuelt op, når de trykkes ned (hvide tangenter bliver lyseblå, sorte tangenter mørkner).
Åbn konfigurationsdialogen (Settings > Configuration, Ctrl+,) for at opsætte MIDI- og lydenheder:

.sf2 SoundFont-fil til den indbyggede synthesizer.| Genvej | Handling |
|---|---|
| Ctrl+, | Konfigurationsdialog |
| Ctrl+U | Hjælp / Brugsinformation |
| Ctrl+Q | Luk |
.sf2) til senere afspilning.Noderne vises i piano roll. File > Save Project skriver en .mid-fil og project.json i projektmappen.
Afspilning bruger FluidSynth med SoundFont fra indstillingerne. Tjek Settings > Configuration > MIDI (eller Project > Project Settings ved projektspecifikke overskrivninger): der skal være en gyldig .sf2-sti. Under Linux kan et system-SoundFont findes automatisk; under Windows og macOS skal du ofte vælge filen manuelt.
Det er to separate programmer. Start Virtual MIDI Keyboard fra Tools > Virtual MIDI Keyboard (eller alene). For at skærmtastaturet skal nå ind i Musician's Canvas under MIDI-optagelse, skal operativsystemet dirigere tastaturets MIDI-udgang til en indgang, som Musician's Canvas bruger — ofte via virtuel MIDI-kabel eller matchende porte i begge apps. De forbinder ikke automatisk.
Settings > Configuration angiver globale standarder (tema, sprog, MIDI/lydenheder, SoundFont m.m.). Project > Project Settings tilsidesætter dele kun for det aktuelle projekt og gemmes i project.json. Hvis et felt står på projektstandard, bruges den globale værdi fra Configuration.
Filer accepteres kun, når en projektmappe er angivet, og Musician's Canvas ikke afspiller eller optager. Understøttede typer er .wav og .flac; andre filendelser springes over og vises i en dialog. Hver fil bliver et nyt lydspor med navn fra filnavnet uden endelse.
Lyd gemmes i projektmappen som <spornavn>.flac (tegn som / \ : * ? " < > | erstattes med understregning). Projektfilen er project.json i samme mappe. MIDI-spor gemmes som <spornavn>.mid når du gemmer projektet (sammen med noder i project.json).
Ved mix eller afspilning gengives MIDI først til en midlertidig WAV internt. Hvis projektstien er kendt, skriver Musician's Canvas også en FLAC-cache i projektmappen: <renset_spornavn>.flac (samme regler som andre sporfiler). Navnet følger spornavnet, ikke et internt ID.
Nej. Kun ét spor kan være armeret ad gangen; det får næste optagelse. Byg nummeret ved at optage ét ad gangen (overdub afspiller eksisterende spor under ny optagelse).
Nej. Når den er slået til, afspilles metronomen via systemlyd kun som reference for dig. Den blandes ikke ind i optagelsesfilen.
På Windows forventer hovedprogrammet en ASIO-driver til pålidelig lav-latens-lyd. Installer ASIO4ALL eller producentens driver ved fejl.
I .app-pakken kopieres Virtual MIDI Keyboard-eksekverbar fil ind i Musician's Canvas.app (Contents/MacOS/), så én appmappe kan distribueres. Start den stadig via Tools > Virtual MIDI Keyboard.
amixer eller dit skrivebordsmiljøs lydindstillinger til at kontrollere lydstyrkeniveauer..sf2-fil) er konfigureret i Settings > Configuration > MIDI.fluid-soundfont-gm er installeret.libpipewire-0.3-dev er installeret (nødvendig for PipeWire-integration med FluidSynth-synthesizeren).Se README for komplet byggevejledning til Linux, macOS og Windows, inklusive alle nødvendige afhængigheder.