Update: I added an update to the sample MS-Access computer code in the next post to handle the fact that the Piano Roll does not have room for the full display of ISO standard and BIAB representation side by side.

Hopefully this post brings quick closure to this issue. I will create a link directly to this post in Post #1 at the very top.

Regarding the solution I came up with in the prior post I went ahead and computer programmed it. I suspect it is the (quickest, easiest, cheapest and maybe even the best) solution to this confusion-creating time-wasting poor-communication problem. I do not know C so I programmed it in MS-Access. I tested it and it works. It took 30 minutes to complete. After the same function is programmed in C all that needs to be done is make room for the wider output at each display location in BIAB then insert the function call immediately before the move of the display-variable to the display.
This is the command
Code:
Display_variable = funcProperCommunication(Display_variable). 

The test results and the complete code are below. The small letter "b" stands for BIAB representation.

Test Results of the MSGBOX command:
C5 becomes (C4 bC5) putting the small letter "b" first avoids the C flat confusion that (C4 Cb5) creates.
C0 becomes (C-1 bC0)
C9 becomes (C8 bC9)
A5 becomes (A4 bA5)

To be honest I am not sure why anyone would want to know the BIAB representation. Maybe someone would want it because of their use with other programs and export/imports involved. This solution leaves all such code untouched, respects the ISO standard, provides the needed info and does not rock the boat (very low risk).

Code:
Private Sub cmdTempTest_Click()  'Test function
    Dim strExampleCode As String
    strExampleCode = funcJWInputBox(14, "C5", "Enter the BIAB code such as C5 for Midde C")
    MsgBox funcProperCommunication(strExampleCode) 'Test Command
End Sub

Public Function funcProperCommunication(strNon_ISO_Code As String) As String
    Dim strISO_Code As String
    Dim intISO_OctaveNumber As Integer
    Dim strDisplayCode As String
    Dim strNote As String
    Dim strBIAB_OctaveNumber As String
    Dim intBIAB_OctaveNumber As Integer
    Dim strBIAB_OutCode As String
    
    strNote = Left(strNon_ISO_Code, 1)
    strBIAB_OctaveNumber = Right(strNon_ISO_Code, 1)
    intBIAB_OctaveNumber = strBIAB_OctaveNumber
    strBIAB_OutCode = "b" & strNote & strBIAB_OctaveNumber
    intISO_OctaveNumber = intBIAB_OctaveNumber - 1
    strISO_Code = strNote & intISO_OctaveNumber
    strDisplayCode = "(" & strISO_Code & " " & strBIAB_OutCode & ")"
    funcProperCommunication = strDisplayCode
End Function

Last edited by bowlesj; 12/23/20 05:58 AM.

John Bowles
My playing in my 20s:
https://www.reverbnation.com/johnbowles