Skip to content

Commit cb5c86a

Browse files
authored
fix!: bpmInputBufferをなくしつつ、再生中でもbpmを変更できるようにする (#2603)
1 parent b1056b1 commit cb5c86a

File tree

1 file changed

+34
-76
lines changed

1 file changed

+34
-76
lines changed

src/components/Sing/ToolBar/ToolBar.vue

+34-76
Original file line numberDiff line numberDiff line change
@@ -14,38 +14,35 @@
1414
<QInput
1515
type="number"
1616
dense
17-
:modelValue="keyRangeAdjustmentInputBuffer"
17+
:modelValue="keyRangeAdjustment"
1818
label="音域"
1919
hideBottomSpace
2020
unelevated
2121
class="key-range-adjustment"
22-
@update:modelValue="setKeyRangeAdjustmentInputBuffer"
2322
@change="setKeyRangeAdjustment"
2423
/>
2524
<QInput
2625
type="number"
2726
dense
28-
:modelValue="volumeRangeAdjustmentInputBuffer"
27+
:modelValue="volumeRangeAdjustment"
2928
label="声量"
3029
hideBottomSpace
3130
unelevated
3231
class="volume-range-adjustment"
33-
@update:modelValue="setVolumeRangeAdjustmentInputBuffer"
3432
@change="setVolumeRangeAdjustment"
3533
/>
3634
</div>
3735
<QInput
3836
type="number"
39-
:modelValue="bpmInputBuffer"
37+
:modelValue="currentBpm"
4038
dense
4139
hideBottomSpace
4240
outlined
4341
unelevated
4442
label="テンポ"
4543
class="sing-tempo"
4644
padding="0"
47-
@update:modelValue="setBpmInputBuffer"
48-
@change="setTempo"
45+
@change="setBpm"
4946
/>
5047
<QField
5148
hideBottomSpace
@@ -159,7 +156,7 @@
159156
</template>
160157

161158
<script setup lang="ts">
162-
import { computed, watch, ref } from "vue";
159+
import { computed } from "vue";
163160
import PlayheadPositionDisplay from "../PlayheadPositionDisplay.vue";
164161
import EditTargetSwicher from "./EditTargetSwicher.vue";
165162
import { useStore } from "@/store";
@@ -267,34 +264,6 @@ const beatTypeOptions = BEAT_TYPES.map((beatType) => ({
267264
value: beatType,
268265
}));
269266
270-
const bpmInputBuffer = ref(120);
271-
const keyRangeAdjustmentInputBuffer = ref(0);
272-
const volumeRangeAdjustmentInputBuffer = ref(0);
273-
274-
watch(
275-
keyRangeAdjustment,
276-
() => {
277-
keyRangeAdjustmentInputBuffer.value = keyRangeAdjustment.value;
278-
},
279-
{ immediate: true },
280-
);
281-
282-
watch(
283-
volumeRangeAdjustment,
284-
() => {
285-
volumeRangeAdjustmentInputBuffer.value = volumeRangeAdjustment.value;
286-
},
287-
{ immediate: true },
288-
);
289-
290-
const setBpmInputBuffer = (bpmStr: string | number | null) => {
291-
const bpmValue = Number(bpmStr);
292-
if (!isValidBpm(bpmValue)) {
293-
return;
294-
}
295-
bpmInputBuffer.value = bpmValue;
296-
};
297-
298267
const currentTimeSignature = computed(() => {
299268
const maybeTimeSignature = timeSignatures.value.findLast(
300269
(_timeSignature, i) => tsPositions.value[i] <= playheadTicks.value,
@@ -332,28 +301,11 @@ const setBeatType = (beatType: { label: string; value: number }) => {
332301
});
333302
};
334303
335-
const setKeyRangeAdjustmentInputBuffer = (
336-
KeyRangeAdjustmentStr: string | number | null,
337-
) => {
338-
const KeyRangeAdjustmentValue = Number(KeyRangeAdjustmentStr);
339-
if (!isValidKeyRangeAdjustment(KeyRangeAdjustmentValue)) {
340-
return;
341-
}
342-
keyRangeAdjustmentInputBuffer.value = KeyRangeAdjustmentValue;
343-
};
344-
345-
const setVolumeRangeAdjustmentInputBuffer = (
346-
volumeRangeAdjustmentStr: string | number | null,
347-
) => {
348-
const volumeRangeAdjustmentValue = Number(volumeRangeAdjustmentStr);
349-
if (!isValidVolumeRangeAdjustment(volumeRangeAdjustmentValue)) {
304+
const setBpm = (bpm: string | number | null) => {
305+
const bpmValue = Number(bpm);
306+
if (!isValidBpm(bpmValue)) {
350307
return;
351308
}
352-
volumeRangeAdjustmentInputBuffer.value = volumeRangeAdjustmentValue;
353-
};
354-
355-
const setTempo = () => {
356-
const bpm = bpmInputBuffer.value;
357309
const position = tempos.value.findLast(
358310
(tempo) => tempo.position <= playheadTicks.value,
359311
)?.position;
@@ -363,40 +315,46 @@ const setTempo = () => {
363315
void store.actions.COMMAND_SET_TEMPO({
364316
tempo: {
365317
position,
366-
bpm,
318+
bpm: bpmValue,
367319
},
368320
});
369321
};
370322
371-
const setKeyRangeAdjustment = () => {
372-
const keyRangeAdjustment = keyRangeAdjustmentInputBuffer.value;
323+
const setKeyRangeAdjustment = (
324+
KeyRangeAdjustmentStr: string | number | null,
325+
) => {
326+
const KeyRangeAdjustmentValue = Number(KeyRangeAdjustmentStr);
327+
if (!isValidKeyRangeAdjustment(KeyRangeAdjustmentValue)) {
328+
return;
329+
}
373330
void store.actions.COMMAND_SET_KEY_RANGE_ADJUSTMENT({
374-
keyRangeAdjustment,
331+
keyRangeAdjustment: KeyRangeAdjustmentValue,
375332
trackId: selectedTrackId.value,
376333
});
377334
};
378335
379-
const setVolumeRangeAdjustment = () => {
380-
const volumeRangeAdjustment = volumeRangeAdjustmentInputBuffer.value;
336+
const setVolumeRangeAdjustment = (
337+
volumeRangeAdjustmentStr: string | number | null,
338+
) => {
339+
const volumeRangeAdjustmentValue = Number(volumeRangeAdjustmentStr);
340+
if (!isValidVolumeRangeAdjustment(volumeRangeAdjustmentValue)) {
341+
return;
342+
}
381343
void store.actions.COMMAND_SET_VOLUME_RANGE_ADJUSTMENT({
382-
volumeRangeAdjustment,
344+
volumeRangeAdjustment: volumeRangeAdjustmentValue,
383345
trackId: selectedTrackId.value,
384346
});
385347
};
386348
387-
watch(
388-
[tempos, playheadTicks],
389-
() => {
390-
const currentTempo = tempos.value.findLast(
391-
(tempo) => tempo.position <= playheadTicks.value,
392-
);
393-
if (!currentTempo) {
394-
throw new UnreachableError("assert: at least one tempo exists");
395-
}
396-
bpmInputBuffer.value = currentTempo.bpm;
397-
},
398-
{ immediate: true },
399-
);
349+
const currentBpm = computed(() => {
350+
const currentTempo = tempos.value.findLast(
351+
(tempo) => tempo.position <= playheadTicks.value,
352+
);
353+
if (!currentTempo) {
354+
throw new UnreachableError("assert: at least one tempo exists");
355+
}
356+
return currentTempo.bpm;
357+
});
400358
401359
const nowPlaying = computed(() => store.state.nowPlaying);
402360

0 commit comments

Comments
 (0)