Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

ΠŸΡ€Π΅Π΄Ρ‹ΡΡ‚ΠΎΡ€ΠΈΡ

Π‘ΡƒΠ΄ΡƒΡ‡ΠΈ Π»ΡŽΠ±ΠΈΡ‚Π΅Π»Π΅ΠΌ Ρ€Π΅Ρ‚Ρ€ΠΎ ΠΆΠ΅Π»Π΅Π·Π°, ΠΏΡ€ΠΈΠΎΠ±Ρ€Ρ‘Π» я ΠΊΠ°ΠΊ-Ρ‚ΠΎ Ρƒ ΠΏΡ€ΠΎΠ΄Π°Π²Ρ†Π° ΠΈΠ· Π’Π΅Π»ΠΈΠΊΠΎΠ±Ρ€ΠΈΡ‚Π°Π½ΠΈΠΈ ZX Spectrum+. Π’ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚Π΅ с самим ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ΠΌΠ½Π΅ Π΄ΠΎΡΡ‚Π°Π»ΠΈΡΡŒ нСсколько аудиокассСт с ΠΈΠ³Ρ€Π°ΠΌΠΈ (Π² ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ΅ с инструкциями), Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌΠΈ, записанными Π½Π° кассСты Π±Π΅Π· особых ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ. На ΡƒΠ΄ΠΈΠ²Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ с кассСт 40-Π»Π΅Ρ‚Π½Π΅ΠΉ давности Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ‡ΠΈΡ‚Π°Π»ΠΈΡΡŒ ΠΈ ΠΌΠ½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всС ΠΈΠ³Ρ€Ρ‹ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π½ΠΈΡ….

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

Однако, Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… кассСтах я ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ» записи, сдСланныС явно Π½Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ ZX Spectrum. Π—Π²ΡƒΡ‡Π°Π»ΠΈ ΠΎΠ½ΠΈ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΈ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ записСй с упомянутого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°, Π½Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π»ΠΈΡΡŒ с ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ BASIC Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ присутствуСт Π² записях всСх ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΈΠ³Ρ€.

КакоС-Ρ‚ΠΎ врСмя ΠΌΠ½Π΅ Π½Π΅ Π΄Π°Π²Π°Π»ΠΎ это покоя β€” ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ скрыто Π² Π½ΠΈΡ…. Если Π±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°ΡƒΠ΄ΠΈΠΎ сигнал ΠΊΠ°ΠΊ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Π°ΠΉΡ‚ΠΎΠ², ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π½ΠΈΡ… символы ΠΈΠ»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° происхоТдСниС сигнала. Π‘Π²ΠΎΠ΅Π³ΠΎ Ρ€ΠΎΠ΄Π° Ρ€Π΅Ρ‚Ρ€ΠΎ-архСология.

БСйчас, ΠΊΠΎΠ³Π΄Π° я ΠΏΡ€ΠΎΡˆΡ‘Π» вСсь ΠΏΡƒΡ‚ΡŒ ΠΈ ΡΠΌΠΎΡ‚Ρ€ΡŽ Π½Π° этикСтки самих кассСт, я ΡƒΠ»Ρ‹Π±Π°ΡŽΡΡŒ, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ

ΠΎΡ‚Π²Π΅Ρ‚ Π±Ρ‹Π» прямо ΠΏΠ΅Ρ€Π΅Π΄ Π³Π»Π°Π·Π°ΠΌΠΈ всё это врСмя
На этикСткС Π»Π΅Π²ΠΎΠΉ кассСты β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° TRS-80, ΠΈ Ρ‡ΡƒΡ‚ΡŒ Π½ΠΈΠΆΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ производитСля: Β«Manufactured by Radio Shack in USAΒ»

(Если Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Ρ€ΠΈΠ³Ρƒ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π½Π΅ Π·Π°Ρ…ΠΎΠ΄ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ спойлСр)

Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π°ΡƒΠ΄ΠΈΠΎ сигналов

