Negli ultimi mesi ho cercato di sviluppare un'interfaccia multitouch basata su Kinect per una varietà di sintetizzatori musicali software.Considerazioni generali per interfaccia NUI/touch
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
- MIDI canale di uscita
- MIDI dati scaler (convertire coordinate XY valori midi)
2 strategie che Sono stati considerati per la creazione agoritmica la descrizione XML e in qualche modo si tira fuori roba da poco e 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. Si noti 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 è stata quella di usare la mano sinistra come puntatore/selettore e la destra come controller, ma sembra che io possa fare di più. Ho alcune soluzioni per i gesti (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 è
- rappresentano l'interfaccia (necessario perché l'interfaccia predefinita prevede sempre ingresso mouse)
- selezionare un controllo
- manipolare utilizzando due serie di x/y coords (controller rotativo/continuo) o, nel caso di interruttori, usare preferibilmente un gesto per accenderlo senza dare/mettere a fuoco.
Qualsiasi commento, in particolare da parte di persone che hanno lavorato/stanno lavorando in multitouch io/NUI, è molto apprezzato. Collegamenti a progetti esistenti e/o materiale di buona lettura (libri, siti, ecc.) Sarebbero di grande aiuto.
Meta-discussione su questa domanda sta accadendo/è successo: http://meta.stackexchange.com/q/106720/146495 –