Agregar MIDI a viejos órganos casa (7 / 9 paso)

Paso 7: Cómo funciona

¿Cómo el microcontrolador convierte la información de los registros de cambio en notas MIDI?
Como se describe anteriormente (en cambio-en-midi-description.rtf, disponible en GitHub), el microcontrolador hace que los registros de cambio al cierre de los datos en cada entrada y luego cambios de todos los 64 bits de datos de los registros. Aquí es el proceso para convertir los datos de registro de cambio de notas:

Nota: este proceso se ejecuta continuamente en un bucle, miles de veces por segundo

1. los registros de desplazamiento son trabados, leyendo la 61inputs de una vez.

Nota: puertas lógicas siempre necesitan una referencia para alta o baja. Generalmente lo mejor es proporcionar una referencia a la "alta". Esto era necesario para los primeros circuitos integrados se llama "lógica de emisor acoplado" o "TTL". Fue mucho menos desperdicio de energía a tirar entradas en estos chips que intente sacarlos bajo. Cuando decimos "tirar" queremos conectar una clavija en una fuente de corriente o un lavabo a través de un resistor. Por lo general de 10K Ohm se utiliza. Así, en nuestro caso, cada entrada requiere una conexión a la tensión de alimentación (5 V) a través de una resistencias de 10K. Se trata de un montón de resistencias, pero por suerte, resistencias son muy baratas. Por lo tanto, cuando cierre en las entradas, si ninguna tecla es presionada un estado "alto" lógica se leerá. Conectamos el bus compartido a tierra (en realidad un pin en el microcontrolador será una salida baja, que actúa como un sumidero de corriente). Si se pulsa una tecla, "tira" la clavija de entrada de registro de cambio a un estado lógico "bajo". Esto es una clave "on" es leído como "off", que es al revés, pero nos podemos arreglar esto fácilmente un poco más adelante.

2. cambio de registro de datos se almacenan en una matriz de 8 bytes de la clave actual y anterior estado clave.

Una vez que se cierre los registros de cambio, comenzamos enviando pulsos de reloj. Cada pulso de reloj hace que el estado del registro de desplazamiento para cambiar de puesto un pedacito hacia el pin de salida. Cada salida de virutas está conectada a la entrada del siguiente chip. Esto permite los datos para moverse secuencialmente a través de todas las fichas. Pero ¿cómo tratamos con el "en es de" y "off"? El 74hc165 proporciona dos salidas serie - una salida normal y una salida invertida. Conectamos el microcontrolador a la salida invertida del último registro de desplazamiento. Este cambia la entrada de los Estados a lo que queremos - tecla abajo es "on" o "1" y clave para arriba son "off" o "0".

Estamos utilizando un microcontrolador de 8 bits. Funciona mejor y más eficientemente con 8 bits (un byte) a la vez. Así, leemos el cambio registro de datos un byte a la vez.  Los ocho bits en un byte a almacenar el estado clave de ocho teclas. Necesitamos 8 bytes para almacenar los Estados claves de todas 61 teclas.

Tenemos que prestar mucha atención a cómo los datos provienen de los registros de cambio. Hemos conectado nuestros chips así que el primer pin primeros registros (entrada A) está conectado a la tecla de la derecha - que llamamos la tecla "1". La última clave es clave "61". Por lo tanto, vamos a obtener de los Estados claves de los registros en la derecha a la izquierda orden. Así que el primer byte leído realmente va a ser el último cinco llaves (y las tres entradas no utilizadas). Queríamos que nuestros bytes a ser almacenado en izquierda a derecha orden, tuvimos también que asegurarse de que ponemos el primer bit recibido en cada octeto en el bit más a la izquierda del byte de estado clave.

Puede hacerlo cualquier orden que desee, pero tienes que ser constante!

3. principales Estados se convierten en Estados de empuje; los Estados de empuje se almacenan en una matriz de bytes de 61 con nota sobre, nota apagado y ningún cambio.

