feat: added MIDI CC recording and list event table operation support.

This commit is contained in:
Xiaohan-Tian
2026-05-07 22:12:06 -07:00
parent 6305983df8
commit f3d26126fa
30 changed files with 1250 additions and 53 deletions
+20
View File
@@ -1,4 +1,5 @@
import { KGMidiNote } from '../../core/midi/KGMidiNote';
import { KGMidiControllerEvent } from '../../core/midi/KGMidiControllerEvent';
import { KGMidiPitchBend } from '../../core/midi/KGMidiPitchBend';
import { KGProject } from '../../core/KGProject';
import { KGMidiTrack } from '../../core/track/KGMidiTrack';
@@ -43,6 +44,7 @@ export const createMockMidiRegion = (overrides: Partial<{
length: number
notes: KGMidiNote[]
pitchBends: KGMidiPitchBend[]
controllerEventsByType: KGMidiControllerEvent[][]
}> = {}): KGMidiRegion => {
const defaults = {
id: 'test-region-1',
@@ -70,6 +72,9 @@ export const createMockMidiRegion = (overrides: Partial<{
if (overrides.pitchBends) {
overrides.pitchBends.forEach(pitchBend => region.addPitchBend(pitchBend));
}
if (overrides.controllerEventsByType) {
region.setControllerEventsByType(overrides.controllerEventsByType);
}
return region;
};
@@ -89,6 +94,21 @@ export const createMockMidiPitchBend = (overrides: Partial<{
return new KGMidiPitchBend(defaults.id, defaults.beat, defaults.value);
};
export const createMockMidiControllerEvent = (overrides: Partial<{
id: string
beat: number
value: number
}> = {}): KGMidiControllerEvent => {
const defaults = {
id: 'test-controller-1',
beat: 0,
value: 127,
...overrides,
};
return new KGMidiControllerEvent(defaults.id, defaults.beat, defaults.value);
};
export const createMockMidiTrack = (overrides: Partial<{
name: string
id: number