UNPKG

hakoru-tuner-two

Version:

Expo uyumlu, gerçek zamanlı tuner (YIN algoritmasıyla frekans ve nota tespiti)

39 lines (35 loc) 952 B
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() }; }