Así pues, tenemos 8 bytes digno de Estados clave para los 61 teclas. Pero esto no es exactamente lo que necesitamos para enviar comandos MIDI. MIDI causa notas al sonido con un comando "Nota sobre" y la nota permanece encendida hasta que se envía "note off". Así que tenemos que convertir el estado dominante en un estado de la prensa. Queremos saber cuando se pulsa una tecla para que podamos encender la nota y queremos saber cuando una tecla ha sido liberada por lo que podremos apagar la nota. No queremos enviar "Nota sobre" miles de veces por segundo. Que inundaría los autobuses MIDI con datos y no funcionaría.

Para generar Estados de empuje de Estados clave tenemos que guardar la clave actual y el anterior estado clave. Comparamos los dos cada exploración bucle y ver si el estado cambiado. Si fue a la baja, luego empuje hacia abajo está registrado y se envía una "Nota sobre". Si fue alto a bajo, luego una tecla arriba está registrada y se envía una nota de"apagado". Si nada cambia, no hay nuevos datos de MIDI se envían.

Computamos la información de nota MIDI por almacenar un valor más bajo de nota y luego agregando el índice de la matriz para obtener la nota real. Esta es la forma más sencilla de aproximarse. Si usted quiere conseguir lujo necesita a algún tipo de tabla de búsqueda.

4. el proceso se repite. Nos aseguramos de que esperamos una cantidad mínima de tiempo entre escaneos del teclado. Si explora muy rápidamente vamos a recoger lo que se llama "clave bounce" - ruido eléctrico generado cuando los contactos abren y cierran. Si lo leemos obtenemos información falsa del estado dominante. Todo lo que tenemos que hacer es esperar un poco más largo el período típico "rebote". Si no ha transcurrido aún el período de rebote (10 microsegundos en este proyecto), nosotros simplemente salir del bucle de exploración y vuelva a intentarlo.

¿Cómo realmente nos convertir Estados clave en los Estados de empuje?
En este proyecto, podemos leer que el cambio se registra utilizando el software. Esto se llama "bit golpeando". No es el método más rápido. Hay una instalación de hardware en el chip ATMEGA llamado el SPI (Serial/interfaz paralela) que podría hacerlo mucho más rápido. Sin embargo, es más difícil de entender y resulta que leyendo entradas humanos golpeando poco es mucho rápido. Nos aseguramos de que es rápido utilizando el microcontrolador tan eficientemente como sea posible. Hacemos todas nuestras comparaciones de estado clave con operadores bit a bit. Los operadores bit a bit que utilizamos son "<<" desplazamiento a la izquierda, ">>" shift derecho. "^" OR exclusiva (XOR) y "y" XOR y se usa para ver cuándo estado clave dentro de un byte de Estado ha cambiado en comparación con el estado anterior. Y se utiliza para seleccionar los bits de un byte mediante una máscara de bits. Los operadores de desplazamiento se utilizan para mover un poco de máscara de bits izquierda o derecha dentro de un byte para seleccionar un bit específico para comparar. Todas estas operaciones pueden llevarse a cabo en uno o dos ciclos de reloj, lo que los hace muy rápidos.

Si quieres aprender más sobre cómo funciona el código, mira la fuente. Ofrecemos un montón de comentarios sobre el funcionamiento de cada parte. Una vez más, la parte más difícil es simplemente asegurarse de leer y comparar datos en el orden correcto.

Artículos Relacionados

Agregar un techo a la casa

Agregar un techo a la casa

La siguiente información es una sola lección en un proyecto más amplio en Tinkercad.Revisa todo el proyecto de "Construir una casa de Tinkercad" en TinkercadRegresar a la lección anterior: Crear la puerta arqueadaResumen de la lección:En esta le
Agregar ruedas a viejo asiento del campo Wrigley

Agregar ruedas a viejo asiento del campo Wrigley

hace varios años, mi padre recibió un viejo asiento de Wrigley Field como un regalo, y por falta de espacio en su oficina hoy en día, he afirmado que utilice como mi asiento de taller.  ¿La boca?  Es un viejo asiento de Wrigley Field.  ¿El lado negat
Arduino MIDI teclado de Pedal de pie

Arduino MIDI teclado de Pedal de pie

El origenMi papá es músico. Toca multitud de instrumentos. Sin embargo, sólo tiene dos brazos, pero también tiene las piernas! Que cuando decidimos que reutilizar los pedales de pie de un viejo órgano y convertirlos en un arduino powered teclado MIDI
El órgano donante proyecto-la disección

El órgano donante proyecto-la disección

(Nota: se trata de una introducción y una descripción del desmontaje del órgano. Vea el Recyclone Amp rotatorio y el Blacklord sintetizador para proyectos utilizando estas piezas).Cuando Gordy, mi amigo/equipo scout/acaparamiento a enabler, llamó y m
Construir pedales bajo MIDI para cerca de $150

Construir pedales bajo MIDI para cerca de $150

Pedales bajo MIDI, similares a pedales organists utilizan para tocar notas graves, pero en su lugar utilizan un sintetizador MIDI o módulo de sonido, han sido populares en las últimas décadas. Además de los jugadores del teclado, muchos jugadores baj
Zeta Reticuli: MIDI control de ecualizador de 10 bandas y múltiples interfaz de efecto externo

Zeta Reticuli: MIDI control de ecualizador de 10 bandas y múltiples interfaz de efecto externo

aproximadamente la mitad mi vida (20 años) hace que solía tener literalmente drillions y drillions de ideas que todavía siento no es una completa pérdida de tiempo. Una de estas brillantes ideas debía ser capaz de controlar un pedal de wah-wah guitar
Sintetizador de MIDI VS1103b

Sintetizador de MIDI VS1103b

un tiempo atrás publiqué una guía sobre esto, pero fue desordenado y desaliñado, así que aquí está una nueva versión en plena con adecuada fotos, diagramas y un relato completo.El VS1103b, fabricado por tecnología de VSLI, es un solo chip ADPCM/MIDI/
Construir su propio intercomunicador o walkie talkie de dos teléfonos viejos

Construir su propio intercomunicador o walkie talkie de dos teléfonos viejos

todos tenemos teléfonos viejos. Por qué no convertirlos en un intercomunicador para tu casa de árbol de los niños. O dos teléfonos viejos en casa walkie talkie. Aquí es cómo.Paso 1: materiales En-línea acoplador (yo tengo la mía en el Frys para 1.49)
Cuerda de viejos calcetines para perros

Cuerda de viejos calcetines para perros

¿Por qué tirar tus calcetines sucios viejos cuando perros amor viejos calcetines sucios? Upcycle calcetines viejos en una cuerda trenzada de perro que seguramente podrán disfrutar de tu perro! Esta cuerda de perro es rápido y fácil de hacer. Alguien
Una casa para los sapos

Una casa para los sapos

hace 2 años, un pájaro cayó un sapo hembra lleno de huevos volando sobre el patio de mi casa.El verano pasado dos fueron lluvias y mi viejo perro (casi 17) proporcionó la misteriosa materia oscura que mantiene las moscas cerca por lo que el sapo logr
Hacer una pulsera de botón de órgano Retro - el órgano donante proyecto parte 4

Hacer una pulsera de botón de órgano Retro - el órgano donante proyecto parte 4

Lo he dicho antes y lo diré otra vez viejos órganos musicales son un tesoro de piezas usables y bits impresionantes. En esta serie de Instructables he disecado un viejo órgano, reutilizar el altavoz rotatorio dentro, utiliza el teclado para controlar
SketchUp - cómo hacer una casa de

SketchUp - cómo hacer una casa de

voy a explicar a usted cómo hacer tres dimensiones de la casa utilizando las herramientas de SketchupPaso 1: Paso 1.-Qué hacer con la chica... Una vez que una nueva ventana abierta, ves una chica de pie junto a los ejes.  Usted va a querer deshacerse
Crear un plano de tu casa

Crear un plano de tu casa

La siguiente información es una sola lección en un proyecto más amplio en Tinkercad.Revisa todo el proyecto de "Construir una casa de Tinkercad" en TinkercadRegresar a la lección anterior: Agregar un techo a la casaResumen de la lección:En esta
ARD-e: el robot con un Arduino como un cerebro

ARD-e: el robot con un Arduino como un cerebro

cómo crear un robot de código abierto Arduino controlado por menos de $100.Esperemos que después de leer esto instructable usted será capaz de dar su primer paso en robótica. ARD-e cuesta unos $90 a $130 dependiendo de cuánto electrónica repuesto tie