INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
MIDI Software optimieren
22.11.2018, 07:29
Beitrag #1
Music MIDI Software optimieren
Hallo zusammen,
ich bin neu hier im Forum bräuchte einmal eure Hilfe. Ich habe einen Arduino, auf dem eine Software läuft mit der sich MIDI Program Change Befehle nacheinander via Taster Betätigung an ein externes Gerät senden lassen.
Ein kleines 4 Zeichen Display zählt dabei nach jedem Befehl eine Stelle weiter hoch. Ich hätte die Anzeige am Display aber gerne etwas erweitert. Die hinteren Stellen am Display sollen weiterhin hochzählen (quasi von 01-99) und die vorderen zwei Stellen am Display sollen jeweils einen Zahl anzeigen, welche ich jedem Befehl manuell zuordnen kann.
Zum Beispiel:
{0x02, 0xC1, 0x1}, + zeige "Zahl X" am vorderen Display an
(Beispiel Bild im Anhang)

Für einen Profi sicher kein Problem, nur für mich als Einsteiger etwas zu schwierig. Das Sketch befindet sich im Anhang.
Ich wäre total dankbar, wenn mir jemand weiterhelfen kann!

Viele Grüße
solarmusic


Angehängte Datei(en) Thumbnail(s)
   

.zip  midi software.zip (Größe: 1,94 KB / Downloads: 41)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 12:50
Beitrag #2
RE: MIDI Software optimieren
Setze bitte Deinen Sketch direkt ins Forum. Stelle ihn bitte in Codetags.
Wie das geht, steht hier.

Aus dem Bild werde ich nicht schlau. Da das auch Text ist, kannst Du den auch direkt in Codetags hier einstellen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 16:54
Beitrag #3
RE: MIDI Software optimieren
Code:
*/
#define debug
#include "debug.h"
#include "midi.h"
#include <TM1637.h>
#include <avdweb_Switch.h>

const byte SWITCH_1 = 4;
const byte LED_1 = 5;
const byte SWITCH_2 = 6;
const byte LED_2 = 7;
const byte DISPLAY_CLK = 2;
const byte DISPLAY_DIO = 3;

// Hier stehen die zu sendenden Daten. Erstes Byte gibt jeweils die Länge der Bytes an.
const byte PROGRAM_COUNT = 20;
const byte MAX_PROGRAM_LENGTH = 16;
const byte SEND_ARRAY[PROGRAM_COUNT][MAX_PROGRAM_LENGTH] = {
  {0x02, 0xC1, 0x01},
  {0x02, 0xC1, 0x02},
  {0x02, 0xC1, 0x03},
  {0x04, 0xC1, 0x04, 0xC2, 0x04},
  {0x04, 0xC1, 0x05, 0xC2, 0x04},
  {0x04, 0xC1, 0x06, 0xC2, 0x04},
  {0x04, 0xC1, 0x07, 0xC2, 0x04},
  {0x04, 0xC1, 0x08, 0xC2, 0x04},
  {0x04, 0xC1, 0x09, 0xC2, 0x04},
  {0x04, 0xC1, 0x0A, 0xC2, 0x04},
  {0x04, 0xC1, 0x0B, 0xC2, 0x04},
  {0x04, 0xC1, 0x0C, 0xC2, 0x04},
  {0x04, 0xC1, 0x0D, 0xC2, 0x04},
  {0x04, 0xC1, 0x0E, 0xC2, 0x04},
  {0x04, 0xC1, 0x0F, 0xC2, 0x04},
  {0x04, 0xC1, 0x10, 0xC2, 0x04},
  {0x04, 0xC1, 0x11, 0xC2, 0x04},
  {0x04, 0xC1, 0x12, 0xC2, 0x04},
  {0x02, 0xC1, 0x13}
};

TM1637 display(DISPLAY_CLK, DISPLAY_DIO);
Midi midi;
Switch switch_1 = Switch(SWITCH_1);
Switch switch_2 = Switch(SWITCH_2);
byte pos = 0;

void setup() {
  initLEDs();
  midi.initMidi();
  initDebug();
  display.init();
  display.set(BRIGHTEST); // set brightness to high
  display.clearDisplay();
  pos = 0;
  pollSwitches();
  sendActualMidiCommand(pos);
}

void loop() {
  pollSwitches();
  if (switch_1.pushed()) {
    dbgOutLn("p1");
    pos += 1;
    if (pos >= PROGRAM_COUNT) {
      pos = 0;
    }
    sendActualMidiCommand(pos);
  }
  if (switch_2.pushed()) {
    dbgOutLn("p2");
    if (pos == 0) {
      pos = PROGRAM_COUNT;
    }
    pos -= 1;
    sendActualMidiCommand(pos);
  }
}

void sendActualMidiCommand(byte position) {
  dbgOut("send");
  dbgOut2(position, DEC);
  dbgOutLn();
  midi.sendMidiCommands(SEND_ARRAY[position]);

  display.clearDisplay();
  byte data = position + 1;
  if (data >= 10) {
    display.display(2, data / 10);
  }
  display.display(3, data % 10);
}

void initLEDs() {
  pinMode(LED_1, OUTPUT);
  pinMode(LED_2, OUTPUT);
  allLEDsOff();
}

