// Path: app/src/main/java/com/chrynan/android_guitar_tuner/tuner/converter/FrequencyConverter.java
// public interface FrequencyConverter {
// 
//     /**
//      * Converts the provided frequency value into a float array representing the audio waveform
//      * data with values in the range [-1, 1].
//      *
//      * @param frequency The provided frequency to convert.
//      * @return The audio waveform buffer representing the provided frequency.
//      */
//     float[] convert(double frequency);
// }
// 
// Path: app/src/main/java/com/chrynan/android_guitar_tuner/tuner/player/AudioPlayer.java
// public interface AudioPlayer {
// 
//     /**
//      * Starts playing the buffer provided in the {@link #setBuffer(float[])} method to the audio output.
//      */
//     void play();
// 
//     /**
//      * Stops playing to the audio output the buffer provided in the {@link #setBuffer(float[])} method.
//      */
//     void stop();
// 
//     /**
//      * Releases all the internal resources held by this AudioPlayer. This should be called when the
//      * AudioPlayer is no longer needed and after a call to {@link #stop()}. After this method is
//      * called, a new AudioPlayer will have to be created to play again.
//      */
//     void release();
// 
//     /**
//      * Sets the audio waveform data that will be played to the audio output.
//      *
//      * @param waveformBuffer The waveform data to be played.
//      */
//     void setBuffer(float waveformBuffer[]);
// }


import com.chrynan.android_guitar_tuner.tuner.converter.FrequencyConverter;
import com.chrynan.android_guitar_tuner.tuner.player.AudioPlayer;
import io.reactivex.Completable;
package com.chrynan.android_guitar_tuner.tuner;



/**
 * An implementation of the {@link PitchPlayer} interface.
 */
public class GuitarPitchPlayer implements PitchPlayer {

    private final AudioPlayer audioPlayer;
// Path: app/src/main/java/com/chrynan/android_guitar_tuner/tuner/converter/FrequencyConverter.java
// public interface FrequencyConverter {
// 
//     /**
//      * Converts the provided frequency value into a float array representing the audio waveform
//      * data with values in the range [-1, 1].
//      *
//      * @param frequency The provided frequency to convert.
//      * @return The audio waveform buffer representing the provided frequency.
//      */
//     float[] convert(double frequency);
// }
// 
// Path: app/src/main/java/com/chrynan/android_guitar_tuner/tuner/player/AudioPlayer.java
// public interface AudioPlayer {
// 
//     /**
//      * Starts playing the buffer provided in the {@link #setBuffer(float[])} method to the audio output.
//      */
//     void play();
// 
//     /**
//      * Stops playing to the audio output the buffer provided in the {@link #setBuffer(float[])} method.
//      */
//     void stop();
// 
//     /**
//      * Releases all the internal resources held by this AudioPlayer. This should be called when the
//      * AudioPlayer is no longer needed and after a call to {@link #stop()}. After this method is
//      * called, a new AudioPlayer will have to be created to play again.
//      */
//     void release();
// 
//     /**
//      * Sets the audio waveform data that will be played to the audio output.
//      *
//      * @param waveformBuffer The waveform data to be played.
//      */
//     void setBuffer(float waveformBuffer[]);
// }


// Path: app/src/main/java/com/chrynan/android_guitar_tuner/tuner/GuitarPitchPlayer.java
import com.chrynan.android_guitar_tuner.tuner.converter.FrequencyConverter;
import com.chrynan.android_guitar_tuner.tuner.player.AudioPlayer;
import io.reactivex.Completable;

package com.chrynan.android_guitar_tuner.tuner;



/**
 * An implementation of the {@link PitchPlayer} interface.
 */
public class GuitarPitchPlayer implements PitchPlayer {

    private final AudioPlayer audioPlayer;
    private final FrequencyConverter frequencyConverter;