You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.1 KiB
57 lines
1.1 KiB
#ifdef WITH_SITL_TONEALARM |
|
|
|
#include "ToneAlarm_SF.h" |
|
|
|
#include <stdio.h> |
|
|
|
#ifdef HAVE_SFML_AUDIO_H |
|
#include <SFML/Audio.h> |
|
#else |
|
#include <SFML/Audio.hpp> |
|
#endif |
|
|
|
#include "Synth.hpp" |
|
|
|
using namespace HALSITL; |
|
|
|
sf::SoundBuffer soundBuffer; |
|
sf::Sound demoSound; |
|
Synth::sEnvelope envelope; |
|
|
|
void ToneAlarm_SF::set_buzzer_tone(float frequency, float volume, float duration_ms) |
|
{ |
|
if (!AP::sitl()->tonealarm_sim.is_enabled()) { |
|
return; |
|
} |
|
|
|
if (frequency <= 0) { |
|
return; |
|
} |
|
|
|
Synth::sTone tone; |
|
tone.waveType = Synth::OSC_SQUARE; |
|
tone.dStartFrequency = frequency; |
|
tone.dEndFrequency = frequency; |
|
tone.dAmplitude = 1; |
|
|
|
envelope.dSustainTime = duration_ms/1000.0f; |
|
|
|
Synth::generate(&soundBuffer, envelope, tone, 20000, 44100); |
|
demoSound.setBuffer(soundBuffer); |
|
demoSound.play(); |
|
} |
|
|
|
bool ToneAlarm_SF::init() |
|
{ |
|
// LASER |
|
envelope.dAttackTime = 0.00001; |
|
envelope.dDecayTime = 0.00001; |
|
envelope.dSustainTime = 0.3; |
|
envelope.dReleaseTime = 0.00001; |
|
envelope.dStartAmplitude = 1.0; |
|
envelope.dSustainAmplitude = 1.0; |
|
|
|
return true; |
|
} |
|
|
|
#endif
|
|
|