xosofox/codesound

将东西变成音乐

1.1.1 2017-11-01 00:20 UTC

This package is auto-updated.

Last update: 2024-09-11 14:38:22 UTC


README

工作

Note对象添加到可以导入到波形文件的Sequence中。

需要 "sox" http://sox.sourceforge.net/

  使用sudo apt-get install soxbrew install sox

音符按如下方式索引

  • 0代表220 Hz的A音
  • 12代表440 Hz的A音
  • 24代表880 Hz的A音

示例

播放简单的A大调音阶

<?php 

$alleMeineEntchen = [0, 2, 4, 5, [7, 1 / 2], [7, 1 / 2], 9, 9, 9, 9, [7, 1 / 2], [null, 1 / 2], 9, 9, 9, 9, [7, 1 / 2]];
$sequence = Sequence::fromTuples($alleMeineEntchen);
$player = new Player($sequence);
$dumper = new SoundDumper();
$dumper->dump($player, __DIR__.'/lala.ul', __DIR__.'/lala.wav');

工作原理

数字被转换为Note对象。它们在音阶上的音符索引。它们还有长度,以四分音符、二分音符等给出(实际声音长度由播放器的BPM决定,见下文)

Note对象被添加到一个包含所有音符的Sequence中。

Sequence可以在Player中使用,其中可以调整速度和基本频率(默认220 Hz)。有了这些信息,NotesSequence可以转换成Tone对象的列表。一个Tone对象有一个实际长度(毫秒)和一个频率(赫兹)。

Dumper可以将Tone对象的列表转换成实际的媒体文件。sox在这里被使用。

Process overview

使用转换器将数字输入转换为“音乐”

Converter的任务是将给定的数字输入(文件大小、散列、代码行数等)转换为音符。通过传递一些选项(待定,如何将文件大小映射到长度等),它将创建可以添加到序列中的Note实例。

待办事项

递归遍历目录并查看文件。

每个文件确定要播放的声音。

文件大小确定声音的长度。

文件散列(md5)确定音调。

为了听起来“和谐”,散列不会直接转换为频率。

它转换为A大调音阶上的一个音符。