Qual è il modo migliore di usare un Kinect con più sintetizzatori musicali software?

1

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.

    
posta jamesson 23.09.2011 - 15:36
fonte

1 risposta

0
  1. Ogni controller touch che ho visto che ha una manopola su di esso, si gira la manopola spostando il dito in una linea. Quindi per girare una particolare manopola, vorrei toccare la manopola, e poi far scorrere il dito verso l'alto per girare la manopola in senso orario, e in basso per girarla in senso antiorario. Sollevando il dito rilascia la manopola. I tuoi utenti saranno abituati a questa convenzione, se hanno mai usato la superficie di controllo di qualcun altro.

    Spostare un cursore con il dito è come muovere un cursore. Girare una manopola nel solito modo non, perché si basa sulla sensazione tattile verticale. Questo è in gran parte il motivo per cui ho acquistato un Oxygen 61 per la mia configurazione personale, quindi ho potuto avere alcune manopole reali da girare.

  2. Il rendering della superficie di controllo e delle sue mappature in un file XML è una questione di creazione di uno schema e scrittura di codice per eseguire le traduzioni tra il tuo XML e la tua superficie di controllo. Per avere qualche idea su come questo potrebbe funzionare, prendi in considerazione lo studio dei modelli WPF o Silverlight di Microsoft; usano XAML (lo schema XML di Microsoft) per eseguire il rendering delle interfacce utente.

    Affidati molto alle librerie XML di terze parti e considera tecniche come la serializzazione; questi strumenti velocizzeranno notevolmente il tuo sviluppo sforzo.

  3. In termini di lasciare che le persone sviluppino le proprie superfici di controllo, sembra assiomatico che non scriveranno XML per farlo. Dovrai fornire una sorta di trascinamento da una casella degli strumenti a una superficie di progettazione e quindi salvarlo nel file XML.

    Permetti ai tuoi utenti di applicare patch ai controlli su un canale MIDI toccandoli dopo aver selezionato un elemento di controllo. Molti pacchetti musicali attuali come Abelton Live già supportano questo; fai clic sull'elemento che vuoi controllare, quindi tocca il controllo sulla superficie di controllo che vuoi mappare ad esso e verrà automaticamente aggiornato.

Ovviamente tutto dipende dal tipo di gesti per il tocco (e un-touch) disponibili per Kinect. Inoltre, se il Kinect sa come rilevare movimento rotatorio della tua mano, potresti semplicemente tradurlo in movimento rotatorio per la manopola, con un ridimensionamento 2: 1 in modo da ottenere una svolta completa senza girando la mano tutto intorno

IMPORTANTE: se non hai ancora, come parte della tua ricerca, guarda il film " Rapporto di minoranza. "

Vedi anche link

    
risposta data 23.09.2011 - 18:26
fonte

Leggi altre domande sui tag