ΠΠ½Π½Π° ΠΠ½ΡΠΎΠ½Π΅Π½ΠΊΠΎ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠ°ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ Π²ΡΡΡΠ°ΠΈΠ²Π°Π΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌ ΠΈ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠ°Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ BOSS (BEAM-based Operating System with Security), ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π° ΠΌΡΠ·ΡΠΊΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ° Yamaha PSR-E433. Π Ρ ΠΎΠ΄Π΅ ΠΏΡΠΎΠ²Π΅Π΄ΡΠ½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π² ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ΅ Π±ΡΠ» Π²ΡΡΠ²Π»Π΅Π½ ΠΎΠ±ΡΡΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ shell-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ²ΡΠΈΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ. ΠΠΎΡΡΡΠΏ ΠΊ shell-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΡΠΏΡΠ°Π²ΠΊΠΈ MIDI-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ SysEx, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΡΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ° ΡΠ΅ΡΠ΅Π· ΠΏΠΎΡΡ USB. ΠΠΎΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π² Ρ ΠΎΠ΄Π΅ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π° ΡΠ²Π΅Π΄Π΅Π½ΠΈΡ ΠΎ ΡΠΈΠΏΠ΅ ΠΈ ΠΏΡΠΎΡΠΈΠ²ΠΊΠ°Ρ , Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π° ΠΈ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΡΠ΅ Π΄Π°ΠΌΠΏΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½Ρ Π½Π° GitHub.
ΠΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Ρ Π²ΠΎΠ·Π½ΠΈΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ Π½Π°Π·Π°Π΄, ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΠ½Π½Π° ΡΠ΅ΡΠΈΠ»Π° ΠΏΠΎΡΠΈΡΡΠΈΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ° ΠΎΡ ΠΏΡΠ»ΠΈ ΠΈ Π·Π°ΠΎΠ΄Π½ΠΎ ΡΠ΄ΠΎΠ²Π»Π΅ΡΠ²ΠΎΡΠΈΡΡ ΡΠ²ΠΎΡ Π»ΡΠ±ΠΎΠΏΡΡΡΡΠ²ΠΎ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠ΅ Ρ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π°ΡΠΈΠ½ΠΊΡ ΡΡΡΡΠΎΠΉΡΡΠ²Π°. ΠΠ° ΠΏΠ»Π°ΡΠ΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π» ΡΠΈΠΏ YAMAHA SWL01U, ΠΏΡΠΎ ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ΅ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ Π½Π°ΠΉΡΠΈ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ. ΠΠ°ΡΡ ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄ ΠΠ½Π½Π° Π½Π°ΡΠΎΠ»ΠΊΠ½ΡΠ»Π°ΡΡ Π½Π° ΡΡΠΊΠΎΠ²ΠΎΠ΄ΡΡΠ²ΠΎ ΠΏΠΎ ΠΏΠΎΡ ΠΎΠΆΠ΅ΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠ°, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π±ΡΠ»Π° ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π° ΡΠ°ΡΠΏΠΈΠ½ΠΎΠ²ΠΊΠ° ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΠ½Π½Π° Π²Π½ΠΎΠ²Ρ ΡΠ°Π·ΠΎΠ±ΡΠ°Π»Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ ΠΈ Π½Π°ΡΠ°Π»Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡ, Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π²ΡΠΈΡΡ ΠΈΠΌΠ΅Π²ΡΠΈΠΌΠΈΡΡ Π½Π° ΠΏΠ»Π°ΡΠ΅ Π²ΡΠ²ΠΎΠ΄Π°ΠΌΠΈ Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° JTAG ΠΈ ΠΏΠΎΡΡΠ° UART.
ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ° OpenOCD, ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ JTAG ΠΈ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΎΠ² Π±ΡΠ»ΠΎ Π²ΡΡΡΠ½Π΅Π½ΠΎ, ΡΡΠΎ Π½Π° ΠΏΠ»Π°ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΈΠΏ Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠΌ ΡΠ΄ΡΠΎΠΌ ARM7TDMI. ΠΠ·ΡΡΠΈΠ² ΡΠ°ΡΠΊΠ»Π°Π΄ΠΊΡ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΎΡΠ»Π°Π΄ΡΠΈΠΊΠ΅, ΡΠ΄Π°Π»ΠΎΡΡ Π²ΡΠ³ΡΡΠ·ΠΈΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ, ΡΠ°Π·ΠΌΠ΅ΡΡΠ½Π½ΡΡ Π² ΠΠΠ£ ΠΈ Flash-ΠΏΠ°ΠΌΡΡΠΈ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ°Π·Ρ ΠΏΡΠΎΡΠΈΠ²ΠΎΠΊ Π±ΡΠ»ΠΈ ΠΏΡΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Ρ Π² ΠΏΠ°ΠΊΠ΅ΡΠ΅ Π΄Π»Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΠΆΠΈΠ½ΠΈΡΠΈΠ½Π³Π° Ghidra.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΏΡΠΎΡΠΌΠΎΡΡΠ° Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΈΠ· ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π΄Π°Π½Π½ΡΡ Π±ΡΠ» Π·Π°ΠΌΠ΅ΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΡΡΡΠΎΠΊ (“help, “info”, “ver”, “logout” ΠΈ Ρ.ΠΏ.), Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠΉ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ. ΠΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π° ΡΡΠΈ ΡΡΡΠΎΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ Π½Π°ΠΉΡΠΈ ΠΊΠΎΠ΄, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄, Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°ΡΡΠΈΠΉ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Ρ ΠΎΠ΄Π° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΡ. Π’Π°ΠΊ ΠΆΠ΅ Π±ΡΠ»ΠΎ Π²ΡΡΠ²Π»Π΅Π½ΠΎ, ΡΡΠΎ Π΄Π»Ρ Π°ΠΊΡΠΈΠ²Π°ΡΠΈΠΈ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° “login”, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΡΠΎΠ»Ρ “#0000”. void shell_run_command(char* command_input) { if (shell_login_state == 0) { if (shell_compare_command(command_input, “login”) == 0) { shell_ask_passwd(); // prints “passwd? ” shell_login_state = 1; } } else if (shell_login_state == 1) { if (shell_compare_command(command_input, “#0000”) == 0) { shell_login_ok(); // prints “login OK” shell_login_state = 2; } else { shell_print(“Passwd Error\r”); shell_login_state = 0; } } else { // actually run the command } }
ΠΠ°Π»ΡΠ½Π΅ΠΉΡΠ΅Π΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΡΠΈΠ²ΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ, ΡΡΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ , Π²ΡΠ΅Π³Π΄Π° Π½Π°ΡΠΈΠ½Π°ΡΡΠΈΡ ΡΡ Ρ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ 8 Π±Π°ΠΉΡ Π΄Π°Π½Π½ΡΡ ΠΈ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΡ ΡΡ ΠΊΠΎΠ΄ΠΎΠΌ 0xf7. Π’Π°ΠΊ ΠΊΠ°ΠΊ Π²Π½Π΅ΡΠ½Π΅Π΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΡΠΈΠ½ΡΠ΅Π·Π°ΡΠΎΡΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅ΡΠ΅Π· MIDI, Π° Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ MIDI ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΉ ΡΠ»ΡΠΆΠ΅Π±Π½ΡΠΉ ΡΠΈΠΏ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ SysEx, Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΎ, ΡΡΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΊΠΎΠΌΠ°Π½Π΄. ΠΠΎΠ³Π°Π΄ΠΊΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΠΊΡΠ΅ΠΏΠ»ΡΠ»ΠΎ ΡΠΎ, ΡΡΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SysEx ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ, ΡΠ°Π·Π±ΠΈΡΠ°Π΅ΠΌΡΠ΅ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΎΠΉ, Π½Π°ΡΠΈΠ½Π°Π»ΠΈΡΡ Ρ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° 0xf0, Π·Π° ΠΊΠΎΡΠΎΡΡΠΌ ΡΠ»Π΅Π΄ΠΎΠ²Π°Π» ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ 0x43 (Yamaha).
ΠΠ»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π³ΠΈΠΏΠΎΡΠ΅Π·Ρ Π±ΡΠ» Π½Π°ΠΏΠΈΡΠ°Π½ Python-ΡΠΊΡΠΈΠΏΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΠ°Π½ΡΠ»ΠΈΡΠΎΠ²Π°Π» Π²Π²ΠΎΠ΄ΠΈΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΠΏΠ°ΠΊΠ΅ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° MIDI. Π ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°Π±ΠΎΡΠ°Π»: login passwd? #0000 login OK > help logout help ? info ver stack perf-on perf-off perf-disp d dp d xxxxx d/s xxxxx m ADDRESS DATA m/b ADDRESS DATA m/w ADDRESS DATA m/l ADDRESS DATA > info DevelopName PSR-E433 DevelopNumber #3341 Main DevelopNumber #3341 Make data & time MAY 16 2012 19:00:57 J/E Select English >
Π ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΏΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ “help”, ΡΡΠ΅Π΄ΠΈ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°Π»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ³ΠΎ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π·Π°Π³ΡΡΠ·ΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΊΠΎΠ΄ Π² ΠΏΠ°ΠΌΡΡΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π° Π½Π΅Π³ΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΠ² ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π² ΡΡΠ΅ΠΊΠ΅, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΉ Π΄Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ° ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ° Π² Π½Π΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ»ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΎ Π½Π°ΠΏΠΈΡΠ°Π½Π½ΠΎΠ΅ Π½Π° Π°ΡΡΠ΅ΠΌΠ±Π»Π΅ΡΠ΅ ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅Π΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΡΠ²ΠΎΠ΄ΡΡΠ΅Π΅ ΡΡΡΠΎΠΊΡ “HeloWrld” Π² 8-ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΠΉ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΎΡ ΠΠ-Π΄ΠΈΡΠΏΠ»Π΅Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π±ΡΠ»Π° ΠΎΡΠΎΡΠΌΠ»Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ MIDI-ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ Π½Π° ΡΡΡΡΠΎΠΉΡΡΠ²ΠΎ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π½Π°ΡΠ°Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΠ° ΠΏΠΎ ΠΈΠ·ΡΡΠ΅Π½ΠΈΡ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ Π²ΡΠ²ΠΎΠ΄Π° Π³ΡΠ°ΡΠΈΠΊΠΈ Π½Π° ΠΠ-Π΄ΠΈΡΠΏΠ»Π΅ΠΉ, ΠΊΡΠ»ΡΠΌΠΈΠ½Π°ΡΠΈΠ΅ΠΉ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠ°Π»Π° ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠ° ΠΊΠΎΠ΄Π°, Π²ΡΠ²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ Π² ΡΠΈΠΌΠ²ΠΎΠ»ΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ, ΡΠΈΠ½Ρ ΡΠΎΠ½Π½ΠΎ Ρ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ Π²ΠΈΠ΄Π΅ΠΎ Bad Apple Π½Π° Π²Π½Π΅ΡΠ½Π΅ΠΌ ΡΡΡΡΠΎΠΉΡΡΠ²Π΅ (Π²ΠΈΠ΄Π΅ΠΎ Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠ΅ΠΉ).
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru