Stran 1 od 1

MIDI tester

Objavljeno: Pe Jan 26, 2018 7:37 pm
Napisal/-a Milenko
Ker sem ze proti koncu DSP-SoundEgine projekta,sem potreboval nek MIDI tester,da lahko testiram latency (kasnitev) MIDI ukazov.To je zelo pomembno zaradi igranja v zivo.Vse o MIDI-ju si lahko preberete na strani tukaj https://sl.wikipedia.org/wiki/MIDI .

Nekaj o SE;DSP (soundengine) je procesor-predvajalnik zvoka ali sample player,ki lahko predvaja 24 tonov(samplov) polifonicno.Vsak ton je vzorcen(semplan) posamezno.Ima 1Gb flash v katero lahko shranimo 128 sound banks,v eni sound banki ja lahko 88 zvokov (semplov).Podpira vecino MIDI ukazov.

Ko sem pomislil,kako bi izvedel MIDI tester sem pomislil na hitro resitev z arduinom.Uporabil sem arduino nano modul.Programcek je v prilogi.Ce si boste tester izdelali,ne pozabite naložiti zadnje MIDI.h knjiznice.S testerjem lahko testirate tudi vseh 24 tonov polifonije,kar je meni prislo zelo prav.MIDI latency testirate od pritiska tipke do zaigranega tona.Upostevati morate tudi da je 1ms sam MIDI signal torej;31250k 10bit=330us,trije ukazi (MIDI CHANNEL,NOTEON ali NOTEOFF,Velocity)=0.96ms.Pri meritvah sem dobil 5.7ms s cirkularnim bufferjem(zajem word-a) DSP-ja,kar je odlicno.

Izdelate si lahko tudi pcb (eagle shema v prilogi).

http://audiologs.com/MIDI-tester/MIDI-o ... ibrary.ino

http://audiologs.com/MIDI-tester/DEMI-MIDI-tester.sch

Koda: Izberi vse

#include <MIDI.h>

// Button variables
int buttonVal = 0; // value read from button
int buttonPlay = 3;     // pin D3 Predvajaj
int ledPin = 13; // ledika
 
 // Created and binds the MIDI interface to the default hardware Serial port
 MIDI_CREATE_DEFAULT_INSTANCE();

 void setup()
 {
     MIDI.begin(MIDI_CHANNEL_OMNI);  // Listen to all incoming messages
     //postavitev tipke
     pinMode(buttonPlay, INPUT);
     digitalWrite(buttonPlay,HIGH);

     // initialize the LED pin as an output:
     pinMode(ledPin, OUTPUT);
     
 }

 void loop()
 {     
     // Read the state of the button
     buttonVal = digitalRead(buttonPlay);

     // check if the pushbutton is pressed. If it is, the buttonState is HIGH:
  if (buttonVal == LOW) {
    // play&turn LED on:
    play();
    digitalWrite(ledPin, HIGH);
  } else {
    // turn LED off:
    digitalWrite(ledPin, LOW);
  }

     
     // Read incoming messages
     //MIDI.read();
 }

 void play()
{
  // Send note 42 with velocity 127 on channel 1
     MIDI.sendNoteOn(60, 127, 1); 
     MIDI.sendNoteOn(62, 127, 1);
     MIDI.sendNoteOn(64, 127, 1);
     MIDI.sendNoteOn(66, 127, 1);
     MIDI.sendNoteOn(68, 127, 1);
     MIDI.sendNoteOn(70, 127, 1);
     MIDI.sendNoteOn(72, 127, 1);
     MIDI.sendNoteOn(74, 127, 1);
     MIDI.sendNoteOn(76, 127, 1);
     MIDI.sendNoteOn(78, 127, 1);
     MIDI.sendNoteOn(80, 127, 1);
     MIDI.sendNoteOn(82, 127, 1);
     MIDI.sendNoteOn(84, 127, 1); 
     MIDI.sendNoteOn(86, 127, 1);
     MIDI.sendNoteOn(88, 127, 1);
     MIDI.sendNoteOn(90, 127, 1);
     MIDI.sendNoteOn(92, 127, 1);
     MIDI.sendNoteOn(94, 127, 1);
     MIDI.sendNoteOn(96, 127, 1);
     MIDI.sendNoteOn(98, 127, 1);
     MIDI.sendNoteOn(100, 127, 1);
     MIDI.sendNoteOn(102, 127, 1);
     MIDI.sendNoteOn(104, 127, 1);
     MIDI.sendNoteOn(106, 127, 1);
     delay (1000);
     MIDI.sendNoteOn(60, 0, 1); 
     MIDI.sendNoteOn(62, 0, 1);
     MIDI.sendNoteOn(64, 0, 1);
     MIDI.sendNoteOn(66, 0, 1);
     MIDI.sendNoteOn(68, 0, 1);
     MIDI.sendNoteOn(70, 0, 1);
     MIDI.sendNoteOn(72, 0, 1);
     MIDI.sendNoteOn(74, 0, 1);
     MIDI.sendNoteOn(76, 0, 1);
     MIDI.sendNoteOn(78, 0, 1);
     MIDI.sendNoteOn(80, 0, 1);
     MIDI.sendNoteOn(82, 0, 1);
     MIDI.sendNoteOn(84, 0, 1); 
     MIDI.sendNoteOn(86, 0, 1);
     MIDI.sendNoteOn(88, 0, 1);
     MIDI.sendNoteOn(90, 0, 1);
     MIDI.sendNoteOn(92, 0, 1);
     MIDI.sendNoteOn(94, 0, 1);
     MIDI.sendNoteOn(96, 0, 1);
     MIDI.sendNoteOn(98, 0, 1);
     MIDI.sendNoteOn(100, 0, 1);
     MIDI.sendNoteOn(102, 0, 1);
     MIDI.sendNoteOn(104, 0, 1);
     MIDI.sendNoteOn(106, 0, 1);
}

foto

Objavljeno: Sr Jan 31, 2018 11:15 am
Napisal/-a Milenko
Fotografije vidite le,ce ste prijavljeni ;).

Zakaj nisem uporabil stevca za generiranje tonov?To je zato,ker sem zelel simulirati vsako pritisnjeno tipko.Enako kot je pri igranju v zivo,kjer MIDI kontroler posreduje ukaz za pritisnjeno tipko.

Re: foto

Objavljeno: Sr Jan 31, 2018 4:29 pm
Napisal/-a Gost
Milenko napisal/-a:Fotografije vidite le,ce ste prijavljeni ;).

Zakaj nisem uporabil stevca za generiranje tonov?To je zato,ker sem zelel simulirati vsako pritisnjeno tipko.Enako kot je pri igranju v zivo,kjer MIDI kontroler posreduje ukaz za pritisnjeno tipko.
Vidim, da se še trudiš Milenko, da si vztrajen in uspešen! Spomnim se, kaj vse si včasih delal in predstavljal tudi na sejmih.

hvala

Objavljeno: Pe Feb 02, 2018 1:59 pm
Napisal/-a Milenko
Hvala,res je. ;) Se trudim se naprej,idej mi se ni zmanjkalo :lol:

Objavljeno: Pe Feb 02, 2018 5:53 pm
Napisal/-a rtv servis kapele
Vidi se, da kar naprej ustvarjaš.