Condividi tramite


Windows ConfidentialUn joystick non deve essere un microonde

Raymond Chen

Di recente ho letto un post in un blog di un collega, Audio Fool, che mi ha ricordato di un errore fatto molti anni fa e che ha continuato a perseguitarmi. Quando l'interfaccia del joystick force feedback DirectInput® era in fase di progettazione e sviluppo, i produttori di joystick furono invitati presso la sede Microsoft di Redmond, WA per discutere i dettagli dell'interfaccia proposta e fornire suggerimenti e idee originali (detto senza ironie).

Nel corso delle riunioni furono affrontati molti problemi, ma quello che non riesco a dimenticare è la divergenza di opinioni sulla necessità di esprimere le forze periodiche come un periodo o come una frequenza. Uno dei rappresentanti dei produttori fece animatamente rilevare che la sua azienda aveva già scritto un driver in cui le forze periodiche venivano espresse in termini di frequenza e non avevano alcuna intenzione di modificarlo. Se la riunione era stata organizzata proprio per discutere dei dettagli di un'interfaccia nuova di zecca, come poteva mai pensare un produttore di uscire dalla sala senza dover apportare qualche modifica al proprio driver?

Il rappresentante di questo produttore si lamentò talmente tanto da indurci a rinunciare e a convenire sull'utilizzo della frequenza invece della periodicità per specificare le forze periodiche. La questione sembrava trascurabile. Una forza con una frequenza di 10 oscillazioni per secondo equivale a una forza con un periodo di un decimo di secondo. Periodo e frequenza sono semplicemente uno l'inverso dell'altro.

Invece non è esattamente così. Il periodo era espresso in millisecondi, con una gamma dinamica risultante pari a 1 ms per un periodo inferiore ai 50 giorni. Un periodo di 50 giorni è impercettibile su una scala dei tempi umana e un periodo di 1 ms è talmente rapido che non può essere neanche descritto come un fenomeno periodico, ma viene invece percepito come un tono musicale.

D'altra parte, la frequenza era espressa in hertz, con un intervallo dinamico risultante di 1 Hz per 4 miliardi di cicli al secondo. Se può sembrare strana l'idea di produrre musica con un joystick, si pensi alle forze che si generano nella banda di frequenze di un microonde!

Il problema è che il potenziale espressivo praticamente inutile alla sommità della gamma di frequenze veniva ottenuta a scapito della sezione inferiore. Pare però che chi utilizza i simulatori di volo sia un grande consumatore di forze periodiche con periodi relativamente lunghi. Non conosco bene la fisica che c'è dietro, ma mi dicono che uno degli effetti che i piloti devono controllare è una lenta forza periodica sullo joystick misurabile nell'ordine di qualche minuto. L'aereo ha una tendenza naturale a viaggiare in un'onda sinusoidale verticale molto lenta, che i piloti devono contrastare per mantenere un volo orizzontale. Se si esprimesse la forza in base al periodo, il programma di simulazione di volo potrebbe specificare un periodo di 120.000 millesimi di secondo. Espresso in frequenza, tuttavia, il valore è di 0,0083 Hz, che è molto più lento della frequenza più lenta che può essere espressa nell'interfaccia del driver, ovvero 1 Hz. Quindi, la forza più lenta che un simulatore di volo può richiedere è una forza che si ripete ogni secondo, che è ancora troppo veloce rispetto all'effetto fisico che si desidera ottenere con il simulatore di volo.

Poiché questo problema continua ad assillarmi dopo tutti questi anni, ho ripassato di recente la documentazione dell'interfaccia force feedback. Con sorpresa mi sono reso conto che, per esprimere gli effetti periodici, la struttura DIPERIODIC utilizza il periodo invece della frequenza (e in buona parte utilizza i microsecondi, consentendo quindi di suonare musica o pilotare un aereo). L'errore deve essere stato corretto, oppure sto invecchiando e la memoria inizia a giocarmi brutti scherzi. In ogni caso non dovrò più preoccuparmi di questo errore. Sempre ammesso che sia mai esistito.

Raymond Chen, The Old New Thing, così come nel suo libro che porta lo stesso titolo (Addison-Wesley, 2007), vengono illustrate la storia di Windows e la programmazione in Win32. Quel colore ti sta benissimo.

© 2008 Microsoft Corporation e CMP Media, LLC. Tutti i diritti riservati. È vietata la riproduzione completa o parziale senza autorizzazione.