ΠŸΠ΅Ρ€Π²Ρ‹ΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΎΡ†ΠΈΡ„Ρ€ΡƒΠ΅ΠΌ аудиозаписи. МоТно ΠΏΠΎΡΠ»ΡƒΡˆΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ это Π·Π²ΡƒΡ‡ΠΈΡ‚:


И ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π·Π²ΡƒΡ‡ΠΈΡ‚ запись с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ZX Spectrum:


Π’ ΠΎΠ±ΠΎΠΈΡ… случаях Π² Π½Π°Ρ‡Π°Π»Π΅ записи присутствуСт Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½ β€” Π·Π²ΡƒΠΊ ΠΎΠ΄Π½ΠΎΠΉ частоты (Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΉ записи ΠΎΠ½ ΠΎΡ‡Π΅Π½ΡŒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΉ <1 сСк, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΌ). ΠŸΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½ слуТит сигналом ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ распознаСт Ρ‚ΠΎΠ»ΡŒΠΊΠΎ «свой» ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΠ΅ сигнала ΠΈ Π΅Π³ΠΎ частотС.

Надо ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ самой Ρ„ΠΎΡ€ΠΌΠ΅ сигнала. НапримСр, Π½Π° ZX Spectrum Π΅Π³ΠΎ Ρ„ΠΎΡ€ΠΌΠ° ΠΏΡ€ΡΠΌΠΎΡƒΠ³ΠΎΠ»ΡŒΠ½Π°Ρ:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΈΠ»ΠΎΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ½Π° ZX Spectrum ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ΡΡ красно-Π³ΠΎΠ»ΡƒΠ±Ρ‹Π΅ полоски Π½Π° Π±ΠΎΡ€Π΄ΡŽΡ€Π½ΠΎΠΉ части экрана, показывая, Ρ‡Ρ‚ΠΎ сигнал распознан. ΠŸΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½ заканчиваСтся синхро-ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сигнализируСт ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ слСдуСт Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅. Он характСризуСтся мСньшСй (ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΌ Ρ‚ΠΎΠ½ΠΎΠΌ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ) Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ (см. рисунок)

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ синхро-ΠΈΠΌΠΏΡƒΠ»ΡŒΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ фиксируСт ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΠ΄ΡŠΡ‘ΠΌ/спуск сигнала, измСряя Π΅Π³ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ. Если Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ мСньшС ΠΎΠΏΡ€Π΅Π΄Ρ‘Π»Π΅Π½Π½ΠΎΠΉ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹, Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ записываСтся Π±ΠΈΡ‚ 1, ΠΈΠ½Π°Ρ‡Π΅ 0. Π‘ΠΈΡ‚Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² Π±Π°ΠΉΡ‚Ρ‹ ΠΈ процСсс повторяСтся Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ N Π±Π°ΠΉΡ‚. Число N, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, бСрётся ΠΈΠ· Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΠΎΠ³ΠΎ Ρ„Π°ΠΉΠ»Π°. ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ:

  1. ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½
  2. Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (фиксированной Π΄Π»ΠΈΠ½Ρ‹), содСрТит Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅ΠΌΡ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (N), имя ΠΈ Ρ‚ΠΈΠΏ Ρ„Π°ΠΉΠ»Π°
  3. ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½
  4. сами Π΄Π°Π½Π½Ρ‹Π΅

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ΄ΠΎΡΡ‚ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Ρ‹ Π²Π΅Ρ€Π½ΠΎ, ZX Spectrum послСдним Π±Π°ΠΉΡ‚ΠΎΠΌ Ρ‡ΠΈΡ‚Π°Π΅Ρ‚ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ Π±Π°ΠΉΡ‚ чётности (parity byte), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ вычисляСтся ΠΏΡ€ΠΈ сохранСнии Ρ„Π°ΠΉΠ»Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠ΅ΠΉ XOR Π½Π°Π΄ всСми Π±Π°ΠΉΡ‚Π°ΠΌΠΈ записанных Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ вычисляСт Π±Π°ΠΉΡ‚ чётности ΠΈΠ· ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ, Ссли Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ отличаСтся ΠΎΡ‚ сохранённого, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ сообщСниС ΠΎΠ± ошибкС Β«R Tape loading errorΒ». Π‘Ρ‚Ρ€ΠΎΠ³ΠΎ говоря, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π΄Π°Ρ‚ΡŒ это сообщСниС ΠΈ Ρ€Π°Π½ΡŒΡˆΠ΅, Ссли ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ (ΠΏΡ€ΠΎΠΏΡƒΡ‰Π΅Π½ ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅ соотвСтствуСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ Π³Ρ€Π°Π½ΠΈΡ†Π°ΠΌ)

