main
reng 3 months ago
parent 34e9f9b527
commit 4135f64f6a
  1. 3
      vite/public/cuelist_demo3.json
  2. 46
      vite/src/comps/numpad.jsx
  3. 3
      vite/src/comps/voiceanalysis.jsx
  4. 1
      vite/src/pages/flow_free.jsx
  5. 3
      vite/src/util/osc.js
  6. 2
      vite/src/util/useUser.jsx

@ -85,8 +85,7 @@
"description": "記憶提取完成",
"auto": true,
"audioFile": "assets/ai/sfx-06-ai-04-record-03-ai-05-sfx-07.mp3",
"nextcue": 5.1,
"hint":"電話已接通"
"nextcue": 5.1
},
{
"id": 5.1,

@ -27,6 +27,8 @@ export default function NumPad({onSend, disabled, type, clientId}){
const refInput=useRef();
const refType=useRef(type);
const refLatestInput=useRef();
const setInput=(valueFunc)=>{
if(typeof valueFunc==='function'){
@ -38,6 +40,12 @@ export default function NumPad({onSend, disabled, type, clientId}){
}
}
function onAudioEnd(e){
if(refLatestInput.current){
onSend(refLatestInput.current);
refLatestInput.current=null;
}
}
const refAudio=useRef([]);
function onkeydown(e){
@ -56,7 +64,8 @@ export default function NumPad({onSend, disabled, type, clientId}){
case NUMPAD_TYPE.USERID:
if(num>=1 && num<=24){
onSend(num);
// onSend(num);
refLatestInput.current=num;
refAudio.current[KEY_ENTER]?.play();
}else{
refAudio.current['error']?.play();
@ -64,16 +73,21 @@ export default function NumPad({onSend, disabled, type, clientId}){
break;
case NUMPAD_TYPE.PASSWORD:
if(refInput.current.length==4){
onSend(refInput.current);
refAudio.current[KEY_ENTER]?.play();
// onSend(refInput.current);
refLatestInput.current=refInput.current;
// refAudio.current[KEY_ENTER]?.play();
refAudio.current['end']?.play();
}else{
refAudio.current['error']?.play();
}
break;
case NUMPAD_TYPE.CHOICE:
if(num==1 || num==9){
onSend(num);
refAudio.current[KEY_ENTER]?.play();
// onSend(num);
refLatestInput.current=num;
// refAudio.current[KEY_ENTER]?.play();
if(num==1) refAudio.current['save']?.play();
if(num==9) refAudio.current['discard']?.play();
}else{
refAudio.current['error']?.play();
}
@ -122,7 +136,9 @@ export default function NumPad({onSend, disabled, type, clientId}){
'1','2','3',
'4','5','6',
'7','8','9',
'0',KEY_ENTER,KEY_BACKSPACE,'error'
'0',KEY_ENTER,KEY_BACKSPACE,'error',
'save','discard',
'end',
];
refAudio.current = {};
@ -131,10 +147,28 @@ export default function NumPad({onSend, disabled, type, clientId}){
refAudio.current[keys[k]]=new Audio(`assets/number/${keys[k]}.mp3`);
}else if(keys[k]===KEY_ENTER){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-02.mp3`);
refAudio.current[keys[k]].addEventListener('ended', onAudioEnd);
}else if(keys[k]===KEY_BACKSPACE){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-01.mp3`);
}else if(keys[k]==='error'){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-01.mp3`);
}else if(keys[k]==='save'){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-09.mp3`);
refAudio.current[keys[k]].addEventListener('ended', onAudioEnd);
}else if(keys[k]==='discard'){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-10.mp3`);
refAudio.current[keys[k]].addEventListener('ended', onAudioEnd);
}else if(keys[k]==='end'){
refAudio.current[keys[k]]=new Audio(`assets/sfx/sfx-11.mp3`);
refAudio.current[keys[k]].addEventListener('ended', onAudioEnd);
}
}
return () => {
for(var k in keys){
if(refAudio.current[keys[k]]){
refAudio.current[keys[k]].removeEventListener('ended', onAudioEnd);
}
}
}

@ -1,4 +1,5 @@
import { useEffect, useRef, useState } from "react";
import { OSC_ADDRESS, sendOsc } from "../util/osc";
export default function VoiceAnalysis(){
@ -56,6 +57,8 @@ export default function VoiceAnalysis(){
// console.log(`Average Volume: ${averageVolume}`);
setVolume(averageVolume);
sendOsc(OSC_ADDRESS.AMPLITUDE, averageVolume/127.0);
};
useEffect(()=>{

@ -426,6 +426,7 @@ export function FreeFlow(){
function onNumpad(mess){
console.log('Numpad input received:', mess);
setPadInput(mess);
}

@ -26,6 +26,7 @@ export const OSC_ADDRESS={
PLAY_CUE:'/playcue',
STOP_CUE:'/stopcue',
RESET_CUE:'/resetcue',
AMPLITUDE:'/amplitude',
}
@ -40,7 +41,7 @@ export async function sendOsc(key, message){
// }
try{
console.log(`Sending OSC message: ${key} -> ${message}`);
if(key!=OSC_ADDRESS.AMPLITUDE) console.log(`Sending OSC message: ${key} -> ${message}`);
await invoke('send_osc_message', {
key: key,
message: message.toString(),

@ -97,7 +97,7 @@ export function UserProvider({children}) {
const data={
userId,
// sessionId,
password: password||'',
password: refPassword.current||'',
choice: choice||'',
summary: summary||'',
date: moment().format("YYYY-MM-DD hh:mm:ss"),

Loading…
Cancel
Save