==============================================================================
Program modifications for USB
10.09.25 jmb

Note: une partie du programme utilise des fonctions USB de Colin Granville
==============================================================================
Note le programme importe une library: LIBRARY "<ProSound$Dir>.ProLib"

  Premire partie:
le programme accepte maintenant des paramtres fournit par le fichier !Run

ex :
Run <RecordAPI$Dir>.!RunImage 48000 2 16 130 5766 1973 -n"H1essential"
Certaines procdures ont t empruntes  Steve Drain.


Donc cette premire partie dcode ces paramtres qui sont utiliss par le programme, cette section peut tre mise dans une procdure.

Il y a aussi les paramtres ncessaires pour faire des requtes USB 
 ranger.
Fonctions/PROC USB:    (en fin de programme)
   DEF PROCusb_control(bmRType%,bRequest%,wValue%,wIndex%,wLength%,buf%)
   DEF PROCusb_endpointControl(dir%,req%,feature%,len%,buf%)
   DEF FNusb_findDeviceByVendor(vendor%,product%,version%)
   DEFPROCFindUSBDevices


procdures/fonctions non touches:

Boucle principale
  DEFPROCError
  DEFPROCLog(a$)
  DEFPROCProSoundMsg(msg%)   (il y a beaucoup de com de Henrik)
  DEFPROCDeregisterDevices
  DEFPROCRecordPoll
  DEFPROCRecordStop
  DEFPROCBroadcastMsg(msg%)


Modifications
taille des buffers

  DEFPROCRecordStart(msg%)
si il y a un appareil USB
 ouverture du flux depuis l'appareil
note: avec !ResRec on peut voir l'attribution du handle du flux
devices#nopad;noblock; interface2;alternate1;enpoint 132, samplerate44100 sample size4; size 131072
Ce qui correspond au paramtrage dasn cette procdure
size = taille du buffer  USB requise
si l'on change la fe elle est bien prise en compte, ainsi que l'adresse du endpoint.
xEndpoint% et  xSamplerate% sont modifis dans DEFPROCFindUSBDevices
ainsi que  xSamplesize%, xChannels% et xBits%

mais pas  xInterface% et xAlternate% ....  voir.

  DEFPROCEnumerateDevices(msg%)

on utilise un seul device USB si trouv

  DEFPROCSendMsg(msg%)

  DEFPROCFillBuffer(PSbuf%, start%, numsamples%, chn%)
 

Pour info les waveform par dfaut , ligne 42
A commenter...

IL restera encore beaucoup de commentaires...(ceux de Henrik)


DEFPROCFindUSBDevices
doit vrifier que le produit et son vendeur existent.
si oui rcupre le nom USBxx et les paramtrages sont initialiss aux valeur passes par !Run.

la frqeunce utilse n'a pas besoin d'tre paramtre ici
  c'est fait dans record start lors de l'ouverture du pipe.
ce pipe n'est ouvert que dans les sqences d"enregistrement.
   