Creative + Direct Sound + Vista, DDay crashes

edited 2009 Aug 20 in Technical Support
I have a Creative X-Fi and to get EAX effects running in Vista I have to install Creative ALchemy.

If I use Creative ALchemy it adds a "dsound.dll" and a "dsound.ini" to the game (for example in Doomsday\bin).

But if I select "Direct Sound" in Doomsday the game crashes.
With "SDL_Mixer" (ALchemy activated or not doesn't matter) or "Direct Sound" without ALchemy it works, but of course without EAX-effects.

Is this already known?

I'm using Vista Home Premium 32 Bit

Here is the Doomsday out, but it just seems that he can't initialize the Sound hardware using Direct Sound and ALchemy.
Z_Create: New 32.0 MB memory volume.
Con_Init: Initializing the console.
Executable: Version 1.9.0-beta6.5 Jul 31 2009 (DGL).
Sys_InitWindowManager: Using Win32 window management.
Z_Create: New 32.0 MB memory volume.
createContext: OpenGL.
OpenGL information:
  Vendor: NVIDIA Corporation
  Renderer: GeForce 8800 GT/PCI/SSE2
  Version: 3.1.0
  GLU Version: 1.2.2.0 Microsoft Corporation
  Available Texture units: 4
  Maximum Texture Size: 8192
  Maximum Anisotropy: 16
  Num Texture Formats: 3
  Line Width Granularity: 0.1
  Line Width Range: 0.5...10.0
  Extensions:
    GL_ARB_color_buffer_float      GL_ARB_compatibility          
    GL_ARB_copy_buffer             GL_ARB_depth_buffer_float     
    GL_ARB_depth_texture           GL_ARB_draw_buffers           
    GL_ARB_draw_instanced          GL_ARB_fragment_program       
    GL_ARB_fragment_program_shadow GL_ARB_fragment_shader        
    GL_ARB_half_float_pixel        GL_ARB_half_float_vertex      
    GL_ARB_framebuffer_object      GL_ARB_geometry_shader4       
    GL_ARB_imaging                 GL_ARB_map_buffer_range       
    GL_ARB_multisample             GL_ARB_multitexture           
    GL_ARB_occlusion_query         GL_ARB_pixel_buffer_object    
    GL_ARB_point_parameters        GL_ARB_point_sprite           
    GL_ARB_shadow                  GL_ARB_shader_objects         
    GL_ARB_shading_language_100    GL_ARB_texture_border_clamp   
    GL_ARB_texture_buffer_object   GL_ARB_texture_compression    
    GL_ARB_texture_cube_map        GL_ARB_texture_env_add        
    GL_ARB_texture_env_combine     GL_ARB_texture_env_dot3       
    GL_ARB_texture_float           GL_ARB_texture_mirrored_repeat
    GL_ARB_texture_non_power_of_tw GL_ARB_texture_rectangle      
    GL_ARB_texture_rg              GL_ARB_transpose_matrix       
    GL_ARB_vertex_array_object     GL_ARB_vertex_buffer_object   
    GL_ARB_vertex_program          GL_ARB_vertex_shader          
    GL_ARB_window_pos              GL_ATI_draw_buffers           
    GL_ATI_texture_float           GL_ATI_texture_mirror_once    
    GL_S3_s3tc                     GL_EXT_texture_env_add        
    GL_EXT_abgr                    GL_EXT_bgra                   
    GL_EXT_blend_color             GL_EXT_blend_equation_separate
    GL_EXT_blend_func_separate     GL_EXT_blend_minmax           
    GL_EXT_blend_subtract          GL_EXT_compiled_vertex_array  
    GL_EXT_Cg_shader               GL_EXT_bindable_uniform       
    GL_EXT_depth_bounds_test       GL_EXT_direct_state_access    
    GL_EXT_draw_buffers2           GL_EXT_draw_instanced         
    GL_EXT_draw_range_elements     GL_EXT_fog_coord              
    GL_EXT_framebuffer_blit        GL_EXT_framebuffer_multisample
    GL_EXT_framebuffer_object      GL_EXTX_framebuffer_mixed_form
    GL_EXT_framebuffer_sRGB        GL_EXT_geometry_shader4       
    GL_EXT_gpu_program_parameters  GL_EXT_gpu_shader4            
    GL_EXT_multi_draw_arrays       GL_EXT_packed_depth_stencil   
    GL_EXT_packed_float            GL_EXT_packed_pixels          
    GL_EXT_pixel_buffer_object     GL_EXT_point_parameters       
    GL_EXT_provoking_vertex        GL_EXT_rescale_normal         
    GL_EXT_secondary_color         GL_EXT_separate_shader_objects
    GL_EXT_separate_specular_color GL_EXT_shadow_funcs           
    GL_EXT_stencil_two_side        GL_EXT_stencil_wrap           
    GL_EXT_texture3D               GL_EXT_texture_array          
    GL_EXT_texture_buffer_object   GL_EXT_texture_compression_lat
    GL_EXT_texture_compression_rgt GL_EXT_texture_compression_s3t
    GL_EXT_texture_cube_map        GL_EXT_texture_edge_clamp     
    GL_EXT_texture_env_combine     GL_EXT_texture_env_dot3       
    GL_EXT_texture_filter_anisotro GL_EXT_texture_integer        
    GL_EXT_texture_lod             GL_EXT_texture_lod_bias       
    GL_EXT_texture_mirror_clamp    GL_EXT_texture_object         
    GL_EXT_texture_sRGB            GL_EXT_texture_swizzle        
    GL_EXT_texture_shared_exponent GL_EXT_timer_query            
    GL_EXT_vertex_array            GL_EXT_vertex_array_bgra      
    GL_IBM_rasterpos_clip          GL_IBM_texture_mirrored_repeat
    GL_KTX_buffer_region           GL_NV_blend_square            
    GL_NV_copy_depth_to_color      GL_NV_copy_image              
    GL_NV_depth_buffer_float       GL_NV_conditional_render      
    GL_NV_depth_clamp              GL_NV_explicit_multisample    
    GL_NV_fence                    GL_NV_float_buffer            
    GL_NV_fog_distance             GL_NV_fragment_program        
    GL_NV_fragment_program_option  GL_NV_fragment_program2       
    GL_NV_framebuffer_multisample_ GL_NV_geometry_shader4        
    GL_NV_gpu_program4             GL_NV_half_float              
    GL_NV_light_max_exponent       GL_NV_multisample_coverage    
    GL_NV_multisample_filter_hint  GL_NV_occlusion_query         
    GL_NV_packed_depth_stencil     GL_NV_parameter_buffer_object 
    GL_NV_parameter_buffer_object2 GL_NV_pixel_data_range        
    GL_NV_point_sprite             GL_NV_primitive_restart       
    GL_NV_register_combiners       GL_NV_register_combiners2     
    GL_NV_texgen_reflection        GL_NV_texture_compression_vtc 
    GL_NV_texture_env_combine4     GL_NV_texture_expand_normal   
    GL_NV_texture_rectangle        GL_NV_texture_shader          
    GL_NV_texture_shader2          GL_NV_texture_shader3         
    GL_NV_transform_feedback       GL_NV_vertex_array_range      
    GL_NV_vertex_array_range2      GL_NV_vertex_program          
    GL_NV_vertex_program1_1        GL_NV_vertex_program2         
    GL_NV_vertex_program2_option   GL_NV_vertex_program3         
    GL_NVX_conditional_render      GL_NV_vertex_buffer_unified_me
    GL_NV_shader_buffer_load       GL_SGIS_generate_mipmap       
    GL_SGIS_texture_lod            GL_SGIX_depth_texture         
    GL_SGIX_shadow                 GL_SUN_slice_accum            
    GL_WIN_swap_hint               WGL_EXT_swap_control          
  Extensions (WGL):
    WGL_ARB_buffer_region          WGL_ARB_extensions_string     
    WGL_ARB_make_current_read      WGL_ARB_multisample           
    WGL_ARB_pbuffer                WGL_ARB_pixel_format          
    WGL_ARB_pixel_format_float     WGL_ARB_render_texture        
    WGL_ATI_pixel_format_float     WGL_ARB_create_context        
    WGL_EXT_extensions_string      WGL_EXT_framebuffer_sRGB      
    WGL_EXT_pixel_format_packed_fl WGL_EXT_swap_control          
    WGL_NV_float_buffer            WGL_NV_multisample_coverage   
    WGL_NV_render_depth_texture    WGL_NV_render_texture_rectangl
DGL Configuration:
  NPOT Textures: Disabled
  Texture Compression: Enabled
  Variable Texture Anisotropy: Enabled
  Utilized Texture Units: 2
  Multisampling: Enabled (32)
createContext: OpenGL.
GL_Init: Initializing Doomsday Graphics Library.
  Multitexturing enabled (full).
Sys_Init: Setting up machine state.
Sys_Init: Initializing keyboard, mouse and joystick.
I_InitJoystick: TWIN SHOCK JOYPAD
Sys_InitTimer.
Sys_InitMixer: Lautsprecher (Creative SB X-Fi)
  Driver: DirectSound

Comments

  • Yes this is a known issue. I had this very same problem back when I was looking into fixing the dsound plugin initialization. Evidently, Alchemy depends upon the direct sound init being done in the main process of the main executable.

    Most likely the outstanding issues with the dsound plugin won't be addressed as it seems somewhat pointless if we intend to (re)introduce an FMOD plugin.
  • Why not just not use Alchemy? You'll still get EAX2 - well I do anyway. DirectSound is not hardware accelerated under Vista, it's software emulated under XAUDIO/WASAPI.

    EDIT: Why did the Deng team give up on OpenAL again - out of curiosity? It still supports hardware acceleration 100% under DirectX10 and 11 (Vista/7) as long as the driver supports it - all the ALchemy capable cards are, thats what ALchemy is after all (a DirectSound -software- to OpenAL -hardware- wrapper).
  • Continuing development of the Direct Sound audio plugin would largely be a waste of time. It is only XP users would really benefit as, as you noted, ALchemy is required under Vista/Win7. Given that we already have a native OpenAL plugin (which I grant you, isn't as mature as the dsound plugin was) then we might as well drop the dsound plugin entirely once continued support is anything more than trivial.

    The Direct Sound API was phased out under Windows for very good reasons, not least of which were the ties it had to the (ancient) method of managing the audio pipeline using Windows audio mixer interfaces et al.

    In order to provide high quality audio (environmental effects, 3d positioning etc) under both XP and Vista/Win7 (whilst simultaneously supporting the sorry state of affairs that is audio under *nix) would basically require two entirely separate output paths.

    Going forward, I would like to see the OpenAL plugin retained but we'll see.
  • DaniJ wrote:
    Continuing development of the Direct Sound audio plugin would largely be a waste of time. It is only XP users would really benefit as, as you noted, ALchemy is required under Vista/Win7.
    Not to mention it's also useless for Linux and OSX builds.
    DaniJ wrote:
    The Direct Sound API was phased out under Windows for very good reasons, not least of which were the ties it had to the (ancient) method of managing the audio pipeline using Windows audio mixer interfaces et al.
    Agreed... when I first tried Vista Beta, I was impressed with WASAPI - particularly the volume mixer being capable of per-stream volume/muting. By ancient method I assume you mean Media Control Interface (MCI) - that's been around since Windows 95 :))
    DaniJ wrote:
    In order to provide high quality audio (environmental effects, 3d positioning etc) under both XP and Vista/Win7 (whilst simultaneously supporting the sorry state of affairs that is audio under *nix) would basically require two entirely separate output paths. Going forward, I would like to see the OpenAL plugin retained but we'll see.
    Doesn't the official OpenAL stack or "runtime" provide easily-installable binaries for all OS's Doomsday runs on? I remember using OpenAL in 1.8.6 under XP was the best one for me - I guess there's more to it that I'm not familiar with.

    I hope too to see Doomsday one day running on OpenAL at a core level, how much more can SDL handle? Of course when it comes down to it, whichever is easiest to program and the most ambiguous tech will be the DeFacto and benchmark of Deng development (I need to stop comparing OpenAL to OpenGL).

    If I may digress, either one though really I don't think too many people will complain as long as it works and is stable. Sound quality is a much neglected thing (probably 95% of home PC's run onboard APU's only) and even I never bothered to update my descreet ISA AWE32 as soon as I hit the Win98+AC'97 age - my current system being an X2 with Realtek Azalia onboard (the literal successor to AC'97 incase you didn't know). Out of curiosity, if I were to say - upgrade to an Audigy - would I get an FPS increase in *any* game? Even though i'm on Windows 7? I assume it'd only be for OpenAL native games (classic example is Quake 4) but with today's Dual and Quad core CPU's, is the performance increase provided by hardware sound really that much? I never bothered to research it.

    Regardless of what happens, either one interfaced with an FMOD layer on-top of it will be glorious. Or at least something which supports Module/Tracker formats for music! BASS library would be supreme but its not free.

    Not to worry, i've winded this thread into a very liberal rant - how dare I distract thee from squishing those bugs and nailing that Unified Networking core! I fully respect and see complete reason in the current roadmap and the priorities for Doomsday, you've all done so well and it's still somewhat exciting =D>
  • Apologies for the double post but I feel this deserves separation in the hope that it'll catch the eye of others who also spot this thread to get a clearer understanding of what DaniJ and I were babbling about :D

    An interesting extract from the Wikipedia article at http://en.wikipedia.org/wiki/DirectSound#Windows_Vista
    Windows Vista features a completely re-written audio stack based on the Universal Audio Architecture. Because of the architectural changes in the redesigned audio stack, a direct path from DirectSound to the audio drivers does not exist[1]. DirectSound and other APIs such as MME are emulated as WASAPI Session instances. DirectSound runs in emulation mode on the Microsoft software mixer. The emulator does not have hardware abstraction, so there is no hardware DirectSound acceleration, meaning hardware and software relying on DirectSound acceleration may have degraded performance. It's likely a supposed performance hit might not be noticeable, depending on the application and actual system hardware. In the case of hardware 3D audio effects played using DirectSound3D, they will not be playable.

    Third-party APIs such as ASIO and OpenAL are not affected by these architectural changes in Windows Vista. A solution for applications that wish to take advantage of hardware accelerated high-quality 3D positional audio is to use OpenAL. However, this only works if the manufacturer provides an OpenAL driver for their hardware.[2]

    As of 2007, a solution to re-enable hardware acceleration of DirectSound3D and Audio Effects, such as EAX, called Creative ALchemy was launched[3]. Creative ALchemy intercepts calls to DirectSound3D and translates them into OpenAL calls to be processed by supported hardware such as Sound Blaster X-Fi and Sound Blaster Audigy. For software-based Creative audio solutions, ALchemy utilizes its built-in 3D audio engine without using OpenAL at all.

    Realtek, a manufacturer of integrated HD audio codecs, has a product similar to ALchemy called 3D SoundBack. C-Media, a manufacturer of PC sound card chipsets, also has a solution called Xear3D EX, although it works instead by intercepting DirectSound3D calls transparently in the background without any user intervention.
  • While I think that FMOD is the number one choice for audio in the future (in terms of features and platform/HW support), OpenAL could be the preferred "free" alternative. It's just that OpenAL doesn't cover music playback, meaning that 1) decoding music will have to be done manually, 2) maybe there are libraries out there that offer music playback on OpenAL (?), 3) some other API will be used for music output (might be tricky), 4) no music, just sound effects.

    As far as DirectSound is concerned, it belongs in the trash bin for all I care. We should concentrate on FMOD, OpenAL, and SDL_mixer (in that order of priority).
  • Now I remember the other thread - something about OpenAL not having a Vorbis decoder? It might be something your already familiar with but I came up with this http://www.gamedev.net/reference/articl ... le2031.asp

    Indeed, though, if FMOD can do it all "out-of-the-box", that'd save a lot more work than having to worry about OpenAL + Vorbis SDK + [whatever other format SDK] + [...]

    @Self - KISS.... Keep it Simple, Stupid! :P
  • Is the problem with openal, that it can't play back doom,heretic/hexen's original music?
    also do you guys know about openal soft? http://kcat.strangesoft.net/openal.html
  • Huh there you go - I thought OpenAL was already cross-platform (comparing it to OpenGL again!). OpenAL Soft supports both ALSA and OSS which is good - I think those are the two I have to use simultaneously for various programs in openSUSE.
  • also recently (i guess) it can output to pulseaudio
  • KuriKai wrote:
    Is the problem with openal, that it can't play back doom,heretic/hexen's original music?
    AFAIK OpenAL doesn't support *any* music formats (the original music is basically MIDI). You just have sound sources and it's up to you to convert the music to a waveform format that OpenAL supports.

    I believe FMOD does support software-rendering of MIDI with custom soundfonts, so it should produce some very nice results out of the original music (providing a good soundfont is available, of course).
  • skyjake wrote:
    I believe FMOD does support software-rendering of MIDI with custom soundfonts, so it should produce some very nice results out of the original music (providing a good soundfont is available, of course).
    An aside, i've been considering making another "enhanced soundtrack" of the MIDI's which would of started with making my own SF in Cakewalk, idealy with public-domain samples or ones generated myself from Synth and Pads.

    I think FMOD is the way to go over OpenAL simply because it's more capable in a smaller package. Creating dynamic soundtracks for a first-person-adventure in Doomsday would then be 100% capable in the Sound and Music department.

    Now the questions... 1. Is FMOD naturally cross-platform with at least Linux and OSX? 2. Is there any chance FMOD plugin would be in Beta 7 (i.e. before 2010)?

    Please also consider taking a glance at http://www.un4seen.com/bass.html
  • JonusC wrote:
    Now the questions... 1. Is FMOD naturally cross-platform with at least Linux and OSX?
    Yes. You can see the supported platforms here: FMOD Downloads.

    One great thing about FMOD: in case the platform/audio HW doesn't support some feature, it can be emulated in software.
    JonusC wrote:
    2. Is there any chance FMOD plugin would be in Beta 7 (i.e. before 2010)?
    At the moment it seems unlikely, but nothing is set in stone...
  • JonusC wrote:
    I think FMOD is the way to go over OpenAL simply because it's more capable in a smaller package. Creating dynamic soundtracks for a first-person-adventure in Doomsday would then be 100% capable in the Sound and Music department.

    Now the questions... 1. Is FMOD naturally cross-platform with at least Linux and OSX?
    It is partially cross-platform to Linux. It doesn't run on every platform Linux runs on, nor does it support the other non-linux *nixes very well.

    Doomsday used to use FMOD for sound, but I removed it a long time ago as it isn't GPL compatible. I understand the audio system has been changed since that time however.
Sign In or Register to comment.