Найти в Дзене
Пикабу

Кастомный чиптюн

Помню, как в детстве с восхищением смотрел на динамик в колонке, чудесным образом воспроизводящий музыку/звуки с помощью колебаний картонной мембраны. Сейчас решил сделать в игре собственный синтезатор в реальном времени.

Никакой записанной заранее музыки. Все должно генерироваться на лету. Захотелось попробовать сделать 100% контроль над звуковой волной. По сути, сделать формулу, в которую передаешь текущее время, а она возвращает позицию картонки мембраны динамика.

Сделал)) Вот на SoundCloud музыка для главного меню игры. Как вам?

Исходный код музыки (на встроенном языке Sandbasix):

10 // ***********************************.

20 // *** SPETROMSX Main Menu Theme ***.

30 // *** by Andrey Fomin ***.

40 // ***********************************.

50 //.

60 // 0 - High Arpegio.

70 TRACK: 0 vol=6 sqr=5 oct=4.

80 STEREO min=-8 max=5.

90 LFGVOL per=16 min=10 max=15 bynote=true adsr=90, 5, 100, 30.

100 ARPEGIO steps=--0--1&2--3-4--5-6--0&3--2-1 shift=16 dur=8 mode=ext.

110 DELAY: 0 fading=40 time=8 count=2 pan=-5, 5.

120 // 1 - Mid Bass Arpegio.

130 TRACK: 1 vol=3 oct=3 sqr=10 adsr=1, 30, 30, 20.

140 LFGPAN: 1 per=8 min=-12 max=0 bynote=true.

150 LFGDUTY: 1 per=0.125 min=0 max=8 bynote=false.

160 ARPEGIO: 1 steps=0-1--0-1-2-0-1-2----0--2 shift=16 dur=24 mode=ext.

170 DELAY: 1 fading=50 time=8 count=2 pan=10, -5.

180 // 2 - Strings.

190 TRACK: 2 vol=6 oct=3 sqr=12 adsr=90, 8, 70, 50.

200 LFGVOL: 2 per=16 min=8 max=15 bynote=true adsr=50, 8, 100, 50.

210 STEREO: 2 min=0 max=12.

220 // 3 - Bass.

230 TRACK: 3 vol=12 oct=1 sqr=4 duty=2 adsr=4, 30, 30, 40.

240 LFGPAN: 3 per=8 min=-7 max=3 bynote=true.

250 ARPEGIO: 3 steps=0--0--0--0-0- shift=8 dur=8.

260 // 4 - Drums.

270 TRACK: 4 vol=11.

280 // 5 - Solo.

290 TRACK: 5 vol=3 sqr=10 oct=4 duty=2 adsr=10, 50, 50, 10.

300 LFGPAN: 5 per=8 min=-10 max=10 bynote=true.

310 DELAY: 5 fading=75 time=8 count=4 pan=-13, 13, -7, 7.

320 LFGSQR: 5 per=8 min=0 max=15 bynote=true.

330 //.

340 // *** MAIN CHORDS ***.

350 SET: A F#maj9| Bmaj9| Amaj9| Emaj9|.

360 SET: a F#maj9| Bmaj9| Amaj9| Dmaj9|.

370 SET: B Gm9| D#9| Cm11| D#mMaj7|.

380 SET: C Am11| D7| Fmaj7| Cmaj7|.

390 SET: D Fm9| D#maj9| Fm9| D#maj9|.

400 // *** POWER CHORDS ***.

410 SET: pA F#5| B5| A5| E5| F#5| B5| A5| D5|.

420 SET: pB G5| D#5| C5| D#5| G5| D#5| C5| D#5|.

430 SET: pC A5| D5| F5| C5| A5| D5| F5| C5|.

440 SET: pD F5| D#5| F5| G5| F5| D#5| F5| G5|.

450 // *** DRUMS ***.

460 SET: d1 @*-%-%-*-! -$-*-^-%-*-_-*-! -*-%-$-

470 SET: d2 *-%-%-*-! -%-*-! -%*-^-! -*-! -_-%-$-

480 SET: d3 %*--$-*-%! --$*--%-*-$-*-%! -*-$--

490 SET: d4 *---*-! --*-*-^_-^_-! -~_-~_-! -*_-*_-

500 SET: d? d1? d2? d1? d4? d1? d2? d3? d4.

510 SET: e1 %*--$-%-! %--$-^-_-%-$--! %-%-$-%-

520 SET: e2 %*-*-$-%-! %--$-~-*-%-$--! %-%-$-%-

530 SET: e3 %*-*-$-%-! %--$-~-*-%-$-*-! %-%-! $-*%-

540 SET: e? e1? e2? e1? e3.

550 //.

560 // *** PLAY ***.

570 //.

590 PLAY: 1? pA: 1.

600 PLAY: 4 R0.5? e1? e3? e.

610 PLAY: 0 R0.25? a.

630 REWIND 1.

640 PLAY: 0? A? a: 2.

650 PLAY: 1? pA.

660 PLAY: 3? pA.

670 PLAY: 4? e? e.

690 REWIND 2.

700 PLAY: 0? B? B: 3.

710 PLAY: 2 v5? B? B.

720 PLAY: 3? pB.

730 PLAY: 4? d.

750 REWIND 3.

760 PLAY: 0? C? C: 4.

770 PLAY: 1? pC.

780 PLAY: 3? pC.

790 PLAY: 4? e? e.

810 REWIND 4.

820 PLAY: 0? D? D: 5.

830 PLAY: 2 v5? D? D.

840 PLAY: 3? pD.

850 PLAY: 4? d.

870 REWIND 5.

880 PLAY: 2 v5? A? a.

890 PLAY: 3? pA.

900 PLAY: 5 A#8 F>4 F>4 C#>4 F>8 D#>8 R2 R4 R8 C#>4 R8 G#4 R4 R8 B4 R8 D#4 R4 R8 F.

910 LOOP.

Читайте также.