stdtabs/phptabs

一个用于读取、写入和渲染Guitar Pro和MIDI文件的PHP库

资助包维护!
landrok
Ko Fi

1.1.0 2023-12-21 12:51 UTC

This package is auto-updated.

Last update: 2024-09-21 14:34:43 UTC


README

Latest Stable Version Build Status License

PhpTabs是一个用于读取和写入乐谱和MIDI文件的PHP库。它提供了直接的方法来读取歌曲名称,获取乐器列表,或者满足你的任何需求。

PhpTabs当前支持以下文件格式

  • Guitar Pro 3 (.gp3)
  • Guitar Pro 4 (.gp4)
  • Guitar Pro 5 (.gp5)
  • MIDI (.mid, .midi)

有什么问题吗?

目录

以下文档仅包含基本示例。如果您想看到更多示例和库背后的完整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 手册