Я медленно работал над этим монстром Франкенштейна онлайн-пианино. Вот что у меня есть: http://www.skyetheguy.com/puerlingpianoexposed.html
Я пытаюсь сделать пианино на HTML5, которое отвечало бы так же, как пианино на основе Unity от Recursivearts, добавив при этом функцию записи того, кем вы былииспользуя MIDI, для последующего использования в DAW по вашему выбору.
В тот момент, когда вы нажимаете кнопку «Запись», он создает строки текста, которые заканчиваются после нажатия кнопки «Стоп».
Когда одна нота (C0) получает удар, она выглядит следующим образом:
if (e.keyCode == 49 && shiftinUse == 0) {
nonfunctionalKey = 0;
trackID = C0;
if (ittybittymidi == 1) {
document.getElementById('txtexport').value += "\n" + totalmilliSeconds + " On ch=1 n=36 v=98";
document.addEventListener("keyup", C0keyupOff);
function C0keyupOff() {
if (e.keyCode == 49) {
document.getElementById('txtexport').value += "\n" + totalmilliSeconds + " On ch=1 n=36 v=0";
document.removeEventListener("keyup", C0keyupOff);
}
}
}
}
После того, как вы нажмете Стоп и создадите последнюю строку этого текстового блока, вы можете взять весь этот текст и вставить егов этот конвертер TXT в MIDI, который создал Пит ван Оострум (http://valentin.dasdeck.com/midi/)), который я загрузил на свой сайт: http://www.skyetheguy.com/midi_class_v178/txt2mid.php
Код на этой конкретной странице PHP не мой иполучает больше кода с другой более длинной страницы PHP, но выглядит примерно так:
<?php
@set_time_limit(120);
error_reporting(E_ALL);
$PHP_SELF = $_SERVER['PHP_SELF'];
if (isset($_POST['txt'])){
$txt = $_POST['txt'];
if (get_magic_quotes_gpc()==1) $txt = stripslashes($txt);
}else{
$txt = '';
}
?>
<!doctype html>
<html>
<head>
<title>Text2Midi</title>
</head>
<body>
<form action="<?=$PHP_SELF?>" method="post">
<textarea name="txt" cols="100" rows="30"><?php echo $txt?></textarea><br />
<input type="submit" value=" Generate MIDI File " />
</form>
<div>
<?php
if (isset($_POST['txt'])){
$save_dir = 'tmp/';
srand((double)microtime()*1000000);
$file = $save_dir.rand().'.mid';
/****************************************************************************
MIDI CLASS CODE
****************************************************************************/
require('./classes/midi.class.php');
$midi = new Midi();
$midi->importTxt($txt);
$midi->saveMidFile($file, 0666);
?>
<br /><input type="button" name="download" value="Download MIDI File" onclick="self.location.href='download.php?f=<?php echo urlencode($file)?>'" />
<?php
}
?>
</div>
</body>
</html>
Затем вы можете загрузить файл MIDI того, что вы играли. Однако я понятия не имею, как это сделать. все происходит проще,Я хочу нажать «Запись», нажать «Стоп», а затем сразу же появиться кнопка «Загрузить файл MIDI» прямо под остальными кнопками. Возможно ли что-то подобное? Моя неуместная идея изменить страницу пианино на PHP и скопировать и вставить весь код вместе определенно не сработала.
Большое спасибо за вашу помощь и надеюсь, что у вас замечательный деньи далее!