MIDI Stop Controller V1.0 suitable for driving Hauptwerk digital organ software. Written for the KL25Z uses BusInOut and will drive up to 16 illuminated push buttons each switch uses a single I/O pin to both drive the LED and act as a switch input. Pressing a button will alternately send MIDI note on / off messages and turn the LED on or off. If corresponding MIDI note on/off messages are received these will be used to drive the LEDs in preference to the locally generated LED signals. The MIDI channel used to send can be selected by jumpers on 4 pins of the J2 header.

Dependencies:   mbed

Committer:
djbottrill
Date:
Sat Sep 14 21:32:06 2013 +0000
Revision:
0:aac55e1fc12f
V1.0 MIDI Stop Controller

Who changed what in which revision?

UserRevisionLine numberNew contents of line
djbottrill 0:aac55e1fc12f 1 /* Copyright (c) 2010-2011 mbed.org, MIT License
djbottrill 0:aac55e1fc12f 2 *
djbottrill 0:aac55e1fc12f 3 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software
djbottrill 0:aac55e1fc12f 4 * and associated documentation files (the "Software"), to deal in the Software without
djbottrill 0:aac55e1fc12f 5 * restriction, including without limitation the rights to use, copy, modify, merge, publish,
djbottrill 0:aac55e1fc12f 6 * distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the
djbottrill 0:aac55e1fc12f 7 * Software is furnished to do so, subject to the following conditions:
djbottrill 0:aac55e1fc12f 8 *
djbottrill 0:aac55e1fc12f 9 * The above copyright notice and this permission notice shall be included in all copies or
djbottrill 0:aac55e1fc12f 10 * substantial portions of the Software.
djbottrill 0:aac55e1fc12f 11 *
djbottrill 0:aac55e1fc12f 12 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
djbottrill 0:aac55e1fc12f 13 * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
djbottrill 0:aac55e1fc12f 14 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
djbottrill 0:aac55e1fc12f 15 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
djbottrill 0:aac55e1fc12f 16 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
djbottrill 0:aac55e1fc12f 17 */
djbottrill 0:aac55e1fc12f 18
djbottrill 0:aac55e1fc12f 19 #define NUMBER_OF_LOGICAL_ENDPOINTS (16)
djbottrill 0:aac55e1fc12f 20 #define NUMBER_OF_PHYSICAL_ENDPOINTS (NUMBER_OF_LOGICAL_ENDPOINTS * 2)
djbottrill 0:aac55e1fc12f 21
djbottrill 0:aac55e1fc12f 22 /* Define physical endpoint numbers */
djbottrill 0:aac55e1fc12f 23
djbottrill 0:aac55e1fc12f 24 /* Endpoint No. */
djbottrill 0:aac55e1fc12f 25 /* ---------------- */
djbottrill 0:aac55e1fc12f 26 #define EP0OUT (0)
djbottrill 0:aac55e1fc12f 27 #define EP0IN (1)
djbottrill 0:aac55e1fc12f 28 #define EP1OUT (2)
djbottrill 0:aac55e1fc12f 29 #define EP1IN (3)
djbottrill 0:aac55e1fc12f 30 #define EP2OUT (4)
djbottrill 0:aac55e1fc12f 31 #define EP2IN (5)
djbottrill 0:aac55e1fc12f 32 #define EP3OUT (6)
djbottrill 0:aac55e1fc12f 33 #define EP3IN (7)
djbottrill 0:aac55e1fc12f 34 #define EP4OUT (8)
djbottrill 0:aac55e1fc12f 35 #define EP4IN (9)
djbottrill 0:aac55e1fc12f 36 #define EP5OUT (10)
djbottrill 0:aac55e1fc12f 37 #define EP5IN (11)
djbottrill 0:aac55e1fc12f 38 #define EP6OUT (12)
djbottrill 0:aac55e1fc12f 39 #define EP6IN (13)
djbottrill 0:aac55e1fc12f 40 #define EP7OUT (14)
djbottrill 0:aac55e1fc12f 41 #define EP7IN (15)
djbottrill 0:aac55e1fc12f 42 #define EP8OUT (16)
djbottrill 0:aac55e1fc12f 43 #define EP8IN (17)
djbottrill 0:aac55e1fc12f 44 #define EP9OUT (18)
djbottrill 0:aac55e1fc12f 45 #define EP9IN (19)
djbottrill 0:aac55e1fc12f 46 #define EP10OUT (20)
djbottrill 0:aac55e1fc12f 47 #define EP10IN (21)
djbottrill 0:aac55e1fc12f 48 #define EP11OUT (22)
djbottrill 0:aac55e1fc12f 49 #define EP11IN (23)
djbottrill 0:aac55e1fc12f 50 #define EP12OUT (24)
djbottrill 0:aac55e1fc12f 51 #define EP12IN (25)
djbottrill 0:aac55e1fc12f 52 #define EP13OUT (26)
djbottrill 0:aac55e1fc12f 53 #define EP13IN (27)
djbottrill 0:aac55e1fc12f 54 #define EP14OUT (28)
djbottrill 0:aac55e1fc12f 55 #define EP14IN (29)
djbottrill 0:aac55e1fc12f 56 #define EP15OUT (30)
djbottrill 0:aac55e1fc12f 57 #define EP15IN (31)
djbottrill 0:aac55e1fc12f 58
djbottrill 0:aac55e1fc12f 59 /* Maximum Packet sizes */
djbottrill 0:aac55e1fc12f 60
djbottrill 0:aac55e1fc12f 61 #define MAX_PACKET_SIZE_EP0 (64)
djbottrill 0:aac55e1fc12f 62 #define MAX_PACKET_SIZE_EP1 (64)
djbottrill 0:aac55e1fc12f 63 #define MAX_PACKET_SIZE_EP2 (64)
djbottrill 0:aac55e1fc12f 64 #define MAX_PACKET_SIZE_EP3 (1023)
djbottrill 0:aac55e1fc12f 65 #define MAX_PACKET_SIZE_EP4 (64)
djbottrill 0:aac55e1fc12f 66 #define MAX_PACKET_SIZE_EP5 (64)
djbottrill 0:aac55e1fc12f 67 #define MAX_PACKET_SIZE_EP6 (64)
djbottrill 0:aac55e1fc12f 68 #define MAX_PACKET_SIZE_EP7 (64)
djbottrill 0:aac55e1fc12f 69 #define MAX_PACKET_SIZE_EP8 (64)
djbottrill 0:aac55e1fc12f 70 #define MAX_PACKET_SIZE_EP9 (64)
djbottrill 0:aac55e1fc12f 71 #define MAX_PACKET_SIZE_EP10 (64)
djbottrill 0:aac55e1fc12f 72 #define MAX_PACKET_SIZE_EP11 (64)
djbottrill 0:aac55e1fc12f 73 #define MAX_PACKET_SIZE_EP12 (64)
djbottrill 0:aac55e1fc12f 74 #define MAX_PACKET_SIZE_EP13 (64)
djbottrill 0:aac55e1fc12f 75 #define MAX_PACKET_SIZE_EP14 (64)
djbottrill 0:aac55e1fc12f 76 #define MAX_PACKET_SIZE_EP15 (64)
djbottrill 0:aac55e1fc12f 77
djbottrill 0:aac55e1fc12f 78 /* Generic endpoints - intended to be portable accross devices */
djbottrill 0:aac55e1fc12f 79 /* and be suitable for simple USB devices. */
djbottrill 0:aac55e1fc12f 80
djbottrill 0:aac55e1fc12f 81 /* Bulk endpoints */
djbottrill 0:aac55e1fc12f 82 #define EPBULK_OUT (EP2OUT)
djbottrill 0:aac55e1fc12f 83 #define EPBULK_IN (EP2IN)
djbottrill 0:aac55e1fc12f 84 /* Interrupt endpoints */
djbottrill 0:aac55e1fc12f 85 #define EPINT_OUT (EP1OUT)
djbottrill 0:aac55e1fc12f 86 #define EPINT_IN (EP1IN)
djbottrill 0:aac55e1fc12f 87 /* Isochronous endpoints */
djbottrill 0:aac55e1fc12f 88 #define EPISO_OUT (EP3OUT)
djbottrill 0:aac55e1fc12f 89 #define EPISO_IN (EP3IN)
djbottrill 0:aac55e1fc12f 90
djbottrill 0:aac55e1fc12f 91 #define MAX_PACKET_SIZE_EPBULK (MAX_PACKET_SIZE_EP2)
djbottrill 0:aac55e1fc12f 92 #define MAX_PACKET_SIZE_EPINT (MAX_PACKET_SIZE_EP1)
djbottrill 0:aac55e1fc12f 93 #define MAX_PACKET_SIZE_EPISO (MAX_PACKET_SIZE_EP3)