Хабы: Программирование, Rust, Звук
Если вы когда-нибудь пробовали учиться гитаре, то есть вероятность, что вы знакомы с гитарными табулатурами.
Это простой способ визуализации музыки для гитары, альтернативный нотам, при котором символами ASCII обозначаются струны и лады.
Например, вот первые четыре такта песни Smoke on the Water группы Deep Purple:
e|-----------------|-----------------|-----------------|-----------------|
B|-----------------|-----------------|-----------------|-----------------|
G|-----3---5-------|---3---6-5-------|-----3---5-----3-|-----------------|
D|-5---3---5-----5-|---3---6-5-------|-5---3---5-----3-|---5-------------|
A|-5-------------5-|-----------------|-5---------------|---5-------------|
E|-----------------|-----------------|-----------------|-----------------| <- верх
Эту песню играют в стандартном строе (EADGBe), обозначенном буквами слева, указывающими строй каждой струны. Цифры же означают, куда нужно ставить пальцы на грифе.
Кроме текстового описания стандартом де-факто стал формат, используемый в ПО
Guitar Pro для рендеринга и синтезирования звука табулатуры.
Такие двоичные файлы в зависимости от версии ПО имеют расширение
.gp3
,
.gp4
,
.gp5
или
.gp6
, их легко можно найти в Интернете на таких веб-сайтах, как
Ultimate Guitar.
Хотя ПО для воспроизведения табулатур проприетарно, некоторые версии формата файлов хорошо задокументированы, и даже существуют опенсорсные проекты, способные их считывать.
Вероятно, лучший опенсорсный плейер табулатур — это
TuxGuitar, у него очень много функций, это потрясающий инструмент для обучения гитаре.
Так как
TuxGuitar
уже не поддерживается и написан на Java, я решил, что будет интересно написать собственный плейер табулатур на Rust.
Читать дальше →