Skip to content

surikov/rockdice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

38 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

rockdice

АвтогСнСрация ΠΌΡƒΠ·Ρ‹ΠΊΠΈ Π±Π΅Π· AI

bender.png

АвтоматичСскоС созданиС ΠΌΡƒΠ·Ρ‹ΠΊΠΈ ΠΏΠΎ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Web Audio API, TypeScript, Android WebView, Ρ‚Π°Π±Π»ΠΈΡ‡Π½ΠΎ-Π²ΠΎΠ»Π½ΠΎΠ²ΠΎΠΉ синтСз ΠΈ элСмСнтарная тСория ΠΌΡƒΠ·Ρ‹ΠΊΠΈ.


Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅:

ОписаниС Ρ€Π°Π±ΠΎΡ‚Ρ‹

rockdiceweb.png

Π’ основном ΠΎΠΊΠ½Π΅ ΠΌΠΎΠΆΠ½ΠΎ слайдСром Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π΅ΡΡΠΈΡŽ. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ² опрСдСляСт настроСниС ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ (слСва ΠΌΠΈΠ½ΠΎΡ€Π½Ρ‹Π΅, справа ΠΌΠ°ΠΆΠΎΡ€Π½Ρ‹Π΅, посСрСдинС Π΄ΠΆΠ°Π·ΠΎΠ²Ρ‹Π΅ сСптаккорды). ΠšΡ€ΡƒΠ³Π»Ρ‹ΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€ΠΈΡ„Ρ„Ρ‹ для стандартных 4-Ρ… слоёв ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ

  • Drums - Π·Π°Π΄Π°Π΅Ρ‚ Ρ€ΠΈΡ‚ΠΌ
  • Bass - гармоничСская основа ΠΈ Ρ€ΠΈΡ‚ΠΌ
  • Lead - создаёт мСлодичСский рисунок
  • Pad - ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΏΡƒΠ½ΠΊΡ‚, протяТныС Π½ΠΎΡ‚Ρ‹ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π°ΠΊΠΊΠΎΡ€Π΄Π°

По Π³ΠΎΠ»ΡƒΠ±ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ с ΠΈΠ³Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΌ ΠΊΡƒΠ±ΠΈΠΊΠΎΠΌ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ€Π°Π½Π΄ΠΎΠΌΠ½Ρ‹Π΅ значСния.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡŽ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎΠ΄ Π·Π°Π΄Π°Π½Π½Ρ‹Π΅ Π°ΠΊΠΊΠΎΡ€Π΄Ρ‹. Если ΠΏΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π°Ρ‚Π΅Π»ΠΈ ΠΈ ΠΏΡ€ΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ нСсколько ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ любом сочСтании Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ² ΠΈ инструмСнтов Π·Π²ΡƒΡ‡Π°Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° получаСтся Π²ΠΏΠΎΠ»Π½Π΅ "чСловСчСскоС".

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

ВстроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π°Π²Ρ‚ΠΎΠ³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π°Ρ€Π°Π½ΠΆΠΈΡ€ΠΎΠ²ΠΎΠΊ появились Π΅Ρ‰Ρ‘ Π² ΠΏΠ΅Ρ€Π²Ρ‹Ρ… синтСзаторах. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ исполнСния Π½Π° Cassio MT-100 ΠΈΠ· 80-Ρ… ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°:

https://www.youtube.com/watch?v=Aepm6V4yvhw

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Captain Plugins Epic, ΠΏΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ профСссионалам:

https://www.youtube.com/watch?v=ZuB_t1DBwp8

Web-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ BandLab SongStarter, Π½ΠΈΠΊΠ°ΠΊΠΈΡ… настроСк Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚, просто Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ стилС:

https://www.youtube.com/watch?v=EDRPy8KtY0c

Настройки

По ΠΊΠ½ΠΎΠΏΠΊΠ΅ с ΡˆΠ΅ΡΡ‚Π΅Ρ€Ρ‘Π½ΠΊΠΎΠΉ открываСтся ΠΎΠΊΠ½ΠΎ настроСк. МоТно Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€ΠΎΠΌΠΊΠΎΡΡ‚ΡŒ ΠΏΠΎ слоям, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ, ΠΌΠ΅Π½ΡΡ‚ΡŒ Π°ΠΊΠΊΠΎΡ€Π΄Ρ‹, Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

rockdiceopt.png

Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚Ρ€Π΅ΠΊΠ° ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Ρ€ΠΈΡ„Ρ„ ΠΈΠ· списка:

rockdicedrums.png

Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ²ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

