AntonioDrusin / apollon-3

MIT License
3 stars 0 forks source link

Realtime range clamp + Interpolate EEG #10

Open AntonioDrusin opened 1 year ago

AntonioDrusin commented 1 year ago

un po' di controllo sull' output >>> range e clamp dei parametri da pilotare cmq con EEG (per definire degli "stili" tipo preset). Presets x visual artist styles (save setup o save slots? Load/save cfg file?

AlePax commented 1 year ago

Sto pensando a 'sta cosa a livello di UX / UI... in pratica adesso quando è impostato su Manual è l'equivalente di avere una spunta EEG On/Off, corretto?

AlePax commented 1 year ago

Inoltre pensavo al discorso del range mapping dinamico. Fermo restando che faccio un mockup decente (giuro), sarebbe tanto casino fare una cosa del tipo, per esempio:

@numberInput("Move noise", varMin, varMax)

e avere varMin / varMax sulla UI come valore numerico o slider testa/coda?

Considerazione valida per tutti i vari controlli - COLOR a parte perché lì è più complessa suppongo...

AntonioDrusin commented 1 year ago

Sto pensando a 'sta cosa a livello di UX / UI... in pratica adesso quando è impostato su Manual è l'equivalente di avere una spunta EEG On/Off, corretto?

Si' pero' devi sempre mandare un valore. Lo slider "Manual" funziona per mandare il valore che scegli.

AntonioDrusin commented 1 year ago

Si' si puo; mandare un range. Pero' magari e' un range all "interno" del range specificato dal visualizzatore. Quindi non si puo' mai andare al di fuori dei parametri specificati dal visualizzatore (per esempio potrebbe essere la coordinata X) ma si puo' sempre fare un mapping piu' stretto.

AntonioDrusin commented 1 year ago

image Cosi' un range slider che sostituisce lo slider "manuale"

AlePax commented 1 year ago

Si' si puo; mandare un range. Pero' magari e' un range all "interno" del range specificato dal visualizzatore. Quindi non si puo' mai andare al di fuori dei parametri specificati dal visualizzatore (per esempio potrebbe essere la coordinata X) ma si puo' sempre fare un mapping piu' stretto.

Ma quindi non si può fare una cosa tipo @numberInput("Move noise", varMin, varMax) così da avere anche gli estremi dinamici da mappare poi sullo slider come sopra? image

AntonioDrusin commented 1 year ago

Si' adesso lo faccio.

AlePax commented 1 year ago

Si' si puo; mandare un range. Pero' magari e' un range all "interno" del range specificato dal visualizzatore. Quindi non si puo' mai andare al di fuori dei parametri specificati dal visualizzatore (per esempio potrebbe essere la coordinata X) ma si puo' sempre fare un mapping piu' stretto.

Ma domandona: i range "predefiniti" nel visualizer devono assolutamente essere impostati come costanti prima di compilare tutto quanto... o possono essere variabili runtime a loro volta? Magari da definire con due text box aggiuntivi per valore min-max, per esempio - fermo restando che va capito come eventualmente integrare nell'UI senza incasinare e appesantire troppo.

Magari non runtime mentre è in esecuzione il visualizer, ma da impostare once per session prima di lanciarlo e se non vanno bene chiudere il visualizer e rilanciarlo?

Torna utile soprattutto in fase di prototipazione "on-the-fly" senza dover ricompilare ogni volta così diventa di per sé una feature dell'app... ma ripeto, solo curiosità generale, non è assolutamente una feature request (anche perché se ho ben intuito potrebbe essere un incubo da gestire arrivati a questo punto dello sviluppo).

AntonioDrusin commented 1 year ago

Possiamo metterli nei settings, pero' il visualizzatore deve assolutamente dare dei limiti. Per esempio un alpha o un mix ratio possono solo esistere da 0 1 Le coordinate x/y possono solo esistere sullo schermo no. Colori idem.

Certe altre cose invece potrebbero avere limiti piu' elastici (drying time). Quindi ci sono parametri con hard limits e parametri con soft limit.

Quindi parliamo solo dei parametri soft, che quelli hard non si possono cambiare.

Se ti do un file di cui puoi fare l'upload con un bottone nuovo "parameter extension upload". E' un file json cosi:

{ "Dry Rate": {-1.0, 2.0} } Lo tieni su disco e fai l'upload. Pero' non capisco perche' il dry rate range non sia settato da -1 a 2 nel visualizzatore.

== DOMANDE A CAZZO QUI DI SEGUITO == A questo punto la domanda e' chi li cambia e perche'?

Perche' non si mette il massimo possibile nel visualizzatore? Perche' poi e' difficile da usare? Quindi, per esempio l'ink dry time, dove il negativo puo' avere usi ma e' una cosa "avanzata". Facciamo dei Mapped Range "suggeriti"? con un reset?

AntonioDrusin commented 1 year ago

E comunque l'idea di mettere i range nei "Settings" e' sempre valida. Strana ma valida.

AntonioDrusin commented 1 year ago

Strana perche' diciamo che va oltre i limiti di design del visualizzatore. Ma valida perche' (a seconda delle domande del cazzo di cui sopra) magari vuoi fare un range "protetto" Ma si puo' anche fare un opzione con per esempio "Dry Time" : "Normale", "Allargato" dipende dal perche' serva questa opzione.

AlePax commented 1 year ago

Possiamo metterli nei settings, pero' il visualizzatore deve assolutamente dare dei limiti. Per esempio un alpha o un mix ratio possono solo esistere da 0 1 Le coordinate x/y possono solo esistere sullo schermo no. Colori idem.

Certe altre cose invece potrebbero avere limiti piu' elastici (drying time). Quindi ci sono parametri con hard limits e parametri con soft limit.

Quindi parliamo solo dei parametri soft, che quelli hard non si possono cambiare.

Se ti do un file di cui puoi fare l'upload con un bottone nuovo "parameter extension upload". E' un file json cosi:

{ "Dry Rate": {-1.0, 2.0} } Lo tieni su disco e fai l'upload. [Pero' non capisco perche' il dry rate range non sia settato da -1 a 2 nel visualizzatore.]

In realtà questa cosa era già stata concettualmente risolta con il discorso Range Mapping, nel senso che magari si impostano soft limits un po' più ampi e e poi a occhio si mappa con il range e si ottiene lo stesso risultato. Quindi io direi di evitare di appesantire l'UI con altri pulsanti e gadget per cose che verrebbero usate comunque raramente.

Cosa intenti con "Pero' non capisco perche' il dry rate range non sia settato da -1 a 2 nel visualizzatore." ?

== DOMANDE A CAZZO QUI DI SEGUITO == A questo punto la domanda e' chi li cambia e perche'?

Appunto, vedi sopra! ;)

  • Li cambi in serata ma non vuoi cambiarli nel visualizzatore?
  • Vuoi solo un modo piu' semplice per cambiarli senza compilare? E dopo, se vanno bene, li compili?
  • Vuoi dare una via d'uscita a uno che sta facendo una presentazione e allargare un parametro dinamicamente? O lo fa lui in serata?
  • Deve funzionare in locale oppure anche in remoto? Se lo cambi in remoto cosa significa che lo cambi per tutti? O solo per te e dopo vai a mettere un issue si github per mantenere la differenza oppure ti tieni un file separato?
  • L' "allargamento" si salva con le opzioni? Oppure e' un settaggio a parte?

