stdtabs / phptabs
一个用于读取、写入和渲染Guitar Pro和MIDI文件的PHP库
Requires
- php: >=7.4
Requires (Dev)
README
PhpTabs是一个用于读取和写入乐谱和MIDI文件的PHP库。它提供了直接的方法来读取歌曲名称,获取乐器列表,或者满足你的任何需求。
PhpTabs当前支持以下文件格式
- Guitar Pro 3 (.gp3)
- Guitar Pro 4 (.gp4)
- Guitar Pro 5 (.gp5)
- MIDI (.mid, .midi)
有什么问题吗?
- 阅读PhpTabs 手册
- 在github上提出问题
- 贡献代码
- 在/docs中贡献文档
目录
以下文档仅包含基本示例。如果您想看到更多示例和库背后的完整API,请阅读PhpTabs 手册。
在版本1.0.0之前,旧的PhpTabs 手册
要求
PhpTabs需要PHP 7.4+和8.0+。
直到PhpTabs 1.0.5,它维护了PHP版本7.2和7.3。
直到PhpTabs 0.6.1,它维护了PHP版本7.0和7.1。
直到PhpTabs 0.6.0,它维护了PHP版本5.4、5.5、5.6和HHVM。
安装
Composer
composer require stdtabs/phptabs
替代方案
从https://github.com/stdtabs/phptabs/releases下载并解压存档
然后在使用前添加此PHP行
// Use standalone bootstrap require_once 'src/PhpTabs/bootstrap.php';
测试
要运行测试,您首先应该安装PHPUnit。
composer require phpunit/phpunit
然后使用以下命令运行测试套件
vendor/bin/phpunit
基本用法
require_once 'src/PhpTabs/bootstrap.php'; use PhpTabs\PhpTabs; // Instanciates a tablature $tablature = new PhpTabs("mytabs.gp3"); // Reads information echo $tablature->getName();
方法
访问元数据
getName()
类型 字符串
歌曲名称。
示例
$tablature->getName();
getArtist()
类型 字符串
歌曲的演绎者。
示例
$tablature->getArtist();
getAlbum()
类型 字符串
专辑名称。
示例
$tablature->getAlbum();
getAuthor()
类型 字符串
歌曲的作者。
示例
$tablature->getAuthor();
getCopyright()
类型 字符串
歌曲的版权。
示例
$tablature->getCopyright();
getWriter()
类型 字符串
作词者。
示例
$tablature->getWriter();
getComments()
类型 字符串
六线谱注释。它们由多行组成,每行之间用换行符(PHP_EOL
)分隔。
示例
$tablature->getComments();
getTranscriber()
类型 字符串
转录六线谱的人
支持
Guitar Pro >= 4
示例
$tablature->getTranscriber();
getDate()
类型 字符串
转录六线谱的日期
支持
Guitar Pro >= 4
示例
$tablature->getDate();
访问曲目
countTracks()
类型 整数
曲目数
示例
$tablature->countTracks();
getTracks()
类型 数组
Track对象的数组
每个乐器的歌曲都有一个track对象。
示例
$tablature->getTracks();
getTrack($index)
类型 对象
参数 整数 $index
乐谱的一个乐器。
示例
// Get the first track $tablature->getTrack(0);
访问通道
countChannels()
类型 整数
通道数量
示例
$tablature->countChannels();
getChannels()
类型 数组
通道对象数组
每首歌曲的每条轨道对应一个通道对象。
示例
$tablature->getChannels();
getChannel($index)
类型 对象
参数 整数 $index
一条轨道的乐器和声音参数。
示例
// Get the first channel $tablature->getChannel(0);
访问乐器
countInstruments()
类型 整数
乐器数量
示例
$tablature->countInstruments();
getInstruments()
类型 数组
乐器数组列表
array( 'id' => <integer InstrumentId>, 'name' => <string InstrumentName> )
示例
$tablature->getInstruments();
getInstrument($index)
类型 数组
参数 整数 $index
乐器数组
array( 'id' => <integer InstrumentId>, 'name' => <string InstrumentName> )
示例
// Get the first instrument $tablature->getInstrument(0);
访问小节标题
countMeasureHeaders()
类型 整数
小节标题数量
示例
$tablature->countMeasureHeaders();
getMeasureHeaders()
类型 数组
小节标题对象数组
示例
$tablature->getMeasureHeaders();
getMeasureHeader($index)
类型 对象
参数 整数 $index
小节标题包含关于小节的全局信息。
示例
// Get the first measure header $tablature->getMeasureHeader(0);
保存数据
save($filename)
类型 bool
参数 string $filename
此方法将数据以二进制形式记录到磁盘或缓冲区。如果指定的文件扩展名与原始文件不同,则隐式转换文件类型(请参见以下示例)。
以下参数是允许的
示例
// Instanciate a GP3 tab $tab = new PhpTabs('mytab.gp3'); // Save as GP3 $tab->save('newfile.gp3'); // Convert and save as GP5 $tab->save('newfile.gp5');
convert($type)
类型 字符串
参数 string $type
此方法将数据以二进制字符串形式返回到指定格式。
以下格式是允许的
示例
// Instanciate a GP3 tab $tab = new PhpTabs('mytab.gp3'); // Convert as GP3 echo $tab->convert('gp3'); // Convert as GP5 echo $tab->convert('gp5'); // Convert as MIDI echo $tab->convert('mid'); // Render as original format // Should be equal as file_get_contents('mytab.gp3') echo $tab->convert();
更多示例请参见PhpTabs 手册。