Midi Component Bug (erledigt)

Support-Forum für Deutschsprachige, die in ihrer Muttersprache schreiben möchten.

Moderator: Benj

DirkB
Posts: 108
Joined: Wed Feb 08, 2012 2:45 pm
Has thanked: 7 times
Been thanked: 9 times
Contact:

Midi Component Bug (erledigt)

Postby DirkB » Tue Jan 15, 2019 9:53 am

Hallo,

ich habe schon 2 mal den Fehler gepostet aber keine Antwort erhalten,
daher noch ein Post im deutschen Forum.
Es gibt einen Bug im Midi Component. Ein Status-Byte 0xF1 und höher
ergibt eine Variable von 0x00. Es ist nicht möglich Realtime-Messages
zu empfangen. Das gilt für alle Versionen von Flowcode.

Hier der Custom Code "ReceiveMIDI"

Code: Select all

     MX_UINT8 idx, current_data = 0;

   %a_Received_MIDI[0] = 0;                        //Reset Status Byte
   %a_Received_MIDI[3] = 0;                        //Reset Real Time Message

     for (idx = 1; idx < 3; idx++)
     {
      %a_Received_MIDI[idx] = 255;                  //Clear old MIDI data
   }

   for (idx = 0; idx < 3; idx++)
   {
      current_data = %a_UART_Receive(cTimeout);
      if (current_data == 255)
         return 0;                              //Timeout Occurred

      if (current_data >= 0xf8)                     //If real time message received
         %a_Received_MIDI[3] = current_data;
      else                                    //Else normal message / data
         %a_Received_MIDI[idx] = current_data;
   }
   return %a_Received_MIDI[0];                       //Return status byte


Gibt es eventuell einen Time Out bevor eine Realtime Message empfangen wird?
Kann man den Code ändern damit das funktioniert?
Auch sollte es möglich sein, das man nur 1 oder auch nur 2 Bytes senden kann, da ein Program Change
nur aus 2 und eine Realtime Message nur aus 1 Byte, das Status Byte besteht. Das ist momentan nicht möglich, man muss
alle 3 Bytes senden. So ist das Programmieren einer Remote Control und auch ein Midi-Panic nicht möglich.
Alle anderen Midi-Funktionen sind bei mir kein Problem.

Ich habe sehr viele Programme mit Flowcode 5 programmiert und benötige auch ein Bug Fix für Ver. 5, also
eigentlich für alle Flowcode Versionen bis Flowcode 8. Ein Import von Ver. 5 ist nicht möglich, da das Programm
danach etwas größer wird und nicht mehr in den Chip passt. Ich verwende sehr oft den PIC 12F1840 und den
PIC 16F1825. Bitte helft mir.

Vielen Dank

Dirk
Last edited by DirkB on Wed Jan 16, 2019 3:47 pm, edited 1 time in total.

User avatar
Benj
Matrix Staff
Posts: 14373
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4447 times
Been thanked: 4150 times
Contact:

Re: Midi Component Bug

Postby Benj » Wed Jan 16, 2019 1:16 pm

Hallo Dirk,

Please refer to this thread.
viewtopic.php?f=76&t=20828

DirkB
Posts: 108
Joined: Wed Feb 08, 2012 2:45 pm
Has thanked: 7 times
Been thanked: 9 times
Contact:

Re: Midi Component Bug (erledigt)

Postby DirkB » Wed Jan 16, 2019 3:51 pm

Hallo,

ich habe den angepassten Code der Midi_Component wie folgt editiert:

Code: Select all

     MX_UINT8 idx, current_data = 0;

   %a_Received_MIDI[0] = 0;                        //Reset Status Byte
   //%a_Received_MIDI[3] = 0;                        //Reset Real Time Message   (ausgeklammert)

     for (idx = 1; idx < 3; idx++)
     {
      %a_Received_MIDI[idx] = 255;                  //Clear old MIDI data
   }

   for (idx = 0; idx < 3; idx++)
   {
      current_data = %a_UART_Receive(cTimeout);
      if (current_data == 255)
         return 0;                              //Timeout Occurred

      if (current_data >= 0xf8)                     //If real time message received     (geändert auf DataByte [0])
         %a_Received_MIDI[0] = current_data;
      else                                    //Else normal message / data
         %a_Received_MIDI[idx] = current_data;
   }
   return %a_Received_MIDI[0];                       //Return status byte


Nun funktioniert alles wie es soll.

Vielen Dank an alle

Dirk
These users thanked the author DirkB for the post:
Benj (Wed Jan 16, 2019 6:47 pm)
Rating: 5.26%