rockdicechords.png

Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅ дСйствиС ΠΈ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ Π² ΠΏΡ€Π΅Π΄ΠΈΠ΄ΡƒΡ‰Π΅Π΅ состояниС это Ρ‚ΠΈΠΏΠΎΠ²ΠΎΠ΅ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ для Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. По ΠΊΠ½ΠΎΠΏΠΊΠ΅ с ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ Undo (справа Π²Π²Π΅Ρ€Ρ…Ρƒ) открываСтся ΠΎΠΊΠ½ΠΎ с историСй ΠΏΠΎΠ΄Π±ΠΎΡ€Π° ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΉ:

rockdiceundo.png

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΈ экспорт

Как ΠΈ любоС ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, RockDice позволяСт ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ мСлодию Π² MIDI-Ρ„Π°ΠΉΠ» ΠΈΠ»ΠΈ Wav-Ρ„Π°ΠΉΠ» (ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΠΏΠ°Π½Π΅Π»ΠΈ). ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… прилоТСниях. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ‚Ρ€Π΅ΠΊΠΎΠ² ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π² BandLab MixEditor (любой Ρ‚Ρ€Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ„ΠΎΡ€ΠΊΠ½ΡƒΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅):

https://www.bandlab.com/sss1024/tracks

bandlabtracks.png

БовмСстная Ρ€Π°Π±ΠΎΡ‚Π°

Бсылка Π½Π° мСлодию открываСтся Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Π² Ρ‚ΠΎΠΌ Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊ Π΅Ρ‘ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» Π°Π²Ρ‚ΠΎΡ€.

По ΠΊΠ½ΠΎΠΏΠΊΠ΅ со стандартной ΠΈΠΊΠΎΠ½ΠΊΠΎΠΉ Share открываСтся ΠΎΠΊΠ½ΠΎ прСдпросмотра. Π’ Π½Ρ‘ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚ΠΎΡΠ»Π°Ρ‚ΡŒ ссылку Π½Π° мСлодию Ρ‡Π΅Ρ€Π΅Π· e-mail, мСссСндТСр ΠΈΠ»ΠΈ соц. сСти:

rockdiceshare.png

Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ соц. сСтСй ссылка ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ распознаётся с описаниСм ΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… инструмСнтов:

rockdicevk.png

ОписаниС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ВоспроизвСдСниС Π·Π²ΡƒΠΊΠ°

Для воспроизвСдСния Π·Π²ΡƒΠΊΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° WebAudioFont:

https://github.com/surikov/webaudiofont

Π’ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ содСрТатся Π±ΠΎΠ»Π΅Π΅ 2000 ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… инструмСнтов ΠΈ основныС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Ρ‹ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π·Π²ΡƒΠΊΠ°:

  • 10-полосный эквалайзСр для настройки Ρ‚Π΅ΠΌΠ±Ρ€Π°
  • эхо для ΠΎΠ±ΡŠΡ‘ΠΌΠ½ΠΎΠ³ΠΎ звучания
  • динамичСский компрСссор для выдСлСния голосов

ДокумСнтация:

https://surikov.github.io/webaudiofont/npm/src/docs/index.html

ΠœΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²

Для Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ Π²Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Ρ… Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ) Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ² Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ extractMode вычисляСтся Ρ‚ΠΎΠ½ΠΈΠΊΠ° ΠΈ Π»Π°Π΄, см.

https://github.com/surikov/rockdice/blob/main/ts/code/zvoogharmonizer.ts#L1156

Для воспроизвСдСния ΠΌΡƒΠ·Ρ‹ΠΊΠΈ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ ΠΎΠΊΠΎΠ»ΠΎ двухсот Ρ€ΠΈΡ„Ρ„ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ инструмСнтами, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΏΠ°ΠΏΠΊΠ΅

https://github.com/surikov/rockdice/tree/main/patterns

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ ΠΊΡ€ΠΎΠΌΠ΅ Π½ΠΎΡ‚ Ρ‚Π°ΠΊΠΆΠ΅ содСрТит описаниС Π»Π°Π΄Π° ΠΈ Ρ‚ΠΎΠ½ΠΈΠΊΠΈ.

Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Ρ€ΠΈΡ„Ρ„Ρ‹ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ morphSchedule Ρ‚Ρ€Π°Π½ΡΠΏΠΎΠ½ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ‚ΠΎΠ½ΠΈΠΊΡƒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Ρ… Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ² ΠΈ проводится модуляция Π² Π»Π°Π΄ Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ²ΠΎΠΉ прогрСссии, см.

