나는 실험을 해왔다. FM 합성 오디오 파일을 만들고 사용하는 ADSR 엔벌로프를 사용하여 결과 사운드를 형성합니다. FM은 주파수 변조를 의미합니다.ADSR은 Attack, Decay, Sustain 및 Release를 의미합니다. ADSR은 건반을 누를 때 음의 음량이 얼마나 빨리 증가(공격) 및 감소(감쇠)하는지, 키를 누르고 있을 때 지속되는 음량, 키에서 손을 뗄 때 음의 음량이 페이드되는 방식을 결정하는 곡선을 설명합니다. ADSR 곡선의 일반적인 그림에는 4개의 직선이 있습니다.
A, D, R are time; S is a levelA, D, R are time; S is a levelA, D, R are time; S is a levelA, D, R are time; S is a levelA, D, R은 시간입니다. S는 레벨
아래 파형에는 변조가 없습니다(모든 최고점과 최저점의 간격이 동일함).
그래프에서 첫 번째 주기의 맨 위를 보면 작은 결함을 볼 수 있습니다. 코드를 작성하고 있었기 때문에 오류가 있다고 생각했습니다. 확대/축소하면 사운드에 약간 영향을 줄 수 있는 중대한 오류처럼 보입니다.
Actually, two glitchesActually, two glitchesActually, two glitchesActually, two glitches사실 두 가지 오류
어택은 0.001초로, 디케이는 0.003초로 설정했습니다. 초당 44,100 샘플에서 공격은 샘플 44에서 끝나고 감쇠는 샘플 176에서 끝납니다. 단순화된 버전을 만들기 위해 데이터 테이블을 만들었고 결국 ADSR 곡선의 날카로운 모서리로 인해 글리치가 발생한다는 것을 깨달았습니다. 이를 수정하기 위해 스플라인을 ADSR 곡선에 맞춥니다. 스플라인의 장력이 충분히 높으면 글리치가 눈에 띄지 않을 정도로 미묘합니다. (위와 아래에서 들은 데이터가 아니라 단순화된 데이터입니다.)
The orange spline-based curves are hiding behind the purple curves; at this zoom they are nearly identical.The orange spline-based curves are hiding behind the purple curves; at this zoom they are nearly identical.The orange spline-based curves are hiding behind the purple curves; at this zoom they are nearly identical.The orange spline-based curves are hiding behind the purple curves; at this zoom they are nearly identical.주황색 스플라인 기반 곡선은 보라색 곡선 뒤에 숨어 있습니다. 이 확대/축소에서는 거의 동일합니다.
감쇠 곡선과 서스테인 곡선 사이의 모서리를 약간 확대합니다.
The solid sine curve is rising, but slowing. The dotted purple decay curve is falling, but about to become flat (sustain.)The solid sine curve is rising, but slowing. The dotted purple decay curve is falling, but about to become flat (sustain.)The solid sine curve is rising, but slowing. The dotted purple decay curve is falling, but about to become flat (sustain.)The solid sine curve is rising, but slowing. The dotted purple decay curve is falling, but about to become flat (sustain.)솔리드 사인 곡선이 상승하지만 느려집니다. 점선으로 된 보라색 감쇠 곡선이 떨어지고 있지만 곧 평평해질 것입니다(지속).
주황색 점선 곡선은 보라색 점선 곡선에 있는 점의 스플라인 보간입니다. 단색 주황색 곡선은 축소하기 위해 주황색 엔벨로프를 곱한 원래 사인파입니다. 자주색 곡선의 오류는 1/1000 정도인 것으로 보입니다. 그게 들리는지 안 들리는지 모르겠습니다. 웨이브 파일 데이터의 +/- 32767 범위에서 약 32, 2^5, 아마도 16비트 숫자의 5번째 비트, 아마도 60dB 아래일 것입니다. 좋은 장비와 어린 귀라면 들을 수 있어야 한다고 생각합니다.
확대해서 보면 훌륭하게 왜곡된 사인파.
The glitch is gone. The leading part of the sine wave is flattened by the rising gain of the attack.The glitch is gone. The leading part of the sine wave is flattened by the rising gain of the attack.The glitch is gone. The leading part of the sine wave is flattened by the rising gain of the attack.The glitch is gone. The leading part of the sine wave is flattened by the rising gain of the attack.결함이 사라졌습니다. 사인파의 선행 부분은 증가하는 어택 게인에 의해 평평해집니다.
파일이 첨부되었습니다. Windows에서는 멀티미디어 DLL에서 PlaySound를 사용합니다. 상단에 몇 개의 스위치가 있습니다. 그것은 FM 코드를 전혀 사용하지 않으며, 생각할수록 주파수 변조가 아닌 위상 변조를 구현하는 것 같습니다. 이 데모 이상은 준비되지 않았습니다.