home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 106 / EnigmaAmiga106CD.iso / software / sviluppo / ahisrc / todo < prev    next >
Encoding:
Text File  |  1999-08-31  |  8.3 KB  |  209 lines

  1.  
  2. Added        Fixed        What?
  3. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  4. 970314        970326        Fast Echo
  5. 970314                AHIST_INPUT
  6. 970314                Echo example
  7. 970314                32 bit samples for CMD_WRITE
  8. 970314        970315        Dynamic loading/unloading of samples for CMD_WRITE
  9. 970320        970321        Finish new prefs program
  10. 970320        970321        Update user's guide for new prefs program
  11. 970321        970407        Localize the prefs program
  12. 970321                Dynamic (prioritized?) volume boost in device mode
  13. 970322        970326        Rewrite the echo stuff, init code i C
  14. 970323                Dev-API should be able to play from VMEM
  15. 970328        970404        Convert "Programming guidelines" to texinfo
  16. 970418        970602        MasterVolume with clipping
  17. 970418                Better info about outvol, monvol, gain etc
  18. 970504                Big buffer mixing
  19. 970504        970602        32 bit output for all drivers
  20. 970625        970628        Better BestAudioID() examples
  21. 970703        970707        Improve the Paula driver
  22. 970802                "Hidden" flag in audio modes
  23. 970802                Move env. variables to the audio mode files
  24. 970802                Localize the audio modes
  25. 970802                Make prefs program able to modify the audio modes
  26. 970802        970820        Fix the GetAttr() routine in the Paula driver
  27. 970820                Hooks should be allowed to be NULL for no-op.
  28. 971007                Tell if a mode is hardware accelerated or not.
  29. 971007                Tell if a mode can handle stereo samples.
  30. 971119                GetAttr should ask driver about AHIDB_Stereo etc!
  31. 980112                Speedup GetAudioAttrsA by using audioctrl better.
  32. 980224                AUDIO: crashes if UNIT is 4.
  33. 980511                AUDIO: and ahi.device should report how much is played.
  34. 980805                AHIC_Monitor, "Monitor always" in prefs.
  35. 900908                Global volume control for device modes.
  36.  
  37. V5 Proposal, improvements and new lowlevel soundcard access
  38. ===========================================================
  39.  
  40. Improvements
  41. ************
  42.  
  43. Be able to ask the device which units are available.
  44. Use the device interface on Direct modes too.
  45. All AHIDB_#?Arg tags should also have a AHIDB_#?Array, that holds all values.
  46. A new function AHI_FreeArray() should be used to free the list.
  47.  
  48. AHIR_DoChannels
  49.  
  50. AHIA_AntiClick (ULONG) -- Specifies how many (output) samples AHI will spend
  51. interpolating when starting a new sound. (Implementera som en rutin som tar
  52. Addrutinen som argement, kör den på en egen buffer och mixar in den i ut-strömmen.
  53. Skitenkelt.)
  54.  
  55. New AHI_AllocAudio tags
  56. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  57. AHIA_ErrorFunc:  A Hook that gets called when an error occurs (CPU limit
  58. reached, input or output clipping etc).
  59.  
  60.  
  61. New/improved AHI_ControlAudio tags
  62. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  63. AHIC_MonitorVolumeLeft (ULONG)           (Set to dB level specified by index)
  64. AHIC_MonitorVolumeRight (ULONG)
  65. AHIC_MonitorVolumeLeft_Query (ULONG *)   (Get index)
  66. AHIC_MonitorVolumeRight_Query (ULONG *)
  67. AHIC_OutputVolumeLeft (ULONG)
  68. AHIC_OutputVolumeRight (ULONG)
  69. AHIC_OutputVolumeLeft_Query (ULONG *)
  70. AHIC_OutputVolumeRight_Query (ULONG *)
  71. AHIC_InputGainLeft (ULONG)
  72. AHIC_InputGainRight (ULONG)
  73. AHIC_InputGainLeft_Query (ULONG *)
  74. AHIC_InputGainRight_Query (ULONG *)
  75.  
  76. AHI will translate the old tags (AHIC_MonitorVolume,
  77. AHIC_MonitorVolume_Query etc) so the driver will only need to know about
  78. the new ones.
  79.  
  80. AHIC_InputClipped (BOOL)
  81. AHIC_OutputClipped (BOOL)
  82. AHIC_UsedCPU (Fixed)
  83.  
  84. New/improved database tags
  85. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  86. AHIDB_MonitorVolumesLeft/AHIDB_MonitorVolumeLeftArg/AHIDB_MonitorVolumeLeft
  87. AHIDB_MonitorVolumesRight/AHIDB_MonitorVolumeRightArg/AHIDB_MonitorVolumeRight
  88. AHIDB_OutputVolumesLeft/AHIDB_OutputVolumeLeftArg/AHIDB_OutputVolumeLeft
  89. AHIDB_OutputVolumesRight/AHIDB_OutputVolumeRightArg/AHIDB_OutputVolumeRight
  90. AHIDB_InputGainsLeft/AHIDB_InputGainLeftArg/AHIDB_InputGainLeft
  91. AHIDB_InputGainsRight/AHIDB_InputGainRightArg/AHIDB_InputGainRight
  92.  
  93. AHI will translate the old tags.  If the left and right channel cannot be
  94. controlled separately, AHIDB_MonitorVolumesRight, AHIDB_OutputVolumesRight
  95. or AHIDB_InputGainsRight will return 0. The values are in dB, stored as Fixed.
  96. Mute is coded as LONG_MIN (AHI_MUTED).
  97.  
  98. AHIDB_Hidden (BOOL):  Prevent mode from showing up in the requester.
  99. AHIDB_Accelerated (ULONG):  Level of hardware acceleration (None, effects,
  100. mixing etc)
  101. AHIDB_Surround (BOOL)
  102. AHIDB_SampleFormats/AHIDB_SampleFormatArg/AHIDB_SampleFormat:  Sample
  103. formats supported by the mixing routines.  See "Total Control" below.
  104.  
  105. AHIDB_Frequency can now return AHI_EXTERNAL_FREQ (defined 0), to indicate that
  106. the mixing frequency depends on an external source.
  107.  
  108. Add AHIDB_Available
  109.  
  110.  
  111. New AHI_AudioRequest tags
  112. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  113. AHIR_DoHidden: Show hidden modes, too.
  114.  
  115.  
  116. New Effect interface
  117. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  118. To be defined.
  119.  
  120.  
  121. Multiple sound card support
  122. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  123. To be defined.  Basically, a new driver call, or perhaps a AHIsub_GetAttr
  124. tag that returns the number of sound cards installed, as well as the number
  125. of independent DA/AD converters on each card.  ahi.device will then build
  126. the audio modes from a template in DEVS:AUDIOMODES.
  127.  
  128.  
  129. Preferences program
  130. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
  131. Allow the preferences program to set the default requester size and coordinates.
  132. Dynamic volume boost. Dynamic mixing frequency.
  133.  
  134.  
  135.  
  136. Patchbay system
  137. ***************
  138.  
  139. Each time an application allocates an AudioCtrl structure, a straigt
  140. connection from the application to the sound hardware is opened.  This is a
  141. one-way connection (the recording stream cannot be modified).  With the new
  142. effect API, the user can add modules on this connection (predefined like
  143. echo, master volume, outputvolume etc, and custom modules as well).  All
  144. these connections from application to sound card are public.  This lets
  145. other applications hook into each others streams as well.
  146.  
  147. Each module would need at least three functions:  Begin(), End() and
  148. Process().  Begin() would let the module know the minimum and maximum
  149. packet length (remember, the packet length is variable) and the data
  150. format.  Process() would get a pointer to a packet, which it may modify.
  151.  
  152. The patchbay system only works when the mixing routines are used, not in
  153. "Absolute Power" mode. (NO!)
  154.  
  155. There are lots of problems. How should wet/dry channels be handled? How
  156. should future enhancements, like separate effects one each virtual channel
  157. be handled? How can hardware acceleration be taken advantage of? PPC code?
  158. How should the public AudioCtrl structures been shown, in the audio mode
  159. requester given a temporary mode ID? What if the application saves this mode
  160. in its preferences file?
  161.  
  162. Total Control
  163. *************
  164.  
  165. A new Audio mode for each card driver, with bit 0-4 set to 0.  This mode is
  166. the "Absolute Power" mode, where all mixing routines are disabled and you
  167. can write data to the FIFO yourself.
  168.  
  169. Add a new database tag, AHIDB_Direct (BOOL), that identifies such audio modes.
  170.  
  171. Add a new requester tag, AHIR_DoDirectModes, that also shows the raw modes.
  172. They will be named "Paula", "Prelude.1", "Prelude.2", "Delfina", etc.
  173. I.e., just the card's name.  In order to only show the raw modes, a filter
  174. taglist containing "AHIR_Direct, TRUE" must be used.
  175.  
  176. Add new AHI_ControlAudio tags:  AHIC_MixFreq (to change the mixing
  177. frequency), AHIC_SampleFormat and AHIC_SampleFormat_Query (to set and get
  178. the current data format), AHIC_DirectLength and AHIC_DirectLength_Query (to set
  179. and get the block length to be used), AHIC_DirectWrite (pass a buffer of size
  180. AHIC_DirectLength to be transferred to the card) and AHIC_DirectRead (read
  181. AHIC_DirectLength samples to a buffer).
  182.  
  183. Should I have separate read and write fifo depth? YES!
  184.  
  185. Add database tags:  AHIDB_SampleFormats/AHIDB_SampleFormatArg/
  186. AHIDB_SampleFormat (find out the supported hardware sample formats)
  187. AHIDB_DirectLengths/AHIDB_DirectLengthArg/AHIDB_DirectLength (to find out the
  188. available FIFO depths).
  189.  
  190. Add new sample formats:  AHIST_ULAW, AHIST_ALAW, AHIST_ADPCM, AHIST_MP1L3 etc...
  191.  
  192. In these modes, the MixFunc() will be replaced by a routine that transfers
  193. the memory block set by the last AHIC_DirectWrite to the driver-allocated
  194. mixing buffer.  This allows the driver to reuse the current transfer
  195. routines (esp.  useful in the paula driver), which allows minimal changes
  196. the the current drivers.  However, there is nothing preventing you from
  197. skipping the call to MixFunc() and read directly from the AHIC_DirectWrite
  198. block.
  199.  
  200. The PlayerFunc() should be called before you fill the fifo.  The user is
  201. responsible for setting a new AHIC_DirectWrite block from this hook.
  202.  
  203. *************
  204.  
  205. User-defined audio modes, just like "Default Music Unit", id #0
  206. User-defined pseudo drivers that handles mixing from several programs/device
  207. units.
  208.  
  209.