Π˜Ρ‚Π°ΠΊ, посмотрим Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠ°ΠΊ выглядит нСизвСстный сигнал:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

Π­Ρ‚ΠΎ ΠΏΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½. Π€ΠΎΡ€ΠΌΠ° сигнала Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ отличаСтся, Π½ΠΎ Π²ΠΈΠ΄Π½ΠΎ Ρ‡Ρ‚ΠΎ сигнал состоит ΠΈΠ· ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΡ… ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ частоты. ΠŸΡ€ΠΈ частотС дискрСтизации 44100 Π“Ρ†, расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Β«ΠΏΠΈΠΊΠ°ΠΌΠΈΒ» ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ€Π°Π²Π½ΠΎ 48 сэмплов (Ρ‡Ρ‚ΠΎ соотвСтствуСт частотС ~918 Π“Ρ†) Π—Π°ΠΏΠΎΠΌΠ½ΠΈΠΌ эту Ρ†ΠΈΡ„Ρ€Ρƒ.

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π° Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

Если ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ, окаТСтся, Ρ‡Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Β«Π΄Π»ΠΈΠ½Π½Ρ‹ΠΌΠΈΒ» ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ расстояниС ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ Π² ~48 сэмплов, Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΈΠΌΠΈ β€” ~24. НСмного забСгая Π²ΠΏΠ΅Ρ€Ρ‘Π΄, скаТу, Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Β«ΠΎΠΏΠΎΡ€Π½Ρ‹Π΅Β» ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹ с частотой 918 Π“Ρ† ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ, ΠΎΡ‚ Π½Π°Ρ‡Π°Π»Π° ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ„Π°ΠΉΠ»Π°. МоТно ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ встрСчаСтся Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ, считаСм Π΅Π³ΠΎ Π·Π° Π±ΠΈΡ‚ 1, ΠΈΠ½Π°Ρ‡Π΅ 0.

Π§Ρ‚ΠΎ с синхро-ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠΎΠΌ? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

ΠŸΠΈΠ»ΠΎΡ‚Π½Ρ‹ΠΉ Ρ‚ΠΎΠ½ заканчиваСтся ΠΈ сразу Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅. Π§ΡƒΡ‚ΡŒ ΠΏΠΎΠ·ΠΆΠ΅, ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π² нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π°ΡƒΠ΄ΠΈΠΎ записСй, ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π±Π°ΠΉΡ‚ Π΄Π°Π½Π½Ρ‹Ρ… всСгда ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ (10100101b, A5h). Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, послС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π΅Π³ΠΎ.

МоТно Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° сдвиг ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° сразу послС послСднСй 1-Ρ†Ρ‹ Π² синхробайтС. Π•Π³ΠΎ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ·ΠΆΠ΅ Π² процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для распознавания Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΠ³Π΄Π° Π΄Π°Π½Π½Ρ‹Π΅ Π² Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π°ΡƒΠ΄ΠΈΠΎ Ρ„Π°ΠΉΠ» ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅.

Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ…

