{"action":"opened","issue":{"url":"https://api.github.com/repos/rsjaffe/MIDI2LR/issues/3","labels_url":"https://api.github.com/repos/rsjaffe/MIDI2LR/issues/3/labels{/name}","comments_url":"https://api.github.com/repos/rsjaffe/MIDI2LR/issues/3/comments","events_url":"https://api.github.com/repos/rsjaffe/MIDI2LR/issues/3/events","html_url":"https://github.com/rsjaffe/MIDI2LR/issues/3","id":108550770,"number":3,"title":"Send settings to MIDI controller","user":{"login":"rsjaffe","id":1431301,"avatar_url":"https://avatars.githubusercontent.com/u/1431301?v=3","gravatar_id":"","url":"https://api.github.com/users/rsjaffe","html_url":"https://github.com/rsjaffe","followers_url":"https://api.github.com/users/rsjaffe/followers","following_url":"https://api.github.com/users/rsjaffe/following{/other_user}","gists_url":"https://api.github.com/users/rsjaffe/gists{/gist_id}","starred_url":"https://api.github.com/users/rsjaffe/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rsjaffe/subscriptions","organizations_url":"https://api.github.com/users/rsjaffe/orgs","repos_url":"https://api.github.com/users/rsjaffe/repos","events_url":"https://api.github.com/users/rsjaffe/events{/privacy}","received_events_url":"https://api.github.com/users/rsjaffe/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-09-27T17:55:54Z","updated_at":"2015-09-27T17:55:54Z","closed_at":null,"body":"_From @rsjaffe on September 13, 2015 17:44_\n\nCertain settings could improve the interface between the MIDI controller and MIDI2LR, such as making switches momentary instead of toggle.\r\n\r\nThis would involve sending SysEx messages that are appropriate for the given controller. Behringer's BCF2000 and BCR2000 are fairly common for this application because they're cheap. The following should work for the Behringer. The MIDI messages are based on the [documentation from Mountain Utilities version 1.2.7](http://mountainutilities.eu/system/files/download/BC%20MIDI%20Implementation%201.2.7.zip).\r\n\r\nI don't have the compiler or enough knowledge of the JUCE library to test this myself, so regard this as a suggested implementation that might need some refining.\r\n\r\nEverything with digits mixed with capital letters is hexadecimal. Lower case letters are nibbles that need to be replaced with a value, based on the information given after the hex string. lines of periods is where character data goes.\r\n\r\nAll SysEx messages for the BCF and BCR have the following format\r\n`F00020320x1yccddF7`, where 0x is the device ID (0..15). 0x can be replaced with 7F, which is \"any id\". 1y is model ID, where 14 is BCF2000 and 15 is BCR2000. 1y can be replaced with 7F, which is \"any model\". cc is the command, dd is the data (zero or more bytes), F7 is the end of SysEx line.\r\n\r\n# Step 1. \r\n\r\nAsk for system model.\r\n`F00020320x7F01F7`\r\nthe x is replaced by the device ID for the attached controller.\r\n\r\nIf a Behringer is attached, you'll receive a response distinguishing the BCF from BCR, such as\r\n`F00020320x1y02.............F7`, where the data after 02 will be something like *BCF2000 1.10* and 1y will be replaced by 14 or 15, depending upon the model..\r\n\r\nThis step determines which file is used for programming the Behringer.\r\n\r\n# Step 2.\r\n\r\nSend program from appropriate text file (e.g., BCF2000.txt). If can't identify the controller or the controller has an identity that doesn't have a corresponding text file, show an error to the user and abandon the programming effort. When programming, one SysEx is sent per line of text, as follows:\r\n\r\n`F00020320x1y20mmll.............F7`, where 0x is the device ID, 1y the model (14 or 15). mm and ll comprises the line number, where ll is the LSB in the form 0bbbbbbb, and mm is the MSB as 0bbbbbbb. The first line is line 0.\r\n\r\nThe Behringer will reply to each line with `F00020320x1y21mmlleeF7`, where x,y,m,and l have the same meaning as in the message sent, and ee is the error code. If ee is 00, all is well, and can continue on. If ee is non-zero, should send one more line with the text *$end* , then set the Behringer back to one of its presets, e.g., `F00020320x1y2200F7` selects preset 1 (the preset on the Behringer is numbered 1-32, but in SysEx is numbered 0-31, so 00 represents preset 1). Selecting a preset wipes out what was sent, which is what we want to do in case of an error.\r\n\r\n# Instructions to users\r\n\r\nI would instruct users to edit the second-to-last line of the txt file (currently *$store 2*) if they want the preset in another slot besides number 2. Also, would rely on the user to select the correct preset on their controller rather than sending a \"change to preset\" command from the application, as there may be use cases in which the user needs a different preset from the one programmed by the application.\r\n\r\n\r\n\n\n_Copied from original issue: thegouger/MIDI2LR#44_"}}