Skip to content
This repository has been archived by the owner on Jan 2, 2018. It is now read-only.

Commit

Permalink
update to version 0.5.4
Browse files Browse the repository at this point in the history
  • Loading branch information
abudaan committed Apr 26, 2012
1 parent 3d4d792 commit b442327
Show file tree
Hide file tree
Showing 23 changed files with 208 additions and 75 deletions.
2 changes: 1 addition & 1 deletion README
Expand Up @@ -31,7 +31,7 @@ The only files you need to get started are:
/java/midiapplet.jar


/lib/MidiBridge.js is the non-minified version of /lib/midibridge-0.5.3.min.js
/lib/MidiBridge.js is the non-minified version of /lib/midibridge-0.5.4.min.js

The index.html file shows you how you embed the midibridge in your html page; you can use this basic example as a starting point of your own code.

Expand Down
2 changes: 1 addition & 1 deletion examples/addconnection.html
Expand Up @@ -10,7 +10,7 @@
<!-- <script type="text/javascript" src="lib/your-other-libs.js"></script> -->

<!-- the midibridge -->
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>

<!-- your javascript code -->
<script type="text/javascript" src="js/addconnection.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion examples/audiolib.html
Expand Up @@ -3,7 +3,7 @@
<head>
<title>midi bridge</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>
<script type="text/javascript" src="lib/audiolib.js"></script>
<script type="text/javascript" src="js/audiolib.js"></script>
<link rel="stylesheet" media="screen" href="css/reset.css"/>
Expand Down
2 changes: 1 addition & 1 deletion examples/base64.html
Expand Up @@ -3,7 +3,7 @@
<head>
<title>midi bridge</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>
<script type="text/javascript" src="lib/MIDIProgramSelector.js"></script>
<script type="text/javascript" src="js/base64.js"></script>
<link rel="stylesheet" media="screen" href="css/reset.css"/>
Expand Down
2 changes: 1 addition & 1 deletion examples/configobject.html
Expand Up @@ -11,7 +11,7 @@
<!-- <script type="text/javascript" src="lib/your-other-libs.js"></script> -->

<!-- the midibridge -->
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>

<!-- your javascript code -->
<script type="text/javascript" src="js/configobject.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion examples/flash.html
Expand Up @@ -11,7 +11,7 @@
<script type="text/javascript" src="lib/swfobject.js"></script>

<!-- the midibridge -->
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>

<!-- your javascript code -->
<script type="text/javascript" src="js/flash.js"></script>
Expand Down
2 changes: 1 addition & 1 deletion examples/getdevices.html
Expand Up @@ -11,7 +11,7 @@
<!-- <script type="text/javascript" src="lib/your-other-lib.js"></script> -->

<!-- the midibridge -->
<script type="text/javascript" src="lib/midibridge-0.5.3.min.js"></script>
<script type="text/javascript" src="lib/midibridge-0.5.4.min.js"></script>