void pollSwitches() {
  switch_1.poll();
  switch_2.poll();
}

void setLEDs(byte led) {
  allLEDsOff();
  digitalWrite(led, 1);
}

void allLEDsOff() {
  digitalWrite(LED_1, 0);
  digitalWrite(LED_2, 0);
}
Code:
#include <Arduino.h>
#include <inttypes.h>

#define BAUDRATE 31250
//#define BAUDRATE 57600

class Midi {
  private:
    const byte PROGRAM_CHANGE = 0xC0;
    const byte CONTROLLER_CHANGE = 0xB0;
  public:
    void changeController(byte channel, byte ctrl, byte data) {
      Serial.write(PROGRAM_CHANGE + channel);
      Serial.write(ctrl);
      Serial.write(data);
    }

    void changeProgram(byte channel, byte program) {
      Serial.write(PROGRAM_CHANGE + channel);
      Serial.write(program);
    }

    void initMidi() {
      setMidiBaudrate();
    }

    void setMidiBaudrate() {
      Serial.begin(BAUDRATE);
    }

    void sendMidiCommands(byte commands[], byte lengthOfCommands) {
      for (byte i = 0; i < lengthOfCommands; i++) {
        Serial.write(commands[i]);
      }
    }

    void sendMidiCommands(byte commands[]) {
      byte lengthOfCommands = commands[0];
      for (byte i = 0; i < lengthOfCommands; i++) {
        Serial.write(commands[i+1]);
      }
    }
};

Das ist der Code für das Sketch und die midi.h Datei.
Der Screenshot von mir bezieht sich auf den "Program Count" Teil

Liebe Grüße
solarmusic
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 17:02
Beitrag #4
RE: MIDI Software optimieren
So, wie Du auf 2 und 3 (was wohl Positionen sein sollen) etwas ausgibst, kannst Du das doch auch auf Position 0 oder 1.
Wenn Du uns einen Link zur TM1637-Lib gibst, könnte man da mal rein schauen.
Wo soll die Zahl/das Zeichen denn her kommen?

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 17:39 (Dieser Beitrag wurde zuletzt bearbeitet: 22.11.2018 17:41 von solarmusic.)
Beitrag #5
RE: MIDI Software optimieren
Die TM1637.h Libary heißt offiziel "Grove 4-Digit Display" und ist einfach eingebunden.

Die Zahl soll für mich nur als Orientierung dienen und soll einfach von mir zusätzlich zu jedem Program Change Befehl manuell im Sketch eingegeben werden.
Sie soll mir nur als Überblick dienen

sorry... alles etwas kompliziert zu beschreiben Smile
Gruß solarmusic
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 17:58
Beitrag #6
RE: MIDI Software optimieren
Hallo,

Also die midi Lib brauchst du nicht wirklich.
Du kannst dir eigendlich ganz einfach deinen eigenen Midi Controller programmieren.
Schau mal hier.
Der Götz zeigt das für absolute Anfänger.
Da lernst du nebenbei spielend leicht die Grundlagen.

Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
22.11.2018, 18:20
Beitrag #7
RE: MIDI Software optimieren
(22.11.2018 17:39)solarmusic schrieb:  Die TM1637.h Libary heißt offiziel "Grove 4-Digit Display" und ist einfach eingebunden.

Die Zahl soll für mich nur als Orientierung dienen und soll einfach von mir zusätzlich zu jedem Program Change Befehl manuell im Sketch eingegeben werden.
Sie soll mir nur als Überblick dienen

sorry... alles etwas kompliziert zu beschreiben Smile
Gruß solarmusic
Na, wenn die einfach eingebunden ist, dann ist es ja wohl kein Problem die weitere Zahl auszugeben.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Programmierung eines MIDI-Controllers Schraubfix 17 1.791 25.02.2019 12:24
Letzter Beitrag: Tommy56
  Drehgeber wie Iduino SE055 - Software- oder Hardware-Problem? Arduinero 12 1.143 24.01.2019 13:55
Letzter Beitrag: Bitklopfer
  Serielle Daten Windigipet 2018 Software, Arduino Mega 2560 verarbeiten/melden Christian_Moba-Arduino 11 2.661 15.09.2018 09:43
Letzter Beitrag: MicroBahner
  Code für Speicher optimieren Sasch600xt 35 4.539 31.08.2018 12:41
Letzter Beitrag: Sasch600xt
  Arduino Software auf rohen 328 mit AVR ISP MK2? janoslon421 8 1.781 07.06.2018 17:47
Letzter Beitrag: Mathias
  MIDI Kontroller programmieren Baimie 9 2.080 16.05.2018 09:12
Letzter Beitrag: Tommy56
  Programmieren, welche Software ist möglich W-P-Grimma 5 1.941 03.04.2018 16:33
Letzter Beitrag: Tommy56
  Arduino Software ohne Bibliotheken-Manager bertl68 3 1.656 02.01.2018 18:36
Letzter Beitrag: Tommy56
  Arduino Software Serial - Delay notwendig? Zipfel1 18 4.449 02.01.2018 11:59
Letzter Beitrag: Tommy56
  Probleme mit der Software Thor Wallhall 8 2.772 31.12.2017 11:34
Letzter Beitrag: Tommy56

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste