📄 audiomodule - amplitude_env_.asm
字号:
#include <asm_sprt.h>
/*
SHARC Audio Module
Function Name : Amplitude Envelope Detect
Setup Cycle Count : 3
Routine Cycle Count : 8
Cleanup Cycle Count : NA
Registers Used : r0, r1, r2, r4, r8, i4
Description
This function tracks the envelope of the incoming signal using a peak-follower
*/
#include "audiomodule_spt.h"
#include "AudioModule - Amplitude_Env.h"
.section /pm Code_Space_Name;
/* ___________________________________________________________________________
Amplitude Envelope Measurement
*/
/* if the algorithm does support SIMD, remove this warning */
#ifdef SIMD_SUPPORT
#warning ** SHARC AudioModule Warning : SIMD not supported by ROUTINE function
#endif
/* Setup */
_Setup_Amplitude_Measure_Env:
.global _Setup_Amplitude_Measure_Env;
call Setup_Amplitude_Measure_Env (db);
i4 = r4;
nop;
leaf_exit;
_Setup_Amplitude_Measure_Env.end:
Setup_Amplitude_Measure_Env:
.global Setup_Amplitude_Measure_Env;
rts (db);
r0 = r0 xor r0, dm( Amplitude_Measure_Env_Decay, i4) = r8;
dm(Amplitude_Measure_Env_Amplitude,i4) = r0;
nop;
Setup_Amplitude_Measure_Env.end:
/* Routine */
C_FUNC(Amplitude_Measure_Env):
.global C_FUNC(Amplitude_Measure_Env);
call Amplitude_Measure_Env (db);
i4 = r4;
r8 = dm(Amplitude_Measure_Env_Input,i4);
leaf_exit;
C_FUNC(Amplitude_Measure_Env).end:
xC_FUNC(Amplitude_Measure_Env):
.global xC_FUNC(Amplitude_Measure_Env);
call Amplitude_Measure_Env (db);
i4 = r4;
dm(Amplitude_Measure_Env_Input,i4) = r8;
leaf_exit;
xC_FUNC(Amplitude_Measure_Env).end:
Amplitude_Measure_Env:
.global Amplitude_Measure_Env;
f1 = abs f8, r2 = dm(Amplitude_Measure_Env_Amplitude,i4);
comp(f2,f1), r4 = dm(Amplitude_Measure_Env_Decay,i4);
if LT r2 = r1;
rts (db);
f0 = f2 * f4;
dm(Amplitude_Measure_Env_Amplitude,i4) = r0;
Amplitude_Measure_Env.end:
/* Cleanup */
/* - none - */
/* ___________________________________________________________________________ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -