Negli ultimi mesi ho cercato di sviluppare un'interfaccia multitouch basata su Kinect per una varietà di sintetizzatori musicali software.
La strategia generale che mi è venuta in mente è creare oggetti, sia programmaticamente che (se possibile) algoritmicamente per rappresentare vari controlli del synth morbido. Questi dovrebbero avere;
- Posizione X
- Posizione Y
- Altezza
- Larghezza
- Canale di uscita MIDI
- Scaler dati MIDI (converti le coordinate x-y in valori midi)
2 strategie che ho preso in considerazione per la creazione agoritmica sono la descrizione XML e in qualche modo estraggono cose direttamente dallo schermo (vale a dire dato un programma in esecuzione, trovare xycoords di tutti i controlli). Non ho idea di come procedere per il secondo, ed è per questo che lo esprimo in un linguaggio tecnico così specifico;). Potrei fare qualche soluzione intermedia, come usare i clic del mouse agli angoli dei controlli per generare un file xml. Un'altra cosa che potrei fare, che ho visto spesso nelle app flash, è quella di mettere le dimensioni dello schermo in una variabile e usare la matematica per costruire tutti gli oggetti dell'interfaccia in termini di dimensioni dello schermo. Nota che non è strettamente necessario rendere gli oggetti delle stesse dimensioni dei controlli su schermo o rappresentare tutti gli oggetti sullo schermo (alcuni sono solo indicatori, non controlli interattivi)
Altre considerazioni;
Dato (per ora) due serie di coordinate X / Y come input (mani sinistra e destra), qual è la mia migliore opzione per usarle? Il mio primo istinto è / era di creare una sorta di focus test, in cui se le coordinate x / y rientrano nei limiti dell'oggetto dell'interfaccia l'oggetto diventa attivo e quindi diventa inattivo se cadono fuori da altri limiti più piccoli per un certo periodo di tempo. La soluzione economica che ho trovato era usare la mano sinistra come puntatore / selettore e il diritto come controller, ma sembra che io possa fare di più. Ho alcune soluzioni gestuali (catene di markov nascoste) con cui ho potuto cazzeggiare. Non è che sarebbe facile andare a lavoro, esattamente, ma è qualcosa che mi vedrei fare dato un incentivo sufficiente.
Quindi, per riassumere, il problema è
- rappresenta l'interfaccia (necessaria perché l'interfaccia predefinita aspetta sempre l'input del mouse)
- seleziona un controllo
- manipola usando due serie di coordinate x / y (rotanti / continue controller) o, nel caso di interruttori, utilizzare preferibilmente un gesto per accendilo senza dare / mettere a fuoco
Qualsiasi commento, specialmente da parte di persone che hanno lavorato / stanno lavorando in multitouch io / NUI, è molto apprezzato. I collegamenti a progetti esistenti e / o materiale di buona lettura (libri, siti, ecc.) Sarebbero di grande aiuto.