hakoru-tuner-two
Version:
Expo uyumlu, gerçek zamanlı tuner (YIN algoritmasıyla frekans ve nota tespiti)
39 lines (35 loc) • 952 B
JavaScript
import { NativeModules, NativeEventEmitter } from 'react-native';
const { HakoruTunerTwo } = NativeModules;
const emitter = new NativeEventEmitter(HakoruTunerTwo);
export function start(options = { a4: 440 }) {
return HakoruTunerTwo.start(options.a4);
}
export function stop() {
HakoruTunerTwo.stop();
}
export function onPitchDetected(callback) {
const sub = emitter.addListener("onPitchDetected", (data) => {
try {
// JSON string'ini güvenli şekilde parse et
let parsedData;
if (typeof data === 'string') {
parsedData = JSON.parse(data);
} else {
parsedData = data;
}
callback(parsedData);
} catch (e) {
console.error('JSON parse error:', e, 'Raw data:', data);
// Hata durumunda boş obje döndür
callback({
freq: 0,
note: "N/A",
cents: 0,
isInTune: false
});
}
});
return {
remove: () => sub.remove()
};
}