Midi Component Bug (erledigt)

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

Moderator: Benj

Post Reply
DirkB
Posts: 116
Joined: Wed Feb 08, 2012 2:45 pm
Has thanked: 7 times
Been thanked: 11 times
Contact:

Midi Component Bug (erledigt)

Post by DirkB »

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: 15312
Joined: Mon Oct 16, 2006 10:48 am
Location: Matrix TS Ltd
Has thanked: 4803 times
Been thanked: 4314 times
Contact:

Re: Midi Component Bug

Post by Benj »

Hallo Dirk,

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

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

Re: Midi Component Bug (erledigt)

Post by DirkB »

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

Post Reply