<!-- your javascript code -->
<script type="text/javascript" src="js/getdevices.js"></script>
Expand Down
Binary file not shown.
4 changes: 3 additions & 1 deletion examples/js/playmidifile.js
Expand Up @@ -179,6 +179,8 @@ window.addEventListener('load', function() {
midiBridge.init({
connectAllInputsToFirstOutput: false,
connectFirstOutput: true,
//debug:true,
//midiCommands:[midiBridge.NOTE_OFF,midiBridge.NOTE_ON],

ready: function(msg) {
loadMIDIFile(chopin_opus18);
Expand All @@ -194,7 +196,7 @@ window.addEventListener('load', function() {
//slider.setAttribute("value", (midiEvent.microsecond/1000) >> 0);
slider.setPercentage(((midiEvent.microsecond / 1000) >> 0) / (fileDuration), false);
position.innerHTML = midiEvent.time;
//console.log(midiEvent,midiEvent.microsecond);
//console.log(midiEvent.channel);
}
});
}, false);
95 changes: 79 additions & 16 deletions examples/lib/MidiBridge.js
Expand Up @@ -33,6 +33,17 @@
CHANNEL_PRESSURE : 0xD0, //208
PITCH_BEND : 0xE0, //224
SYSTEM_EXCLUSIVE : 0xF0, //240
MIDI_TIMECODE : 241,
SONG_POSITION : 242,
SONG_SELECT : 243,
TUNE_REQUEST : 246,
EOX : 247,
TIMING_CLOCK : 248,
START : 250,
CONTINUE : 251,
STOP : 252,
ACTIVE_SENSING : 254,
SYSTEM_RESET : 255,
NOTE_NAMES_SHARP : "sharp",
NOTE_NAMES_FLAT : "flat",
NOTE_NAMES_SOUNDFONT : "soundfont",
Expand All @@ -44,12 +55,26 @@
var status = [];
status[0x80] = "NOTE OFF";
status[0x90] = "NOTE ON";
status[0xA0] = "POLY PRESSURE";
status[0xA0] = "POLY PRESSURE";//POLYPHONIC AFTERTOUCH
status[0xB0] = "CONTROL CHANGE";
status[0xC0] = "PROGRAM CHANGE";
status[0xD0] = "CHANNEL PRESSURE";
status[0xD0] = "CHANNEL PRESSURE";//AFTERTOUCH
status[0xE0] = "PITCH BEND";
status[0xF0] = "SYSTEM EXCLUSIVE";
status[241] = "MIDI TIMECODE";
status[242] = "SONG POSITION";
status[243] = "SONG SELECT";
status[244] = "RESERVED";
status[245] = "RESERVED";
status[246] = "TUNE REQUEST";
status[247] = "EOX";
status[248] = "TIMING CLOCK";
status[249] = "RESERVED";
status[250] = "START";
status[251] = "CONTINUE";
status[252] = "STOP";
status[254] = "ACTIVE SENSING";
status[255] = "SYSTEM RESET";
//notenames in different modi
var noteNames = {
"sharp" : ["C", "C#", "D", "D#", "E", "F", "F#", "G", "G#", "A", "A#", "B"],
Expand All @@ -75,14 +100,17 @@
var debug = false;
//these are the commands that the midibridge passes on to Javascript
var midiCommands = {};
midiCommands[midiBridge.NOTE_OFF] = 1;
midiCommands[midiBridge.NOTE_ON] = 1;
midiCommands[midiBridge.CONTROL_CHANGE] = 1;
midiCommands[midiBridge.PITCH_BEND] = 1;
midiCommands[midiBridge.PROGRAM_CHANGE] = 1;
midiBridge.version = "0.5.2";
var allCommands = [];

// var passCommands = [midiBridge.NOTE_OFF,
// midiBridge.NOTE_ON,
// midiBridge.CONTROL_CHANGE,
// midiBridge.PITCH_BEND,
// midiBridge.PROGRAM_CHANGE];
midiBridge.version = "0.5.4";
midiBridge.ready = false;
midiBridge.noteNameModus = midiBridge.NOTE_NAMES_SHARP;
var midiBridgeJar = "midiapplet-" + midiBridge.version + ".jar";

/**
* static method called to initialize the MidiBridge
Expand All @@ -99,17 +127,52 @@
* - javaDir : [string] the folder where you store the midiapplet.jar on your webserver, defaults to "java"
*/
midiBridge.init = function (arg) {

for(var statusCode in status){
var command = parseInt(statusCode);
switch(command){
case midiBridge.NOTE_OFF:
case midiBridge.NOTE_ON:
case midiBridge.POLY_PRESSURE: //POLYPHONIC AFTERTOUCH
case midiBridge.CONTROL_CHANGE:
case midiBridge.PROGRAM_CHANGE:
case midiBridge.CHANNEL_PRESSURE: //AFTERTOUCH
case midiBridge.PITCH_BEND:
allCommands.push(command);
for(var channel = 0; channel < 16; channel++){
status[command + channel] = status[statusCode];
}
break;
default:
allCommands.push(command);
break;
}
}

//var args = Array.prototype.slice.call(arguments);
if (typeof arg === "function") {
ondata = arg;
} else if (typeof arg === "object") {
var config = arg;
debug = config.debug;
if(config.midiCommands){
midiCommands = {};
for(var i = 0; i < config.midiCommands.length; i++){
midiCommands[config.midiCommands[i]] = 1;
var commands = config.midiCommands || allCommands;
midiCommands = {};
for(var i = 0; i < commands.length; i++){
command = commands[i];
switch(command){
case midiBridge.NOTE_OFF:
case midiBridge.NOTE_ON:
case midiBridge.POLY_PRESSURE: //POLYPHONIC AFTERTOUCH
case midiBridge.CONTROL_CHANGE:
case midiBridge.PROGRAM_CHANGE:
case midiBridge.CHANNEL_PRESSURE: //AFTERTOUCH
case midiBridge.PITCH_BEND:
for(channel = 0; channel < 16; channel++){
midiCommands[command + channel] = 1;
}
break;
default:
midiCommands[command] = 1;
}
}
connectAllInputs = config.connectAllInputs;
Expand Down Expand Up @@ -268,7 +331,7 @@
//if(midiBridge.getStatus(data.status) === undefined){
if(midiCommands[data.status] === undefined){
if(debug){
console.log("MIDI message with status code", data.status, "intercepted");
console.log("MIDI message intercepted", data.status, data.data1, data.data2, data.channel);
}
return;
}
Expand Down Expand Up @@ -461,14 +524,14 @@
if(ua.indexOf("chrome") === -1){
html += '<object tabindex="0" id="midibridge-applet" type="application/x-java-applet" height="1" width="1">';
html += '<param name="codebase" value="' + javaDir + '/" />';
html += '<param name="archive" value="midiapplet.jar" />';
html += '<param name="archive" value="' + midiBridgeJar + '" />';
html += '<param name="code" value="net.abumarkub.midi.applet.MidiApplet" />';
html += '<param name="scriptable" value="true" />';
html += '<param name="minJavaVersion" value="1.5" />';
html += 'Your browser needs the Java plugin to use the midibridge. You can download it <a href="http://www.java.com/en/" target="blank" title="abumarkub midibridge download java" rel="abumarkub midibridge download java">here</a>';
html += '</object>';
}else{
html += '<applet id="midibridge-applet" code="net.abumarkub.midi.applet.MidiApplet.class" archive="midiapplet.jar" codebase="' + javaDir + '" width="1" height="1">';
html += '<applet id="midibridge-applet" code="net.abumarkub.midi.applet.MidiApplet.class" archive="' + midiBridgeJar + '" codebase="' + javaDir + '" width="1" height="1">';
html += '<param name="minJavaVersion" value="1.5">';
html += '</applet>';
}
Expand Down Expand Up @@ -497,7 +560,7 @@
_constructor.prototype = {
toString : function() {
var s = "";
s += this.noteName + " " + this.statusCode + " " + this.data1 + " " + this.data2 + " " + this.status;
s += this.noteName + " " + this.statusCode + " " + this.data1 + " " + this.data2 + " " + this.channel + " " + this.status;
s += this.microsecond ? this.microsecond + " " + this.time : "";
//console.log(s);
return s;
Expand Down
14 changes: 0 additions & 14 deletions examples/lib/midibridge-0.5.3.min.js

This file was deleted.

0 comments on commit b442327

Please sign in to comment.