Π‘ΠΏΠ΅Ρ€Π²Π° рассмотрим нСсколько Π΄ΠΎΠΏΡƒΡ‰Π΅Π½ΠΈΠΉ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΡƒΡΠ»ΠΎΠΆΠ½ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

  1. Π‘ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ WAV;
  2. Аудиофайл Π΄ΠΎΠ»ΠΆΠ΅Π½ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒΡΡ с ΠΏΠΈΠ»ΠΎΡ‚Π½ΠΎΠ³ΠΎ Ρ‚ΠΎΠ½Π° ΠΈ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚ΠΈΡˆΠΈΠ½Ρƒ Π² Π½Π°Ρ‡Π°Π»Π΅
  3. Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ частоту дискрСтизации 44100 Π“Ρ†. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ Π² 48 сэмплов ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈ Π½Π°ΠΌ Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π΅Π³ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ;
  4. Π€ΠΎΡ€ΠΌΠ°Ρ‚ сэмплов ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ любой (8/16 Π±ΠΈΡ‚/с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ) β€” Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π½ΡƒΠΆΠ½Ρ‹ΠΉ;
  5. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ исходный Ρ„Π°ΠΉΠ» Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΏΠΎ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Π΅, Ρ‡Ρ‚ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΡ‚Π°Π±ΠΈΠ»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚;