https://github.com/surikov/rockdice/blob/main/ts/code/zvoogharmonizer.ts#L377

  • ВранспонированиС ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ это пСрСнос всСх Π½ΠΎΡ‚ Π½Π° Ρ€Π°Π²Π½ΠΎΠ΅ количСство ΠΏΠΎΠ»ΡƒΡ‚ΠΎΠ½ΠΎΠ². По-простому - ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π²ΡƒΠΊ Π²Ρ‹ΡˆΠ΅ ΠΈΠ»ΠΈ Π½ΠΈΠΆΠ΅.
  • ΠœΠΎΠ΄ΡƒΠ»ΡΡ†ΠΈΡ ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ это сдвиг ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Ρ… ступСнСй Π»Π°Π΄Π°. По-простому - ΠΈΠ· ΠΌΠΈΠ½ΠΎΡ€Π° Π² ΠΌΠ°ΠΆΠΎΡ€ ΠΈ Ρ‚.ΠΏ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° инструмСнтов

ΠŸΡ€ΠΈ воспроизвСдСнии ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹Π· Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² учитываСтся спСцифика исполнСния Π½Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… инструмСнтах. НаримСр:

  • ΠΏΡ€ΠΈ ΠΈΠ³Ρ€Π΅ Π½Π° Π³ΠΈΡ‚Π°Ρ€Π΅ с Π΄ΠΈΡΡ‚ΠΎΡ€ΡˆΠ½ΠΎΠΌ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ ΠΊΠ°ΠΊ ΠΈΠ³Ρ€Ρƒ Π½Π° ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… струнах, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ³Ρ€Ρƒ Π½Π° ΠΏΡ€ΠΈΠΆΠ°Ρ‚Ρ‹Ρ… струнах (Palm Mute). Π’.Π΅. инструСмСнт ΠΎΠ΄ΠΈΠ½, Π½ΠΎ для рСалистичного звучания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π²Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π° сэмплов для ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΈΠ³Π»ΡƒΡˆΠ΅Π½Π½Ρ‹Ρ… струн
  • Π½Π° аккустичСской Π³ΠΈΡ‚Π°Ρ€Π΅ ΡƒΠ΄Π°Ρ€Ρ‹ ΠΏΠΎ струнам Π²Π½ΠΈΠ· ΠΈ Π²Π²Π΅Ρ€Ρ… ΠΎΡ‰ΡƒΡ‚ΠΈΠΌΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ, см. ΠΏΡ€ΠΈΠΌΠ΅Ρ€
  • Π½Π°Π±ΠΎΡ€Ρ‹ Π½ΠΎΡ‚ ΠΏΠΎΡ…ΠΎΠΆΠΈΡ… Π°ΠΊΠΊΠΎΡ€Π΄ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ G ΠΈ Gm) ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΆΠΈΠΌΠ°Ρ‚ΡŒΡΡ Π½Π° ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Ρ€Π°Π·Π½Ρ‹Ρ… Π»Π°Π΄Π°Ρ…, это Π½ΡƒΠΆΠ½ΠΎ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ модуляции Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ²
  • ΠΈ Ρ‚.ΠΏ.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ получаСтся ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π·Π²ΡƒΡ‡Π°Π½ΠΈΠ΅ сгСнСрированной ΠΌΡƒΠ·Ρ‹ΠΊΠΈ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΎΠ±Ρ€Π°Π·Π½Ρ‹ΠΌ.

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ состояний

Π’Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Π°ΠΊΠΊΠΎΡ€Π΄Ρ‹, Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ настройки ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² localStorage Π±Ρ€Π°ΠΉΠ·Π΅Ρ€Π°, см. readObjectFromlocalStorage. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΡ€ΠΈ Π½ΠΎΠ²ΠΎΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π΅Π³ΠΎ состояниС восстанавливаСтся Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ Π²ΠΈΠ΄Π΅ ΠΊΠ°ΠΊ ΠΈ Π² послСднСм сСансС Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ΠŸΡ€ΠΈ создании ссылки для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ всС Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΠΎΠ΄ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ-ΠΏΡ€Π΅Π΄Π»ΠΈΠ½Π½Ρ‹ΠΉ URL, ΠΏΡ€ΠΈΠΌΠ΅Ρ€

