package de.tobias.playpad.namac; import java.util.HashMap; import de.tobias.playpad.NativeAudio; import de.tobias.playpad.NativeAudio.NativeAudioDelegate; import de.tobias.playpad.audio.AudioCapability; import de.tobias.playpad.audio.AudioHandler; import de.tobias.playpad.audio.AudioHandlerConnect; import de.tobias.playpad.audio.Peakable.Channel; import de.tobias.playpad.pad.PadStatus; import de.tobias.playpad.pad.conntent.PadContent; import de.tobias.playpad.viewcontroller.AudioHandlerViewController; import javafx.util.Duration; public class NativeAudioMacHandlerConnect extends AudioHandlerConnect implements NativeAudioDelegate { private static final HashMap<Integer, NativeAudioMacHandler> handlers = new HashMap<>(); public NativeAudioMacHandlerConnect() { NativeAudio.initialize(); NativeAudio.setDelegate(this); } @Override public AudioHandler createAudioHandler(PadContent content) { NativeAudioMacHandler nativeAudioMacHandler = new NativeAudioMacHandler(content); handlers.put(nativeAudioMacHandler.getId(), nativeAudioMacHandler); return nativeAudioMacHandler; } @Override public AudioHandlerViewController getAudioHandlerSettingsViewController() { return null; } @Override public String getType() { return "Native"; } @Override public void onFinish(int id) { NativeAudioMacHandler nativeAudioMacHandler = handlers.get(id); if (nativeAudioMacHandler != null) { PadContent content = nativeAudioMacHandler.getContent(); if (content != null) { content.getPad().setStatus(PadStatus.STOP); } } } @Override public void onPositionChanged(int id, double position) { NativeAudioMacHandler nativeAudioMacHandler = handlers.get(id); if (nativeAudioMacHandler != null) { nativeAudioMacHandler.positionProperty.set(Duration.seconds(position)); } } @Override public void onPeakMeter(int id, float left, float right) { NativeAudioMacHandler nativeAudioMacHandler = handlers.get(id); if (nativeAudioMacHandler != null) { nativeAudioMacHandler.audioLevelProperty(Channel.LEFT).set(left); nativeAudioMacHandler.audioLevelProperty(Channel.RIGHT).set(right); } } @Override public boolean isFeatureAvaiable(AudioCapability audioCapability) { return false; } @Override public AudioHandlerViewController getAudioFeatureSettings(AudioCapability audioCapablility) { return null; } }