Алгоритм чтСния Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ:

  1. Π§ΠΈΡ‚Π°Π΅ΠΌ Ρ„Π°ΠΉΠ» Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ сэмплов Π² 8 Π±ΠΈΡ‚;
  2. ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° Π² Π°ΡƒΠ΄ΠΈΠΎΠ΄Π°Π½Π½Ρ‹Ρ…. Для этого Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π½ΠΎΠΌΠ΅Ρ€ сэмпла с максимальной Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄ΠΎΠΉ. Для простоты посчитаСм Π΅Π³ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ. Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΠΌ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ prev_pos;
  3. ΠŸΡ€ΠΈΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΊ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ послСднСго ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° 48 (pos := prev_pos + 48)
  4. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ Π½Π° 48 Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠΏΠ°Π΄Ρ‘ΠΌ Π² ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΎΠΏΠΎΡ€Π½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° (Π΄Π΅Ρ„Π΅ΠΊΡ‚Ρ‹ Π»Π΅Π½Ρ‚Ρ‹, Π½Π΅ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Π°Ρ Ρ€Π°Π±ΠΎΡ‚Π° лСнтопротяТного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅), Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° pos. Для этого возьмСм нСбольшой ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Π΄Π°Π½Π½Ρ‹Ρ… (pos-8;pos+8) ΠΈ Π½Π°ΠΉΠ΄Π΅ΠΌ Π½Π° Π½Ρ‘ΠΌ максимум значСния Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹. ΠŸΠΎΠ·ΠΈΡ†ΠΈΡŽ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ максимуму, сохраним Π² pos. Π—Π΄Π΅ΡΡŒ 8 = 48/6 β€” ΡΠΊΡΠΏΠ΅Ρ€ΠΈΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎ получСнная константа, которая Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Π²Π΅Ρ€Π½Ρ‹ΠΉ максимум ΠΈ Π½Π΅ Π·Π°Ρ‚Ρ€ΠΎΠ½Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ΄Ρ‚ΠΈ рядом. Π’ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠ»ΠΎΡ…ΠΈΡ… случаях, ΠΊΠΎΠ³Π΄Π° расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ сильно мСньшС ΠΈΠ»ΠΈ большС 48, ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ поиск ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°, Π½ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡΡ‚Π°Ρ‚ΡŒΠΈ я Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ это Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅;
  5. На ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ шагС Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ссли просто ΠΈΡΠΊΠ°Ρ‚ΡŒ максимум, это Π½Π΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ присутствуСт. Π’ своСй послСднСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ чтСния я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽ Ρ€Π°Π·Π½ΠΈΡ†Ρƒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹ Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅, ΠΈ Ссли ΠΎΠ½Π° ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π³Ρ€Π°Π½ΠΈΡ†Ρƒ, Π·Π°ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°. Вопрос Ρ‚Π°ΠΊΠΆΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ссли ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΉ ΠΈΠΌΠΏΡƒΠ»ΡŒΡ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π’ΡƒΡ‚ 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ ΠΈ Π΄Π°Π»Π΅Π΅ слСдуСт Ρ‚ΠΈΡˆΠΈΠ½Π°, Π»ΠΈΠ±ΠΎ это слСдуСт Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΎΡˆΠΈΠ±ΠΊΡƒ чтСния. Однако опустим это для упрощСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°;
  6. На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ шагС Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° Π΄Π°Π½Π½Ρ‹Ρ… (Π±ΠΈΡ‚ 0 ΠΈΠ»ΠΈ 1), для этого возьмСм сСрСдину ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° (prev_pos;pos) middle_pos Ρ€Π°Π²Π½ΡƒΡŽ middle_pos := (prev_pos+pos)/2 ΠΈ Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ окрСстности middle_pos Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ (middle_pos-8;middle_pos+8) посчитаСм максимум ΠΈ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π°ΠΌΠΏΠ»ΠΈΡ‚ΡƒΠ΄Ρ‹. Если Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ большС 10, записываСм Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΠΈΡ‚ 1 ΠΈΠ½Π°Ρ‡Π΅ 0. 10 β€” константа получСнная ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ ΠΏΡƒΡ‚Ρ‘ΠΌ;
  7. БохраняСм Ρ‚Π΅ΠΊΡƒΡ‰ΡƒΡŽ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ Π² prev_pos (prev_pos := pos)
  8. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΡΠ΅ΠΌ начиная с шага 3, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌ вСсь Ρ„Π°ΠΉΠ»;
  9. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΡ‚ΠΎΠ²Ρ‹ΠΉ массив Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ Π½Π°Π±ΠΎΡ€ Π±Π°ΠΉΡ‚. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ Π½Π΅ ΡƒΡ‡Π»ΠΈ синхро-Π±Π°ΠΉΡ‚ ΠΏΡ€ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠΈ, количСство Π±ΠΈΡ‚ΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π½Π΅ ΠΊΡ€Π°Ρ‚Π½ΠΎ 8, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСизвСстно Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ смСщСниС Π² Π±ΠΈΡ‚Π°Ρ…. Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° я Π½Π΅ Π·Π½Π°Π» ΠΎ сущСствовании синхро-Π±Π°ΠΉΡ‚Π° ΠΈ ΠΏΠΎΡ‚ΠΎΠΌΡƒ просто сохранял 8 Ρ„Π°ΠΉΠ»ΠΎΠ² с Ρ€Π°Π·Π½Ρ‹ΠΌ количСством Π±ΠΈΡ‚ смСщСния. Один ΠΈΠ· Π½ΠΈΡ… содСрТал ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. Π’ Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ я просто ΡƒΠ΄Π°Π»ΡΡŽ всС Π±ΠΈΡ‚Ρ‹ Π΄ΠΎ A5h, Ρ‡Ρ‚ΠΎ позволяСт сразу ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅

Алгоритм Π½Π° Ruby, ΠΊΠΎΠΌΡƒ интСрСсно
Π’ качСствС языка для написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ я Π²Ρ‹Π±Ρ€Π°Π» Ruby, Ρ‚.ΠΊ. Π±ΠžΠ»ΡŒΡˆΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΡƒΡŽ Π½Π° Π½Ρ‘ΠΌ. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Π½Π΅ Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π·Π°Π΄Π°Ρ‡Π° ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ чтСния максимально быстрой Π½Π΅ стоит.

# Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ gem 'wavefile'
require 'wavefile'

reader = WaveFile::Reader.new('input.wav')
samples = []
format = WaveFile::Format.new(:mono, :pcm_8, 44100)

