MIDI tester

Uporabniški avatar
Milenko
Prispevkov: 1200
Pridružen: Pe Nov 08, 2002 9:56 am
Kraj: Glavica Milenko, Maribor, tel:068/164-387
Kontakt:

MIDI tester

Odgovor 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);
}
Nimate dovoljenj za ogled prilog tega prispevka.
Zadnjič spremenil Milenko, dne Sr Jan 31, 2018 11:17 am, skupaj popravljeno 1 krat.
tehnologija za prihodnost.

www.algenera.com
Uporabniški avatar
Milenko
Prispevkov: 1200
Pridružen: Pe Nov 08, 2002 9:56 am
Kraj: Glavica Milenko, Maribor, tel:068/164-387
Kontakt:

foto

Odgovor 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.
tehnologija za prihodnost.

www.algenera.com
Gost

Re: foto

Odgovor 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.
Uporabniški avatar
Milenko
Prispevkov: 1200
Pridružen: Pe Nov 08, 2002 9:56 am
Kraj: Glavica Milenko, Maribor, tel:068/164-387
Kontakt:

hvala

Odgovor Napisal/-a Milenko »

Hvala,res je. ;) Se trudim se naprej,idej mi se ni zmanjkalo :lol:
tehnologija za prihodnost.

www.algenera.com
rtv servis kapele
Prispevkov: 2903
Pridružen: So Maj 31, 2003 9:36 am
Kraj: RTV servis, foto in video st. Marjan Kapele Kočevska c.13, 1330 Kočevje, 01 8954 777, 041 344 999
Kontakt:

Odgovor Napisal/-a rtv servis kapele »

Vidi se, da kar naprej ustvarjaš.
Odgovori