Coding-styled examples.
This commit is contained in:
parent
d8b0d6f838
commit
e6da273119
|
|
@ -1,21 +1,22 @@
|
|||
#include <MIDI.h>
|
||||
/*
|
||||
Basic I/O MIDI tutorial
|
||||
by Franky
|
||||
28/07/2009
|
||||
*/
|
||||
|
||||
#define LED 13 // LED pin on Arduino board
|
||||
// Simple tutorial on how to receive and send MIDI messages.
|
||||
// Here, when receiving any message on channel 4, the Arduino
|
||||
// will blink a led and play back a note for 1 second.
|
||||
|
||||
void setup() {
|
||||
#define LED 13 // LED pin on Arduino Uno
|
||||
|
||||
void setup()
|
||||
{
|
||||
pinMode(LED, OUTPUT);
|
||||
MIDI.begin(4); // Launch MIDI with default options
|
||||
// input channel is set to 4
|
||||
MIDI.begin(4); // Launch MIDI and listen to channel 4
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (MIDI.read()) {
|
||||
digitalWrite(LED,HIGH); // Blink the LED
|
||||
void loop()
|
||||
{
|
||||
if (MIDI.read()) // If we have received a message
|
||||
{
|
||||
digitalWrite(LED,HIGH);
|
||||
MIDI.sendNoteOn(42,127,1); // Send a Note (pitch 42, velo 127 on channel 1)
|
||||
delay(1000); // Wait for a second
|
||||
MIDI.sendNoteOff(42,0,1); // Stop the note
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
#include <SoftwareSerial.h>
|
||||
#define MIDI_AUTO_INSTANCIATE 0
|
||||
#include <MIDI.h>
|
||||
|
||||
// This program demonstrates how to use two serial ports at a time,
|
||||
// the hardware serial being used for sending messages to the computer,
|
||||
// while MIDI is handled on a software serial port.
|
||||
// This program measures the time spent to receive and parse a message.
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
SoftwareSerial midiSerial(2,3);
|
||||
MIDI_CREATE_INSTANCE(SoftwareSerial, midiSerial, softMidi);
|
||||
|
||||
unsigned long gTime_start = 0;
|
||||
unsigned long gTime_stop = 0;
|
||||
unsigned gCounter = 0;
|
||||
|
|
@ -7,10 +19,10 @@ unsigned long gTime_sum = 0;
|
|||
unsigned long gTime_min = -1;
|
||||
unsigned long gTime_max = 0;
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void handleNoteOn(byte inChannel, byte inNote, byte inVelocity)
|
||||
{
|
||||
|
||||
gTime_stop = micros();
|
||||
|
||||
const unsigned long diff = gTime_stop - gTime_start;
|
||||
|
|
@ -21,8 +33,8 @@ void handleNoteOn(byte inChannel,byte inNote,byte inVelocity)
|
|||
|
||||
gCounter++;
|
||||
|
||||
if (gCounter >= 100) {
|
||||
|
||||
if (gCounter >= 100)
|
||||
{
|
||||
const unsigned long average = gTime_sum / (float)gCounter;
|
||||
|
||||
Serial.println("Time to receive NoteOn: ");
|
||||
|
|
@ -44,32 +56,26 @@ void handleNoteOn(byte inChannel,byte inNote,byte inVelocity)
|
|||
gTime_max = 0;
|
||||
gTime_min = -1;
|
||||
|
||||
MIDI.turnThruOff();
|
||||
|
||||
}
|
||||
|
||||
softMidi.turnThruOff();
|
||||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void setup()
|
||||
{
|
||||
|
||||
MIDI.begin();
|
||||
softMidi.begin();
|
||||
|
||||
Serial.begin(38400);
|
||||
Serial.print("MCU Ready");
|
||||
|
||||
MIDI.sendNoteOn(69,127,1);
|
||||
Serial.print("Arduino Ready");
|
||||
|
||||
softMidi.sendNoteOn(69,127,1);
|
||||
}
|
||||
|
||||
|
||||
void loop()
|
||||
{
|
||||
|
||||
gTime_start = micros();
|
||||
|
||||
MIDI.read();
|
||||
|
||||
softMidi.read();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
#include <MIDI.h>
|
||||
|
||||
|
||||
// This function will be automatically called when a NoteOn is received.
|
||||
// It must be a void-returning function with the correct parameters,
|
||||
// see documentation here:
|
||||
|
|
@ -10,30 +9,36 @@ void HandleNoteOn(byte channel, byte pitch, byte velocity)
|
|||
{
|
||||
// Do whatever you want when you receive a Note On.
|
||||
|
||||
if (velocity == 0) {
|
||||
if (velocity == 0)
|
||||
{
|
||||
// This acts like a NoteOff.
|
||||
}
|
||||
|
||||
// Try to keep your callbacks short (no delays ect) as the contrary would slow down the loop()
|
||||
// and have a bad impact on real-time performance.
|
||||
// Try to keep your callbacks short (no delays ect)
|
||||
// otherwise it would slow down the loop() and have a bad impact
|
||||
// on real-time performance.
|
||||
}
|
||||
|
||||
void setup() {
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void setup()
|
||||
{
|
||||
// Initiate MIDI communications, listen to all channels
|
||||
MIDI.begin(MIDI_CHANNEL_OMNI);
|
||||
|
||||
// Connect the HandleNoteOn function to the library, so it is called upon reception of a NoteOn.
|
||||
// Connect the HandleNoteOn function to the library,
|
||||
// so it is called upon reception of a NoteOn.
|
||||
MIDI.setHandleNoteOn(HandleNoteOn); // Put only the name of the function
|
||||
|
||||
}
|
||||
|
||||
|
||||
void loop() {
|
||||
void loop()
|
||||
{
|
||||
// Call MIDI.read the fastest you can for real-time performance.
|
||||
MIDI.read();
|
||||
|
||||
// There is no need to check if there are messages incoming if they are bound to a Callback function.
|
||||
// The attached method will be called automatically when the corresponding message has been received.
|
||||
// There is no need to check if there are messages incoming
|
||||
// if they are bound to a Callback function.
|
||||
// The attached method will be called automatically
|
||||
// when the corresponding message has been received.
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -41,5 +41,3 @@ void loop()
|
|||
midiB.getChannel());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,18 +1,16 @@
|
|||
#include <MIDI.h>
|
||||
/*
|
||||
MIDI Input tutorial
|
||||
by Franky
|
||||
28/07/2009
|
||||
|
||||
NOTE: for easier MIDI input reading,
|
||||
take a look a the Callbacks example.
|
||||
// This example shows the old way of checking for input messages.
|
||||
// It's simpler to use the callbacks now, check out the dedicated example.
|
||||
|
||||
*/
|
||||
#define LED 13 // LED pin on Arduino Uno
|
||||
|
||||
#define LED 13 // LED pin on Arduino board
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void BlinkLed(byte num) { // Basic blink function
|
||||
for (byte i=0;i<num;i++) {
|
||||
void BlinkLed(byte num) // Basic blink function
|
||||
{
|
||||
for (byte i=0;i<num;i++)
|
||||
{
|
||||
digitalWrite(LED,HIGH);
|
||||
delay(50);
|
||||
digitalWrite(LED,LOW);
|
||||
|
|
@ -20,18 +18,22 @@ void BlinkLed(byte num) { // Basic blink function
|
|||
}
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
void setup() {
|
||||
void setup()
|
||||
{
|
||||
pinMode(LED, OUTPUT);
|
||||
MIDI.begin(); // Launch MIDI with default options
|
||||
// (input channel is default set to 1)
|
||||
MIDI.begin(); // Launch MIDI, by default listening to channel 1.
|
||||
}
|
||||
|
||||
void loop() {
|
||||
if (MIDI.read()) { // Is there a MIDI message incoming ?
|
||||
switch(MIDI.getType()) { // Get the type of the message we caught
|
||||
case midi::ProgramChange: // If it is a Program Change
|
||||
BlinkLed(MIDI.getData1()); // Blink the LED a number of times
|
||||
void loop()
|
||||
{
|
||||
if (MIDI.read()) // Is there a MIDI message incoming ?
|
||||
{
|
||||
switch(MIDI.getType()) // Get the type of the message we caught
|
||||
{
|
||||
case midi::ProgramChange: // If it is a Program Change,
|
||||
BlinkLed(MIDI.getData1()); // blink the LED a number of times
|
||||
// correponding to the program number
|
||||
// (0 to 127, it can last a while..)
|
||||
break;
|
||||
|
|
|
|||
Loading…
Reference in New Issue