# Π§ΠΈΡ‚Π°Π΅ΠΌ WAV Ρ„Π°ΠΉΠ», ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Mono, 8 bit 
# Массив samples Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π±Π°ΠΉΡ‚ со значСниями 0-255
reader.each_buffer(10000) do |buffer|
  samples += buffer.convert(format).samples
end

# ΠŸΠΎΠ·ΠΈΡ†ΠΈΡ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° (вмСсто 0)
prev_pos = 0
# РасстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ
distance = 48
# Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ расстояния для окрСстности поиска локального максимума
delta = (distance / 6).floor
# Π‘ΠΈΡ‚Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ строки ΠΈΠ· "0" ΠΈ "1"
bits = ""

loop do
  # РассчитываСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°
  pos = prev_pos + distance
  
  # Π’Ρ‹Ρ…ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ†ΠΈΠΊΠ»Π° Ссли Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈΡΡŒ 
  break if pos + delta >= samples.size

  # ΠšΠΎΡ€Ρ€Π΅ΠΊΡ‚ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ pos ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ΠΌ максимума Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ [pos - delta;pos + delta]
  (pos - delta..pos + delta).each { |p| pos = p if samples[p] > samples[pos] }

  # Находим сСрСдину ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ° [prev_pos;pos]
  middle_pos = ((prev_pos + pos) / 2).floor

  # Π‘Π΅Ρ€Π΅ΠΌ ΠΎΠΊΡ€Π΅ΡΡ‚Π½ΠΎΡΡ‚ΡŒ Π² сСрСдинС 
  sample = samples[middle_pos - delta..middle_pos + delta]

  # ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Π±ΠΈΡ‚ ΠΊΠ°ΠΊ "1" Ссли Ρ€Π°Π·Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ 10
  bit = sample.max - sample.min > 10
  bits += bit ? "1" : "0"
end

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ синхро-Π±Π°ΠΉΡ‚ ΠΈ замСняСм всС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π±ΠΈΡ‚Ρ‹ Π½Π° 256 Π±ΠΈΡ‚ Π½ΡƒΠ»Π΅ΠΉ (согласно спСцификации Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π°) 
bits.gsub! /^[01]*?10100101/, ("0" * 256) + "10100101"

# БохраняСм Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ Ρ„Π°ΠΉΠ», упаковывая Π±ΠΈΡ‚Ρ‹ Π² Π±Π°ΠΉΡ‚Ρ‹
File.write "output.cas", [bits].pack("B*")

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚

ΠŸΠ΅Ρ€Π΅ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Π² нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ констант, ΠΌΠ½Π΅ ΠΏΠΎΠ²Π΅Π·Π»ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ стСпСни интСрСсноС:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

Π˜Ρ‚Π°ΠΊ, судя ΠΏΠΎ ΡΠΈΠΌΠ²ΠΎΠ»ΡŒΠ½Ρ‹ΠΌ строкам, ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для построСния Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ². Однако Π² тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова. ВсС ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Π²ΠΈΠ΄Π΅ Π±Π°ΠΉΡ‚ΠΎΠ² (Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ > 80h). Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠ· 80-Ρ… ΠΌΠΎΠ³ ΡΠΎΡ…Ρ€Π°Π½ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ‚Π°ΠΊΠΎΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅.

На самом Π΄Π΅Π»Π΅ это ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π½Π° языкС BASIC. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π² Ρ‚Π°ΠΊΠΎΠΌ ΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ZX Spectrum Ρ…Ρ€Π°Π½ΠΈΡ‚ Π² памяти ΠΈ сохраняСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π»Π΅Π½Ρ‚Ρƒ. На всякий случай я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова Π½Π° соотвСтствиС с Ρ‚Π°Π±Π»ΠΈΡ†Π΅ΠΉ. Однако Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, оказался ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ.

