Created
December 31, 2024 08:58
-
-
Save aike/030b02d357c27c44a38009b5a96a5e5c to your computer and use it in GitHub Desktop.
New Year Bell written in mimium
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| // New Year Bell 2024.12.31 aike | |
| include("osc.mmm") | |
| include("env.mmm") | |
| include("filter.mmm") | |
| fn osc(freq) { | |
| sinwave(freq,0.0) | |
| } | |
| fn filterDelay(sig, sec) { | |
| delay(441000.0, lowpass(sig, 900.0, 0.3), sec * samplerate) | |
| } | |
| // Dry/Wetバランス調整がしやすい簡易ディレイ | |
| fn echo(sig, sec) { | |
| let delay1 = filterDelay(sig,sec) * 0.8 | |
| let delay2 = filterDelay(delay1,sec) * 0.7 | |
| sig + delay1 + delay2 | |
| } | |
| // FM合成する高階関数 | |
| fn fm(o1, o2) { | |
| let o1 = o1() | |
| let o2 = o2() | |
| |f| o1(f + o2(f)) | |
| } | |
| // オペレーターを関数で定義 | |
| let op1 = |freq| { osc(freq * 1.0) * 1.0 } | |
| let op2 = |freq| { osc(freq * 3.5) * 300.0 } | |
| let op3 = |freq| { osc(0.7) * 0.3 } | |
| // オペレーター同士をFM合成 | |
| let op4 = fm(| | op1, | | op2) // 金属音 | |
| let op5 = fm(| | op4, | | op3) // うなり | |
| // 11秒ごとにノートオン | |
| let bang = 0.0 | |
| let noteOff = | | { bang = 0.0 } | |
| fn noteOn(){ | |
| bang = 1.0 | |
| noteOff@(now + 10.0 * samplerate) | |
| noteOn@( now + 11.0 * samplerate) | |
| } | |
| [email protected] | |
| fn dsp(){ | |
| let sig = op5(110.0) * adsr(0.015, 9.0, 0.0, 0.0, bang) * 0.5 | |
| let r = echo(sig, 1.5) | |
| (r, r) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment