mirror of
				https://github.com/TomHarte/CLK.git
				synced 2025-11-04 00:16:26 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			43 lines
		
	
	
		
			1020 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1020 B
		
	
	
	
		
			C++
		
	
	
	
	
	
//
 | 
						|
//  AudioToggle.hpp
 | 
						|
//  Clock Signal
 | 
						|
//
 | 
						|
//  Created by Thomas Harte on 17/04/2018.
 | 
						|
//  Copyright 2018 Thomas Harte. All rights reserved.
 | 
						|
//
 | 
						|
 | 
						|
#ifndef AudioToggle_hpp
 | 
						|
#define AudioToggle_hpp
 | 
						|
 | 
						|
#include "../../Outputs/Speaker/Implementation/SampleSource.hpp"
 | 
						|
#include "../../Concurrency/AsyncTaskQueue.hpp"
 | 
						|
 | 
						|
namespace Audio {
 | 
						|
 | 
						|
/*!
 | 
						|
	Provides a sample source that can programmatically be set to one of two values.
 | 
						|
*/
 | 
						|
class Toggle: public Outputs::Speaker::SampleSource {
 | 
						|
	public:
 | 
						|
		Toggle(Concurrency::DeferringAsyncTaskQueue &audio_queue);
 | 
						|
 | 
						|
		void get_samples(std::size_t number_of_samples, std::int16_t *target);
 | 
						|
		void set_sample_volume_range(std::int16_t range);
 | 
						|
		void skip_samples(const std::size_t number_of_samples);
 | 
						|
 | 
						|
		void set_output(bool enabled);
 | 
						|
		bool get_output() const;
 | 
						|
 | 
						|
	private:
 | 
						|
		// Accessed on the calling thread.
 | 
						|
		bool is_enabled_ = false;
 | 
						|
		Concurrency::DeferringAsyncTaskQueue &audio_queue_;
 | 
						|
 | 
						|
		// Accessed on the audio thread.
 | 
						|
		int16_t level_ = 0, volume_ = 0;
 | 
						|
};
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
#endif /* AudioToggle_hpp */
 |