Π’Π°ΠΊΠΆΠ΅ я ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΠ» ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова BASIC популярных Π² Ρ‚ΠΎ врСмя ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Atari, Commodore 64 ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ…, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π±Π΅Π·ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ β€” ΠΌΠΎΠΈ познания Π² разновидностях Ρ€Π΅Ρ‚Ρ€ΠΎ-ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² оказались Π½Π΅ ΡΡ‚ΠΎΠ»ΡŒ ΡˆΠΈΡ€ΠΎΠΊΠΈ.

Π’ΠΎΠ³Π΄Π° я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠΉΡ‚ΠΈ ΠΏΠΎ списку, ΠΈ Ρ‚ΡƒΡ‚ ΠΌΠΎΠΉ взгляд ΡƒΠΏΠ°Π» Π½Π° Π½Π°Π·Π²Π°Π½ΠΈΠ΅ производитСля Radio Shack ΠΈ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° TRS-80. ИмСнно эти названия Π±Ρ‹Π»ΠΈ написаны Π½Π° этикСтках кассСт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π»Π΅ΠΆΠ°Π»ΠΈ Ρƒ мСня Π½Π° столС! Π― вСдь Π½Π΅ Π·Π½Π°Π» Ρ€Π°Π½Π΅Π΅ эти названия ΠΈ Π½Π΅ Π±Ρ‹Π» Π·Π½Π°ΠΊΠΎΠΌ с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ TRS-80, поэтому ΠΌΠ½Π΅ казалось, Ρ‡Ρ‚ΠΎ Radio Shack это ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ аудиокассСт, Ρ‚Π°ΠΊΠΎΠΉ ΠΊaΠΊ BASF, Sony ΠΈΠ»ΠΈ TDK, a TRS-80 β€” Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ воспроизвСдСния. ΠŸΠΎΡ‡Π΅ΠΌΡƒ Π½Π΅Ρ‚?

ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Tandy/Radio Shack TRS-80

ΠžΡ‡Π΅Π½ΡŒ вСроятно, Ρ‡Ρ‚ΠΎ рассматриваСмая Π°ΡƒΠ΄ΠΈΠΎΠ·Π°ΠΏΠΈΡΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ я ΠΏΡ€ΠΈΠ²Ρ‘Π» Π² качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² Π½Π°Ρ‡Π°Π»Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ, сдСлана Π½Π° Ρ‚Π°ΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅:

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

Оказалось, Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈ Π΅Π³ΠΎ разновидности (Model I/Model III/Model IV ΠΈ Ρ‚.Π΄.) Π±Ρ‹Π»ΠΈ ΠΎΡ‡Π΅Π½ΡŒ популярны Π² своС врСмя (ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π² России). ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ процСссор, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π² Π½ΠΈΡ… использовался β€” Ρ‚ΠΎΠΆΠ΅ Z80. По Π΄Π°Π½Π½ΠΎΠΌΡƒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ 80-Ρ… Π³ΠΎΠ΄Π°Ρ… информация ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅ Ρ€Π°ΡΠΏΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΠ»Π°ΡΡŒ Π² ΠΆΡƒΡ€Π½Π°Π»Π°Ρ…. На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ сущСствуСт нСсколько эмуляторов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎΠ΄ Ρ€Π°Π·Π½Ρ‹Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹.

Π― Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» эмулятор trs80gp ΠΈ ΠΌΠ½Π΅ Π²ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π» этот ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€. ΠšΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π» Π²Ρ‹Π²ΠΎΠ΄ Ρ†Π²Π΅Ρ‚Π°, Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана всСго 128Ρ…48 Ρ‚ΠΎΡ‡Π΅ΠΊ, Π½ΠΎ сущСствовало мноТСство Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³Π»ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ экрана. Π’Π°ΠΊΠΆΠ΅ сущСствовало мноТСство Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… систСм для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка BASIC (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ZX Spectrum, Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… модСлях Π΄Π°ΠΆΠ΅ Π½Π΅ Π±Ρ‹Π» Β«ΠΏΡ€ΠΎΡˆΠΈΡ‚Β» Π² ΠŸΠ—Π£ ΠΈ любой Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΌΠΎΠ³ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒΡΡ с дискСты, Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ ΠΈ сама ОБ)