Perche' non si mette il massimo possibile nel visualizzatore? Perche' poi e' difficile da usare? Quindi, per esempio l'ink dry time, dove il negativo puo' avere usi ma e' una cosa "avanzata". Facciamo dei Mapped Range "suggeriti"? con un reset?

Tutte domande legittime che non fanno altro che confermare il primo pensiero, ovvero: lasciamo il mondo com'è! :D Però l'ultima idea del reset con "suggested settings" non è male...

AlePax commented 1 year ago

E comunque l'idea di mettere i range nei "Settings" e' sempre valida. Strana ma valida. Strana perche' diciamo che va oltre i limiti di design del visualizzatore. Ma valida perche' (a seconda delle domande del cazzo di cui sopra) magari vuoi fare un range "protetto" Ma si puo' anche fare un opzione con per esempio "Dry Time" : "Normale", "Allargato" dipende dal perche' serva questa opzione.

Cioè... spostare il mapping fuori dai singoli parameter panels e nascosti dentro il pop up "Options"? Ma come si fa? Un range mapping per ogni singolo pannello relativo?!? Non si incasina troppo? Oppure non ho ben capito cosa intendi...

image

AntonioDrusin commented 1 year ago

Pensavo di lasciare il range mapping dov'e' pero nelle opzioni hai un drying time con la scelta tra "Positivo" "Positivo e negativo" E quello ti cambia. Se scegli positivo tutto il range e' garantito positivo. Se Scegli la seconda opzione, quando chiudi il dialog il mapped range e' tutto il range.

AlePax commented 1 year ago

Pensavo di lasciare il range mapping dov'e' pero nelle opzioni hai un drying time con la scelta tra "Positivo" "Positivo e negativo" E quello ti cambia. Se scegli positivo tutto il range e' garantito positivo. Se Scegli la seconda opzione, quando chiudi il dialog il mapped range e' tutto il range.

Ah, quindi limitare questa cosa solo al Dry Rate, OK ci sto! 👍 Quindi, se ho ben capito, si compila con range esteso

@numberInput("Dry rate", 0.0000, 0.0060)

Poi nelle OPTIONS abbiamo f.i. due setup del mapping, una cosa del genere

Giusto?

AntonioDrusin commented 1 year ago

Si' praticamente

AntonioDrusin commented 1 year ago

Per fare una cosa piu' veloce e se invece ci fosse una versione diversa di apparitions con range differenti? Se ho capito vuoi un "Apparition" user friendly con il range ink solo in positivo, e poi un a versione "expert" con il range allargato. Quindi una versione separata di apparitions potrebbe funzionare?

AlePax commented 1 year ago

Ottima idea.

A questo punto direi di fare una cosa del genere - se non ti rompe troppo:

  1. branch main: Apparitions, Apparitions Expert, Apparitions v2, Apparition XY
  2. branch experimental: Marble assieme a tutto il resto che vorrai/vorremo/vorranno aggiungere un domani...

Io magari avrei approfondito e cercato di fare un "v1+v2" perché l'effetto frastagliato del bordo personalmente mi piaceva, ma tutti gli altri con potere decisionale non mi sono sembrati molto interessati alla fine... vabbeh.