From bfa6396246e3cc576db5d17072692aa6e134c121 Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 4 Dec 2018 08:39:13 -0800 Subject: [PATCH 1/2] remove c++ --- enums.d.ts | 1 - extension.cpp | 8 -------- midi.ts | 6 +++--- pxt.json | 7 ++----- shims.d.ts | 1 - 5 files changed, 5 insertions(+), 18 deletions(-) delete mode 100644 enums.d.ts delete mode 100644 extension.cpp delete mode 100644 shims.d.ts diff --git a/enums.d.ts b/enums.d.ts deleted file mode 100644 index 4ef584e..0000000 --- a/enums.d.ts +++ /dev/null @@ -1 +0,0 @@ -// Will be auto-generated if needed. diff --git a/extension.cpp b/extension.cpp deleted file mode 100644 index 4644567..0000000 --- a/extension.cpp +++ /dev/null @@ -1,8 +0,0 @@ -#include "pxt.h" -using namespace pxt; -namespace midi { - //% - int frequencyToKey(int frequency) { - return max(0, min(127, round(log(frequency/440.0)/log(2) * 12 + 69))); - } -} diff --git a/midi.ts b/midi.ts index 4eede1b..41d73d8 100644 --- a/midi.ts +++ b/midi.ts @@ -359,17 +359,17 @@ namespace midi { channel(1).pitchBend(bend); } + const notes = [8, 9, 9, 10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 19, 21, 22, 23, 24, 26, 28, 29, 31, 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, 65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 117, 123, 131, 139, 147, 156, 165, 175, 185, 196, 208, 220, 233, 247, 262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976, 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, 4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902, 8372, 8870, 9397, 9956, 10548, 11175, 11840, 12544]; /** * Maps a frequency to a note key * @param frequency */ //% blockId=midi_frequency_to_key block="key at %frequency=device_note" useEnumVal=1 - //% shim=midi::frequencyToKey weight=4 blockGap=8 + //% weight=4 blockGap=8 //% group="Constants" export function frequencyToKey(frequency: number): number { - const notes = [8, 9, 9, 10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 18, 19, 21, 22, 23, 24, 26, 28, 29, 31, 33, 35, 37, 39, 41, 44, 46, 49, 52, 55, 58, 62, 65, 69, 73, 78, 82, 87, 92, 98, 104, 110, 117, 123, 131, 139, 147, 156, 165, 175, 185, 196, 208, 220, 233, 247, 262, 277, 294, 311, 330, 349, 370, 392, 415, 440, 466, 494, 523, 554, 587, 622, 659, 698, 740, 784, 831, 880, 932, 988, 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1976, 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951, 4186, 4435, 4699, 4978, 5274, 5588, 5920, 6272, 6645, 7040, 7459, 7902, 8372, 8870, 9397, 9956, 10548, 11175, 11840, 12544]; + // return Math.max(0, Math.min(127, Math.round(Math.log(frequency/440.0)/Math.log(2) * 12 + 69))); let left = 0, right = 0x7f, mid = 69; - while (right - left > 1) { const midf = notes[mid]; if (frequency == midf) diff --git a/pxt.json b/pxt.json index 2404ad3..a9bac7c 100644 --- a/pxt.json +++ b/pxt.json @@ -1,6 +1,6 @@ { "name": "midi", - "version": "2.1.11", + "version": "3.0.0", "description": "A MIDI output controller package", "license": "MIT", "dependencies": { @@ -10,10 +10,7 @@ "README.md", "midi.ts", "instruments.ts", - "drums.ts", - "extension.cpp", - "shims.d.ts", - "enums.d.ts" + "drums.ts" ], "testFiles": [ "tests.ts" diff --git a/shims.d.ts b/shims.d.ts deleted file mode 100644 index 4ef584e..0000000 --- a/shims.d.ts +++ /dev/null @@ -1 +0,0 @@ -// Will be auto-generated if needed. From d85138bbc99e68e0e54e3aed4da643b36101c9ba Mon Sep 17 00:00:00 2001 From: Peli de Halleux Date: Tue, 4 Dec 2018 08:45:43 -0800 Subject: [PATCH 2/2] moving to console.log instead of serial --- README.md | 8 ++++++++ midi.ts | 18 ++++-------------- tests.ts | 5 ++--- 3 files changed, 14 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index fc6f144..d434466 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,14 @@ let piano = midi.channel(1); piano.pitchBend(8192 + input.acceleration(Dimension.X) * 8) ``` +## Logging packets + +Add the **midi use console** block will print all MIDI packets to the console. + +```block +midi.useConsole() +``` + ## Radio serial You can use radio to send MIDI messages from various @boardname@ and play them via [Hairless MIDI](http://projectgus.github.io/hairless-midiserial/). diff --git a/midi.ts b/midi.ts index 41d73d8..4d61440 100644 --- a/midi.ts +++ b/midi.ts @@ -87,24 +87,14 @@ namespace midi { } /** - * Send human readable MIDI messages via serial + * Send human readable MIDI messages via console */ - //% blockId=midi_serial_transport block="midi use serial" + //% blockId=midi_serial_transport block="midi use console" //% weight=1 blockGap=8 //% group=Transports - export function useSerial() { + export function useConsole() { function send(data: Buffer): void { - // waiting for beta - //const buf = pins.createBuffer(data.length); - //for (let i = 0; i < data.length; ++i) - // buf[i] = data[i]; - // serial.writeBuffer(buf); - serial.writeString("midi:") - for (let i = 0; i < data.length; ++i) { - if (i > 0) serial.writeString(","); - serial.writeNumber(data[i]); - } - serial.writeLine(""); + console.log(`midi: ${data.toHex()}`) } setTransport(send) } diff --git a/tests.ts b/tests.ts index 1b1280a..d147db0 100644 --- a/tests.ts +++ b/tests.ts @@ -1,12 +1,11 @@ // tests go here; this will not be compiled when this package is used as a library +midi.useConsole(); midi.playTone(400, 500); for (let i = 0; i < 127; ++i) midi.playDrum(i) let i = midi.channel(1); i.setInstrument(MidiInstrument.Banjo); - let piano = midi.channel(0); let trumpet = midi.channel(1); piano.setInstrument(MidiInstrument.Trumpet); - -serial.writeLine('B ' + Note.B + ' -> ' + midi.frequencyToKey(Note.B)) +console.log('B ' + Note.B + ' -> ' + midi.frequencyToKey(Note.B))