Fixed scaling issue with the cursor position texture size is still a concern

This commit is contained in:
Clément Le Bihan
2023-09-17 19:32:29 +02:00
parent 8abaaf6624
commit 09d2da8eec
4 changed files with 33 additions and 16 deletions
+12 -4
View File
@@ -14,7 +14,11 @@ import { PianoCursorPosition } from '../models/PianoGame';
type PartitionViewProps = {
// The Buffer of the MusicXML file retreived from the API
file: string;
onPartitionReady: (base64data: string, cursorInfos: PianoCursorPosition[]) => void;
onPartitionReady: (
dims: [number, number],
base64data: string,
cursorInfos: PianoCursorPosition[]
) => void;
onEndReached: () => void;
// Timestamp of the play session, in milisecond
timestamp: number;
@@ -60,7 +64,6 @@ const PartitionView = (props: PartitionViewProps) => {
const bpm = _osmd.Sheet.HasBPMInfo ? _osmd.Sheet.getExpressionsStartTempoInBPM() : 60;
const wholeNoteLength = Math.round((60 / bpm) * 4000);
const curPos = [];
_osmd.setLogLevel('info');
while (!_osmd.cursor.iterator.EndReached) {
const notesToPlay = _osmd.cursor
.NotesUnderCursor()
@@ -97,7 +100,6 @@ const PartitionView = (props: PartitionViewProps) => {
});
_osmd.cursor.next();
}
// console.log('curPos', curPos);
_osmd.cursor.reset();
_osmd.cursor.hide();
// console.log('timestamp cursor', _osmd.cursor.iterator.CurrentSourceTimestamp);
@@ -110,12 +112,18 @@ const PartitionView = (props: PartitionViewProps) => {
if (!osmdCanvas) {
throw new Error('No canvas found');
}
let scale = osmdCanvas.width / parseFloat(osmdCanvas.style.width);
if (Number.isNaN(scale)) {
console.error('Scale is NaN setting it to 1');
scale = 1;
}
// Ty https://github.com/jimutt/osmd-audio-player/blob/ec205a6e46ee50002c1fa8f5999389447bba7bbf/src/PlaybackEngine.ts#LL77C12-L77C63
props.onPartitionReady(
[osmdCanvas.width, osmdCanvas.height],
osmdCanvas.toDataURL(),
curPos.map((pos) => {
return {
x: pos.offset,
x: pos.offset * scale,
timing: pos.sNinfos.sNL,
timestamp: pos.sNinfos.ts,
notes: pos.notes,