Π’Π°ΠΊΠΆΠ΅ я Π½Π°ΡˆΡ‘Π» ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ для конвСртирования аудиозаписСй Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ CAS, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… поддСрТиваСтся эмуляторами, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ с ΠΈΡ… ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ записи с ΠΌΠΎΠΈΡ… кассСт ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°ΠΌ Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ.

Π Π°Π·ΠΎΠ±Ρ€Π°Π²ΡˆΠΈΡΡŒ с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π° CAS (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ оказался просто ΠΏΠΎΠ±ΠΈΡ‚ΠΎΠ²ΠΎΠΉ ΠΊΠΎΠΏΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ… с Π»Π΅Π½Ρ‚Ρ‹, которая Ρƒ мСня ΡƒΠΆΠ΅ имСлась Π½Π° Ρ€ΡƒΠΊΠ°Ρ…, Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ° с Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ΠΌ синхро-Π±Π°ΠΉΡ‚Π°), я внСс нСсколько ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ смог ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ CAS Ρ„Π°ΠΉΠ», ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ€Π°Π±ΠΎΡ‚Π°Π» Π² эмуляторС (TRS-80 Model III):

Как я восстанавливал Π΄Π°Π½Π½Ρ‹Π΅ Π² нСизвСстном Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ с ΠΌΠ°Π³Π½ΠΈΡ‚Π½ΠΎΠΉ Π»Π΅Π½Ρ‚Ρ‹

ПослСдний Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ с автоматичСским ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ° ΠΈ расстояниСм ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠΎΡ€Π½Ρ‹ΠΌΠΈ ΠΈΠΌΠΏΡƒΠ»ΡŒΡΠ°ΠΌΠΈ я ΠΎΡ„ΠΎΡ€ΠΌΠΈΠ» Π² Π²ΠΈΠ΄Π΅ GEM ΠΏΠ°ΠΊΠ΅Ρ‚Π°, исходный ΠΊΠΎΠ΄ доступСн Π½Π° Github.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠŸΡ€ΠΎΠΉΠ΄Π΅Π½Π½Ρ‹ΠΉ ΠΏΡƒΡ‚ΡŒ оказался ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡƒΡ‚Π΅ΡˆΠ΅ΡΡ‚Π²ΠΈΠ΅ΠΌ Π² ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ΅, ΠΈ я Ρ€Π°Π΄ Ρ‡Ρ‚ΠΎ Π² ΠΈΡ‚ΠΎΠ³Π΅ Π½Π°ΡˆΡ‘Π» Ρ€Π°Π·Π³Π°Π΄ΠΊΡƒ. Помимо ΠΏΡ€ΠΎΡ‡Π΅Π³ΠΎ я:

  • Разобрался с Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ сохранСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ZX Spectrum ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠ» встроСнныС Π² ΠŸΠ—Π£ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ сохранСния/чтСния Π΄Π°Π½Π½Ρ‹Ρ… с аудиокассСт
  • Познакомился с ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠΌ TRS-80 ΠΈ Π΅Π³ΠΎ разновидностями, ΠΈΠ·ΡƒΡ‡ΠΈΠ» ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму, посмотрСл ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Π°ΠΆΠ΅ ΠΈΠΌΠ΅Π» Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π½ΡΡ‚ΡŒΡΡ ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ Π² ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Ρ… ΠΊΠΎΠ΄Π°Ρ… (всё-Ρ‚Π°ΠΊΠΈ всС ΠΌΠ½Π΅ΠΌΠΎΠ½ΠΈΠΊΠΈ Z80 ΠΌΠ½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ‹)
  • Написал ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΡƒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ для конвСртирования Π°ΡƒΠ΄ΠΈΠΎ записСй Π² CAS Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, которая ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, нСраспознаваСмыС Β«ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉΒ» ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