forked from Skyrat-SS13/Skyrat-tg
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathtts_sound.dm
44 lines (40 loc) · 2.43 KB
/
tts_sound.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// TODO: SS220-TTS to delete
//world/proc/shelleo
#define SHELLEO_ERRORLEVEL 1
#define SHELLEO_STDOUT 2
#define SHELLEO_STDERR 3
/proc/apply_sound_effect(effect, filename_input, filename_output)
if(!effect)
CRASH("Invalid sound effect chosen.")
var/taskset
// TODO: SS220-TTS
if(CONFIG_GET(string/ffmpeg_cpuaffinity))
taskset = "taskset -ac [CONFIG_GET(string/ffmpeg_cpuaffinity)]"
var/list/output
switch(effect)
if(SOUND_EFFECT_RADIO)
output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "highpass=f=1000, lowpass=f=3000, acrusher=1:1:50:0:log" [filename_output]"})
if(SOUND_EFFECT_ROBOT)
output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, volume=volume=1.5" [filename_output]"})
if(SOUND_EFFECT_RADIO_ROBOT)
output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, volume=volume=1.5, highpass=f=1000, lowpass=f=3000, acrusher=1:1:50:0:log" [filename_output]"})
if(SOUND_EFFECT_MEGAPHONE)
output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "highpass=f=500, lowpass=f=4000, volume=volume=10, acrusher=1:1:45:0:log" [filename_output]"})
if(SOUND_EFFECT_MEGAPHONE_ROBOT)
output = world.shelleo({"[taskset] ffmpeg -y -hide_banner -loglevel error -i [filename_input] -filter:a "afftfilt=real='hypot(re,im)*sin(0)':imag='hypot(re,im)*cos(0)':win_size=1024:overlap=0.5, deesser=i=0.4, highpass=f=500, lowpass=f=4000, volume=volume=10, acrusher=1:1:45:0:log" [filename_output]"})
else
CRASH("Invalid sound effect chosen.")
var/errorlevel = output[SHELLEO_ERRORLEVEL]
var/stdout = output[SHELLEO_STDOUT]
var/stderr = output[SHELLEO_STDERR]
if(errorlevel)
error("Error: apply_sound_effect([effect], [filename_input], [filename_output]) - See debug logs.")
// TODO: SS220-TTS log_debug -> debug_world_log
debug_world_log("apply_sound_effect([effect], [filename_input], [filename_output]) STDOUT: [stdout]")
debug_world_log("apply_sound_effect([effect], [filename_input], [filename_output]) STDERR: [stderr]")
return FALSE
return TRUE
//world/proc/shelleo
#undef SHELLEO_ERRORLEVEL
#undef SHELLEO_STDOUT
#undef SHELLEO_STDERR