Adding Midi
This commit is contained in:
parent
7bcdbbf038
commit
75a3a414bf
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,3 +1,4 @@
|
|||||||
node_modules
|
node_modules
|
||||||
|
midifiles
|
||||||
.env
|
.env
|
||||||
package-lock.json
|
package-lock.json
|
||||||
|
124
commands/Utilities/midi.js
Normal file
124
commands/Utilities/midi.js
Normal file
@ -0,0 +1,124 @@
|
|||||||
|
exports.run = async (bot, message, args, functions) => {
|
||||||
|
let argscmd = message.content.split(" ").slice(1);
|
||||||
|
let urlcmd = argscmd[0];
|
||||||
|
|
||||||
|
if (!urlcmd) return message.reply("Please give me a MIDI URL or command");
|
||||||
|
|
||||||
|
|
||||||
|
var fs = require('fs');
|
||||||
|
const synth = require('synth-js');
|
||||||
|
var nrc = require('node-run-cmd');
|
||||||
|
|
||||||
|
var download = require('download-file')
|
||||||
|
|
||||||
|
var url = urlcmd
|
||||||
|
if (url != "stop") {
|
||||||
|
var name = Math.floor(Math.random() * 999999);
|
||||||
|
var callback = function(exitCodes) {
|
||||||
|
console.log('Called Back - Converting....');
|
||||||
|
|
||||||
|
let midiBuffer = fs.readFileSync('./midifiles/' + name + ".mid");
|
||||||
|
// convert midi buffer to wav buffer
|
||||||
|
let wavBuffer = synth.midiToWav(midiBuffer).toBuffer();
|
||||||
|
|
||||||
|
fs.writeFileSync('/var/www/html/midi/' + name + ".wav", wavBuffer, {
|
||||||
|
encoding: 'binary'
|
||||||
|
});
|
||||||
|
if (message.member.voice.channel) {
|
||||||
|
|
||||||
|
message.member.voice.channel.join()
|
||||||
|
.then(connection => { // Connection is an instance of VoiceConnection
|
||||||
|
console.log('Sending and Playing');
|
||||||
|
const date = require('date-and-time');
|
||||||
|
const now = new Date();
|
||||||
|
message.channel.send({
|
||||||
|
"embed": {
|
||||||
|
"color": 2899536,
|
||||||
|
"footer": {
|
||||||
|
"text": date.format(now, 'MM/DD/YYYY hh:mm:ss')
|
||||||
|
},
|
||||||
|
"fields": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Midi Sound Generator",
|
||||||
|
"value": "Here is the sound file: \n https://midi.codingvm.codes/" + name + ".wav \n It should also be playing within the voice channel" ,
|
||||||
|
"inline": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const dispatcher = connection.play('/var/www/html/midi/' + name + ".wav");
|
||||||
|
dispatcher.on("end", end => {
|
||||||
|
message.member.voice.channel.leave();
|
||||||
|
});
|
||||||
|
|
||||||
|
dispatcher.on('error', e => {
|
||||||
|
// Catch any errors that may arise
|
||||||
|
return message.reply(e);
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
.catch(console.log);
|
||||||
|
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
const date = require('date-and-time');
|
||||||
|
const now = new Date();
|
||||||
|
message.channel.send({
|
||||||
|
"embed": {
|
||||||
|
"color": 2899536,
|
||||||
|
"footer": {
|
||||||
|
"text": date.format(now, 'MM/DD/YYYY hh:mm:ss')
|
||||||
|
},
|
||||||
|
"fields": [
|
||||||
|
|
||||||
|
{
|
||||||
|
"name": "Midi Sound Generator",
|
||||||
|
"value": "Here is the sound file: \n https://midi.codingvm.codes/" + name + ".wav \n If you join voice, I can also play it when finished." ,
|
||||||
|
"inline": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
message.reply('Please wait, Converting your file...');
|
||||||
|
nrc.run('wget ' + url + ' -O ./midifiles/' + name + '.mid', {
|
||||||
|
onDone: callback
|
||||||
|
});
|
||||||
|
|
||||||
|
console.log('wget ' + url + ' -O ./midifiles/' + name + '.mid');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (url == "stop") {
|
||||||
|
message.reply('I have stopped...');
|
||||||
|
console.log('Stopping...');
|
||||||
|
message.member.voice.channel.leave();
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
exports.conf = {
|
||||||
|
enabled: true,
|
||||||
|
guildOnly: false,
|
||||||
|
aliases: [''],
|
||||||
|
permLevel: "User"
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.help = {
|
||||||
|
name: "midi",
|
||||||
|
category: "Troll",
|
||||||
|
description: "",
|
||||||
|
usage: "midi"
|
||||||
|
};
|
||||||
|
|
Loading…
Reference in New Issue
Block a user