https://mzxbox.ru/RockDice/share.php?seed=%7B%22drumsSeed%22%3A21%2C%22bassSeed%22%3A12%2C%22leadSeed%22%3A6%2C%22padSeed%22%3A12%2C%22drumsVolume%22%3A111%2C%22bassVolume%22%3A99%2C%22leadVolume%22%3A66%2C%22padVolume%22%3A77%2C%22chords%22%3A%5B%22Cm%22%2C%222%2F1%22%2C%22Ebm%22%2C%222%2F1%22%5D%2C%22tempo%22%3A130%2C%22mode%22%3A%22Ionian%22%2C%22tone%22%3A%22D%23%22%2C%22version%22%3A%22v2.83%22%2C%22comment%22%3A%22%22%2C%22ui%22%3A%22web%22%7D

Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° ссылок

ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ΅ΠΌΡ‹Π΅ ссылки ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π°ΠΌ Open Graph ΠΈ Twitter Cards.

Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ Π±ΠΎΠ»ΡŒΠ½ΡˆΠΈΠ½ΡΡ‚Π²ΠΎΠΌ Π΄Π²ΠΈΠΆΠΊΠΎΠ² соц. сСтСй. По сути это Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊ страницы Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π²Π΅Π΄Ρ‘Ρ‚ ссылка ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΅Ρ‘ описаниС ΠΈ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ прСдпросмотра.

ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΈ страница для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‚ΡΡ динамичСски ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΌ php-скриптом, см.

https://github.com/surikov/rockdice/blob/main/server/share.php

вся информация для прСдпросмотра Π² Ρ‚Π΅Π³Π°Ρ…

<meta name="twitter:card" content="summary" />
<meta property="og:title" content="<?php echo $line; ?>" />
<meta property="og:url" content="https://mzxbox.ru/RockDice/share.php?seed=<?php echo $encoded; ?>" />
<meta property="og:image" content="https://mzxbox.ru/RockDice/picture.php?drums=<?php echo $drums; ?>&prog=<?php echo urlencode($line); ?>&bass=<?php echo $bass; ?>&lead=<?php echo $lead; ?>&pad=<?php echo $pad; ?>" />

Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹ Π²Ρ‹Π»ΠΎΠΆΠ΅Π½Ρ‹ Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ хостинг ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ 200Ρ€ Π² мСсяц.

Android

Для создания мобильной вСрсии ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ WebView

https://developer.android.com/reference/android/webkit/WebView

По сути это ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Chrome встроСнный Π² Activity. Π’Π΅Π±-страницы ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ локально ΠΈΠ· рСсурсов прилоТСния, Ρ„ΠΎΠ°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΈ ΠΎΡ†ΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ инструмСнты Ρ‚Π°ΠΊ ΠΆΠ΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ локально.

По Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Ρƒ мобильная вСрсия Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Π²Π΅Π±-вСрсии. Π’ΠΎΡ‚ скомилированноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (Π½Π° Π΄Π°Π²Π½ΠΎ Π½Π΅ обновлялось):

https://play.google.com/store/apps/details?id=rockdice.chord.progression

android.png

Для WebView Π΅ΡΡ‚ΡŒ нСбольшиС ограничСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ слСдуСт ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ.

НапримСр доступ ΠΊ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмС для сохранСния ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΉ Π² MIDI- ΠΈ Wav-Ρ„Π°ΠΉΠ»Ρ‹. Π’ большом Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ достаточно ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ blob с Π΄Π²ΠΎΠΈΡ‡Π½Ρ‹ΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ MIME-Ρ‚ΠΈΠΏΠΎΠΌ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ссылку Π½Π° Π½Π΅Π³ΠΎ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

let blob: Blob = new Blob([dataview], { type: 'audio/wav' });
let ourl = URL.createObjectURL(blob);
let a = document.createElement("a");
document.body.appendChild(a);
a.href = ourl;
a.download = 'rockdice';
a.click();

Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ распознаСт Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π° ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ Π΄ΠΈΠ°Π»ΠΎΠ³ сохранСния с ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ.

Для встроСнного WebView придётся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ сохранСния срСдствами Android, Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π΅Ρ‘ Π² JavaScript прилоТСния Ρ‡Π΅Ρ€Π΅Π· addJavascriptInterface ΠΈ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ Π½Π΅ΠΉ ΠΈΠ· Π²Π΅Π±-страницы.

Π’Π°ΠΊ ΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ‡Ρ‚ΠΎΠ± ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ ссылки Π½Π° ΠΌΠ΅Π»ΠΎΠ΄ΠΈΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π»ΠΈΡΡŒ Π½Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°, Π° Π² мобильной вСрсии прилоТСния. Для этого Π² AndroidManifest.xml прилоТСния Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€:

<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <category android:name="android.intent.category.DEFAULT" />
    <category android:name="android.intent.category.BROWSABLE" />
    <data
        android:host="surikov.github.io"
        android:pathPrefix="/rockdice/main.html"
        android:scheme="https"
        />
</intent-filter>

МоТно ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ ΠΈ Π±Π΅Π· мобильной вСрсии Ρ‚.ΠΊ. Chrome Π² Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π°Ρ… Π½ΠΈΡ‡Π΅ΠΌ Π½Π΅ отличаСтся ΠΎΡ‚ Chrome Π½Π° дСсктопС.