Herfried K. Wagner - HELP!

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • jer

    #1

    Herfried K. Wagner - HELP!

    I've noticed you've helped a lot of people that were trying to do sound
    recording through VB.net. I'm searched all over the internet, and I'm
    still having problems write sound to a wav file.

    My code originate from a VB 6 application, and I'm trying to use vb
    2005. I was having a lot of issues until I saw your post that cleaned
    up a lot of the structures and DLL calls in this:



    .... So my quesiton... Do you have a similar post or sample application
    for vb2005 that will write a wave file from the sound card?


    Thank you very much,

    Jerry

  • Herfried K. Wagner [MVP]

    #2
    Re: Herfried K. Wagner - HELP!

    "jer" <gerald.king@gm ail.comschrieb:
    I've noticed you've helped a lot of people that were trying to do sound
    recording through VB.net. I'm searched all over the internet, and I'm
    still having problems write sound to a wav file.
    Please do not address posts to a specific person here. Each thread/question
    can/should by answered by all readers.
    ... So my quesiton... Do you have a similar post or sample application
    for vb2005 that will write a wave file from the sound card?
    That's not that complicated using good old MCI:

    \\\
    Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
    ByVal lpszCommand As String, _
    ByVal lpszReturnStrin g As String, _
    ByVal cchReturn As Int32, _
    ByVal hwndCallback As IntPtr _
    ) As MCIERROR

    Public Enum MCIERROR
    MCIERR_BASE = 256

    MCIERR_INVALID_ DEVICE_ID = MCIERR_BASE + 1
    MCIERR_UNRECOGN IZED_KEYWORD = MCIERR_BASE + 3
    MCIERR_UNRECOGN IZED_COMMAND = MCIERR_BASE + 5
    MCIERR_HARDWARE = MCIERR_BASE + 6
    MCIERR_INVALID_ DEVICE_NAME = MCIERR_BASE + 7
    MCIERR_OUT_OF_M EMORY = MCIERR_BASE + 8
    MCIERR_DEVICE_O PEN = MCIERR_BASE + 9
    MCIERR_CANNOT_L OAD_DRIVER = MCIERR_BASE + 10
    MCIERR_MISSING_ COMMAND_STRING = MCIERR_BASE + 11
    MCIERR_PARAM_OV ERFLOW = MCIERR_BASE + 12
    MCIERR_MISSING_ STRING_ARGUMENT = MCIERR_BASE + 13
    MCIERR_BAD_INTE GER = MCIERR_BASE + 14
    MCIERR_PARSER_I NTERNAL = MCIERR_BASE + 15
    MCIERR_DRIVER_I NTERNAL = MCIERR_BASE + 16
    MCIERR_MISSING_ PARAMETER = MCIERR_BASE + 17
    MCIERR_UNSUPPOR TED_FUNCTION = MCIERR_BASE + 18
    MCIERR_FILE_NOT _FOUND = MCIERR_BASE + 19
    MCIERR_DEVICE_N OT_READY = MCIERR_BASE + 20
    MCIERR_INTERNAL = MCIERR_BASE + 21
    MCIERR_DRIVER = MCIERR_BASE + 22
    MCIERR_CANNOT_U SE_ALL = MCIERR_BASE + 23
    MCIERR_MULTIPLE = MCIERR_BASE + 24
    MCIERR_EXTENSIO N_NOT_FOUND = MCIERR_BASE + 25
    MCIERR_OUTOFRAN GE = MCIERR_BASE + 26
    MCIERR_FLAGS_NO T_COMPATIBLE = MCIERR_BASE + 28
    MCIERR_FILE_NOT _SAVED = MCIERR_BASE + 30
    MCIERR_DEVICE_T YPE_REQUIRED = MCIERR_BASE + 31
    MCIERR_DEVICE_L OCKED = MCIERR_BASE + 32
    MCIERR_DUPLICAT E_ALIAS = MCIERR_BASE + 33
    MCIERR_BAD_CONS TANT = MCIERR_BASE + 34
    MCIERR_MUST_USE _SHAREABLE = MCIERR_BASE + 35
    MCIERR_MISSING_ DEVICE_NAME = MCIERR_BASE + 36
    MCIERR_BAD_TIME _FORMAT = MCIERR_BASE + 37
    MCIERR_NO_CLOSI NG_QUOTE = MCIERR_BASE + 38
    MCIERR_DUPLICAT E_FLAGS = MCIERR_BASE + 39
    MCIERR_INVALID_ FILE = MCIERR_BASE + 40
    MCIERR_NULL_PAR AMETER_BLOCK = MCIERR_BASE + 41
    MCIERR_UNNAMED_ RESOURCE = MCIERR_BASE + 42
    MCIERR_NEW_REQU IRES_ALIAS = MCIERR_BASE + 43
    MCIERR_NOTIFY_O N_AUTO_OPEN = MCIERR_BASE + 44
    MCIERR_NO_ELEME NT_ALLOWED = MCIERR_BASE + 45
    MCIERR_NONAPPLI CABLE_FUNCTION = MCIERR_BASE + 46
    MCIERR_ILLEGAL_ FOR_AUTO_OPEN = MCIERR_BASE + 47
    MCIERR_FILENAME _REQUIRED = MCIERR_BASE + 48
    MCIERR_EXTRA_CH ARACTERS = MCIERR_BASE + 49
    MCIERR_DEVICE_N OT_INSTALLED = MCIERR_BASE + 50
    MCIERR_GET_CD = MCIERR_BASE + 51
    MCIERR_SET_CD = MCIERR_BASE + 52
    MCIERR_SET_DRIV E = MCIERR_BASE + 53
    MCIERR_DEVICE_L ENGTH = MCIERR_BASE + 54
    MCIERR_DEVICE_O RD_LENGTH = MCIERR_BASE + 55
    MCIERR_NO_INTEG ER = MCIERR_BASE + 56

    MCIERR_WAVE_OUT PUTSINUSE = MCIERR_BASE + 64
    MCIERR_WAVE_SET OUTPUTINUSE = MCIERR_BASE + 65
    MCIERR_WAVE_INP UTSINUSE = MCIERR_BASE + 66
    MCIERR_WAVE_SET INPUTINUSE = MCIERR_BASE + 67
    MCIERR_WAVE_OUT PUTUNSPECIFIED = MCIERR_BASE + 68
    MCIERR_WAVE_INP UTUNSPECIFIED = MCIERR_BASE + 69
    MCIERR_WAVE_OUT PUTSUNSUITABLE = MCIERR_BASE + 70
    MCIERR_WAVE_SET OUTPUTUNSUITABL E = MCIERR_BASE + 71
    MCIERR_WAVE_INP UTSUNSUITABLE = MCIERR_BASE + 72
    MCIERR_WAVE_SET INPUTUNSUITABLE = MCIERR_BASE + 73

    MCIERR_SEQ_DIV_ INCOMPATIBLE = MCIERR_BASE + 80
    MCIERR_SEQ_PORT _INUSE = MCIERR_BASE + 81
    MCIERR_SEQ_PORT _NONEXISTENT = MCIERR_BASE + 82
    MCIERR_SEQ_PORT _MAPNODEVICE = MCIERR_BASE + 83
    MCIERR_SEQ_PORT _MISCERROR = MCIERR_BASE + 84
    MCIERR_SEQ_TIME R = MCIERR_BASE + 85
    MCIERR_SEQ_PORT UNSPECIFIED = MCIERR_BASE + 86
    MCIERR_SEQ_NOMI DIPRESENT = MCIERR_BASE + 87

    MCIERR_NO_WINDO W = MCIERR_BASE + 90
    MCIERR_CREATEWI NDOW = MCIERR_BASE + 91
    MCIERR_FILE_REA D = MCIERR_BASE + 92
    MCIERR_FILE_WRI TE = MCIERR_BASE + 93

    MCIERR_NO_IDENT ITY = MCIERR_BASE + 94

    ' all custom device driver errors must be >= than this value
    MCIERR_CUSTOM_D RIVER_BASE = MCIERR_BASE + 256
    End Enum

    Private Function mciSimpleSendSt ring(ByVal Command As String) As MCIERROR
    Return mciSendString(C ommand, Nothing, 0, IntPtr.Zero)
    End Function

    Private Sub StartRecording( )
    mciSimpleSendSt ring("close all")
    mciSimpleSendSt ring("open new type waveaudio alias capture")

    ' Set capturing options here.
    'mciSimpleSendS tring("set capture bitspersample 16")
    'mciSimpleSendS tring("set capture samplespersec 44100")
    'mciSimpleSendS tring("set capture channels 2")
    mciSimpleSendSt ring("record capture")
    End Sub

    Private Sub StopRecording()
    mciSimpleSendSt ring("save capture C:\sample.wav")
    mciSimpleSendSt ring("close capture")
    End Sub
    ///

    --
    M S Herfried K. Wagner
    M V P <URL:http://dotnet.mvps.org/>
    V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

    Comment

    • jer

      #3
      Re: Sound recording - HELP!

      My apologies... I'll remove your name from the subject.
      So, you suggest the MCI recording instead of using waveopen/in?

      Maybe if I explain what I'm doing, you might have a better suggestion
      for me.

      Where I work, I can't get a good signal for a sports station I like to
      listing on the radio. So, I tought of an application that I could
      write in VB.Net that would record from a radio plugged into my PC at
      home (server), and record 30 minute chunks. This app would then
      convert the wav to an MP3 and list it on my web server. I could
      navigate to my web server (if I wanted to), and click to have it
      emailed to my google account for downloading to my work PC.

      The radio station does not offer streaming audio yet, so I can't listen
      over the radio. Also, with my new MP3 player, I'd have enough storage
      to sync it every night, and listen to the AM sports station the next
      day.

      So, that's my idea of the project. I will try using the code you've
      supplied first. Do you foresee any issues with the large data size of
      the recording? Would you still recommend this method, or maybe use
      DirectX?

      Thank you very much, and I greatly appreciate your input.

      Jerry



      Herfried K. Wagner [MVP] wrote:
      "jer" <gerald.king@gm ail.comschrieb:
      I've noticed you've helped a lot of people that were trying to do sound
      recording through VB.net. I'm searched all over the internet, and I'm
      still having problems write sound to a wav file.
      >
      Please do not address posts to a specific person here. Each thread/question
      can/should by answered by all readers.
      >
      ... So my quesiton... Do you have a similar post or sample application
      for vb2005 that will write a wave file from the sound card?
      >
      That's not that complicated using good old MCI:
      >
      \\\
      Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
      ByVal lpszCommand As String, _
      ByVal lpszReturnStrin g As String, _
      ByVal cchReturn As Int32, _
      ByVal hwndCallback As IntPtr _
      ) As MCIERROR
      >
      Public Enum MCIERROR
      MCIERR_BASE = 256
      >
      MCIERR_INVALID_ DEVICE_ID = MCIERR_BASE + 1
      MCIERR_UNRECOGN IZED_KEYWORD = MCIERR_BASE + 3
      MCIERR_UNRECOGN IZED_COMMAND = MCIERR_BASE + 5
      MCIERR_HARDWARE = MCIERR_BASE + 6
      MCIERR_INVALID_ DEVICE_NAME = MCIERR_BASE + 7
      MCIERR_OUT_OF_M EMORY = MCIERR_BASE + 8
      MCIERR_DEVICE_O PEN = MCIERR_BASE + 9
      MCIERR_CANNOT_L OAD_DRIVER = MCIERR_BASE + 10
      MCIERR_MISSING_ COMMAND_STRING = MCIERR_BASE + 11
      MCIERR_PARAM_OV ERFLOW = MCIERR_BASE + 12
      MCIERR_MISSING_ STRING_ARGUMENT = MCIERR_BASE + 13
      MCIERR_BAD_INTE GER = MCIERR_BASE + 14
      MCIERR_PARSER_I NTERNAL = MCIERR_BASE + 15
      MCIERR_DRIVER_I NTERNAL = MCIERR_BASE + 16
      MCIERR_MISSING_ PARAMETER = MCIERR_BASE + 17
      MCIERR_UNSUPPOR TED_FUNCTION = MCIERR_BASE + 18
      MCIERR_FILE_NOT _FOUND = MCIERR_BASE + 19
      MCIERR_DEVICE_N OT_READY = MCIERR_BASE + 20
      MCIERR_INTERNAL = MCIERR_BASE + 21
      MCIERR_DRIVER = MCIERR_BASE + 22
      MCIERR_CANNOT_U SE_ALL = MCIERR_BASE + 23
      MCIERR_MULTIPLE = MCIERR_BASE + 24
      MCIERR_EXTENSIO N_NOT_FOUND = MCIERR_BASE + 25
      MCIERR_OUTOFRAN GE = MCIERR_BASE + 26
      MCIERR_FLAGS_NO T_COMPATIBLE = MCIERR_BASE + 28
      MCIERR_FILE_NOT _SAVED = MCIERR_BASE + 30
      MCIERR_DEVICE_T YPE_REQUIRED = MCIERR_BASE + 31
      MCIERR_DEVICE_L OCKED = MCIERR_BASE + 32
      MCIERR_DUPLICAT E_ALIAS = MCIERR_BASE + 33
      MCIERR_BAD_CONS TANT = MCIERR_BASE + 34
      MCIERR_MUST_USE _SHAREABLE = MCIERR_BASE + 35
      MCIERR_MISSING_ DEVICE_NAME = MCIERR_BASE + 36
      MCIERR_BAD_TIME _FORMAT = MCIERR_BASE + 37
      MCIERR_NO_CLOSI NG_QUOTE = MCIERR_BASE + 38
      MCIERR_DUPLICAT E_FLAGS = MCIERR_BASE + 39
      MCIERR_INVALID_ FILE = MCIERR_BASE + 40
      MCIERR_NULL_PAR AMETER_BLOCK = MCIERR_BASE + 41
      MCIERR_UNNAMED_ RESOURCE = MCIERR_BASE + 42
      MCIERR_NEW_REQU IRES_ALIAS = MCIERR_BASE + 43
      MCIERR_NOTIFY_O N_AUTO_OPEN = MCIERR_BASE + 44
      MCIERR_NO_ELEME NT_ALLOWED = MCIERR_BASE + 45
      MCIERR_NONAPPLI CABLE_FUNCTION = MCIERR_BASE + 46
      MCIERR_ILLEGAL_ FOR_AUTO_OPEN = MCIERR_BASE + 47
      MCIERR_FILENAME _REQUIRED = MCIERR_BASE + 48
      MCIERR_EXTRA_CH ARACTERS = MCIERR_BASE + 49
      MCIERR_DEVICE_N OT_INSTALLED = MCIERR_BASE + 50
      MCIERR_GET_CD = MCIERR_BASE + 51
      MCIERR_SET_CD = MCIERR_BASE + 52
      MCIERR_SET_DRIV E = MCIERR_BASE + 53
      MCIERR_DEVICE_L ENGTH = MCIERR_BASE + 54
      MCIERR_DEVICE_O RD_LENGTH = MCIERR_BASE + 55
      MCIERR_NO_INTEG ER = MCIERR_BASE + 56
      >
      MCIERR_WAVE_OUT PUTSINUSE = MCIERR_BASE + 64
      MCIERR_WAVE_SET OUTPUTINUSE = MCIERR_BASE + 65
      MCIERR_WAVE_INP UTSINUSE = MCIERR_BASE + 66
      MCIERR_WAVE_SET INPUTINUSE = MCIERR_BASE + 67
      MCIERR_WAVE_OUT PUTUNSPECIFIED = MCIERR_BASE + 68
      MCIERR_WAVE_INP UTUNSPECIFIED = MCIERR_BASE + 69
      MCIERR_WAVE_OUT PUTSUNSUITABLE = MCIERR_BASE + 70
      MCIERR_WAVE_SET OUTPUTUNSUITABL E = MCIERR_BASE + 71
      MCIERR_WAVE_INP UTSUNSUITABLE = MCIERR_BASE + 72
      MCIERR_WAVE_SET INPUTUNSUITABLE = MCIERR_BASE + 73
      >
      MCIERR_SEQ_DIV_ INCOMPATIBLE = MCIERR_BASE + 80
      MCIERR_SEQ_PORT _INUSE = MCIERR_BASE + 81
      MCIERR_SEQ_PORT _NONEXISTENT = MCIERR_BASE + 82
      MCIERR_SEQ_PORT _MAPNODEVICE = MCIERR_BASE + 83
      MCIERR_SEQ_PORT _MISCERROR = MCIERR_BASE + 84
      MCIERR_SEQ_TIME R = MCIERR_BASE + 85
      MCIERR_SEQ_PORT UNSPECIFIED = MCIERR_BASE + 86
      MCIERR_SEQ_NOMI DIPRESENT = MCIERR_BASE + 87
      >
      MCIERR_NO_WINDO W = MCIERR_BASE + 90
      MCIERR_CREATEWI NDOW = MCIERR_BASE + 91
      MCIERR_FILE_REA D = MCIERR_BASE + 92
      MCIERR_FILE_WRI TE = MCIERR_BASE + 93
      >
      MCIERR_NO_IDENT ITY = MCIERR_BASE + 94
      >
      ' all custom device driver errors must be >= than this value
      MCIERR_CUSTOM_D RIVER_BASE = MCIERR_BASE + 256
      End Enum
      >
      Private Function mciSimpleSendSt ring(ByVal Command As String) As MCIERROR
      Return mciSendString(C ommand, Nothing, 0, IntPtr.Zero)
      End Function
      >
      Private Sub StartRecording( )
      mciSimpleSendSt ring("close all")
      mciSimpleSendSt ring("open new type waveaudio alias capture")
      >
      ' Set capturing options here.
      'mciSimpleSendS tring("set capture bitspersample 16")
      'mciSimpleSendS tring("set capture samplespersec 44100")
      'mciSimpleSendS tring("set capture channels 2")
      mciSimpleSendSt ring("record capture")
      End Sub
      >
      Private Sub StopRecording()
      mciSimpleSendSt ring("save capture C:\sample.wav")
      mciSimpleSendSt ring("close capture")
      End Sub
      ///
      >
      --
      M S Herfried K. Wagner
      M V P <URL:http://dotnet.mvps.org/>
      V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

      Comment

      • Herfried K. Wagner [MVP]

        #4
        Re: Sound recording - HELP!

        "jer" <gerald.king@gm ail.comschrieb:
        So, you suggest the MCI recording instead of using waveopen/in?
        As often, there are many different ways to archive a certain thing.
        Where I work, I can't get a good signal for a sports station I like to
        listing on the radio. So, I tought of an application that I could
        write in VB.Net that would record from a radio plugged into my PC at
        home (server), and record 30 minute chunks. This app would then
        convert the wav to an MP3 and list it on my web server. I could
        navigate to my web server (if I wanted to), and click to have it
        emailed to my google account for downloading to my work PC.
        >
        The radio station does not offer streaming audio yet, so I can't listen
        over the radio. Also, with my new MP3 player, I'd have enough storage
        to sync it every night, and listen to the AM sports station the next
        day.
        >
        So, that's my idea of the project. I will try using the code you've
        supplied first. Do you foresee any issues with the large data size of
        the recording?
        I haven't tested it but setting up such a test should be pretty easy. I
        assume the recorded data is buffered somewhere.
        Would you still recommend this method, or maybe use
        DirectX?
        DirectX would work too, but I assume the posted solution is easier to
        implement (I already posted a basic working sample).

        --
        M S Herfried K. Wagner
        M V P <URL:http://dotnet.mvps.org/>
        V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

        Comment

        • Cor Ligthert [MVP]

          #5
          Re: Sound recording - HELP!

          Jer,

          I am impressed by the answer from Herfried, I never get such nice samples
          from him.

          However in the SDK from DirectX are(were) in my idea samples that handles
          what you want.

          The pittfall is that the DirectX people are not able to write VB.Net
          (probably to difficult for them) so the samples are only in C#.

          Cor


          "jer" <gerald.king@gm ail.comschreef in bericht
          news:1166565254 .425871.58350@i 12g2000cwa.goog legroups.com...
          My apologies... I'll remove your name from the subject.
          So, you suggest the MCI recording instead of using waveopen/in?
          >
          Maybe if I explain what I'm doing, you might have a better suggestion
          for me.
          >
          Where I work, I can't get a good signal for a sports station I like to
          listing on the radio. So, I tought of an application that I could
          write in VB.Net that would record from a radio plugged into my PC at
          home (server), and record 30 minute chunks. This app would then
          convert the wav to an MP3 and list it on my web server. I could
          navigate to my web server (if I wanted to), and click to have it
          emailed to my google account for downloading to my work PC.
          >
          The radio station does not offer streaming audio yet, so I can't listen
          over the radio. Also, with my new MP3 player, I'd have enough storage
          to sync it every night, and listen to the AM sports station the next
          day.
          >
          So, that's my idea of the project. I will try using the code you've
          supplied first. Do you foresee any issues with the large data size of
          the recording? Would you still recommend this method, or maybe use
          DirectX?
          >
          Thank you very much, and I greatly appreciate your input.
          >
          Jerry
          >
          >
          >
          Herfried K. Wagner [MVP] wrote:
          >"jer" <gerald.king@gm ail.comschrieb:
          I've noticed you've helped a lot of people that were trying to do sound
          recording through VB.net. I'm searched all over the internet, and I'm
          still having problems write sound to a wav file.
          >>
          >Please do not address posts to a specific person here. Each
          >thread/question
          >can/should by answered by all readers.
          >>
          ... So my quesiton... Do you have a similar post or sample application
          for vb2005 that will write a wave file from the sound card?
          >>
          >That's not that complicated using good old MCI:
          >>
          >\\\
          >Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
          > ByVal lpszCommand As String, _
          > ByVal lpszReturnStrin g As String, _
          > ByVal cchReturn As Int32, _
          > ByVal hwndCallback As IntPtr _
          >) As MCIERROR
          >>
          >Public Enum MCIERROR
          > MCIERR_BASE = 256
          >>
          > MCIERR_INVALID_ DEVICE_ID = MCIERR_BASE + 1
          > MCIERR_UNRECOGN IZED_KEYWORD = MCIERR_BASE + 3
          > MCIERR_UNRECOGN IZED_COMMAND = MCIERR_BASE + 5
          > MCIERR_HARDWARE = MCIERR_BASE + 6
          > MCIERR_INVALID_ DEVICE_NAME = MCIERR_BASE + 7
          > MCIERR_OUT_OF_M EMORY = MCIERR_BASE + 8
          > MCIERR_DEVICE_O PEN = MCIERR_BASE + 9
          > MCIERR_CANNOT_L OAD_DRIVER = MCIERR_BASE + 10
          > MCIERR_MISSING_ COMMAND_STRING = MCIERR_BASE + 11
          > MCIERR_PARAM_OV ERFLOW = MCIERR_BASE + 12
          > MCIERR_MISSING_ STRING_ARGUMENT = MCIERR_BASE + 13
          > MCIERR_BAD_INTE GER = MCIERR_BASE + 14
          > MCIERR_PARSER_I NTERNAL = MCIERR_BASE + 15
          > MCIERR_DRIVER_I NTERNAL = MCIERR_BASE + 16
          > MCIERR_MISSING_ PARAMETER = MCIERR_BASE + 17
          > MCIERR_UNSUPPOR TED_FUNCTION = MCIERR_BASE + 18
          > MCIERR_FILE_NOT _FOUND = MCIERR_BASE + 19
          > MCIERR_DEVICE_N OT_READY = MCIERR_BASE + 20
          > MCIERR_INTERNAL = MCIERR_BASE + 21
          > MCIERR_DRIVER = MCIERR_BASE + 22
          > MCIERR_CANNOT_U SE_ALL = MCIERR_BASE + 23
          > MCIERR_MULTIPLE = MCIERR_BASE + 24
          > MCIERR_EXTENSIO N_NOT_FOUND = MCIERR_BASE + 25
          > MCIERR_OUTOFRAN GE = MCIERR_BASE + 26
          > MCIERR_FLAGS_NO T_COMPATIBLE = MCIERR_BASE + 28
          > MCIERR_FILE_NOT _SAVED = MCIERR_BASE + 30
          > MCIERR_DEVICE_T YPE_REQUIRED = MCIERR_BASE + 31
          > MCIERR_DEVICE_L OCKED = MCIERR_BASE + 32
          > MCIERR_DUPLICAT E_ALIAS = MCIERR_BASE + 33
          > MCIERR_BAD_CONS TANT = MCIERR_BASE + 34
          > MCIERR_MUST_USE _SHAREABLE = MCIERR_BASE + 35
          > MCIERR_MISSING_ DEVICE_NAME = MCIERR_BASE + 36
          > MCIERR_BAD_TIME _FORMAT = MCIERR_BASE + 37
          > MCIERR_NO_CLOSI NG_QUOTE = MCIERR_BASE + 38
          > MCIERR_DUPLICAT E_FLAGS = MCIERR_BASE + 39
          > MCIERR_INVALID_ FILE = MCIERR_BASE + 40
          > MCIERR_NULL_PAR AMETER_BLOCK = MCIERR_BASE + 41
          > MCIERR_UNNAMED_ RESOURCE = MCIERR_BASE + 42
          > MCIERR_NEW_REQU IRES_ALIAS = MCIERR_BASE + 43
          > MCIERR_NOTIFY_O N_AUTO_OPEN = MCIERR_BASE + 44
          > MCIERR_NO_ELEME NT_ALLOWED = MCIERR_BASE + 45
          > MCIERR_NONAPPLI CABLE_FUNCTION = MCIERR_BASE + 46
          > MCIERR_ILLEGAL_ FOR_AUTO_OPEN = MCIERR_BASE + 47
          > MCIERR_FILENAME _REQUIRED = MCIERR_BASE + 48
          > MCIERR_EXTRA_CH ARACTERS = MCIERR_BASE + 49
          > MCIERR_DEVICE_N OT_INSTALLED = MCIERR_BASE + 50
          > MCIERR_GET_CD = MCIERR_BASE + 51
          > MCIERR_SET_CD = MCIERR_BASE + 52
          > MCIERR_SET_DRIV E = MCIERR_BASE + 53
          > MCIERR_DEVICE_L ENGTH = MCIERR_BASE + 54
          > MCIERR_DEVICE_O RD_LENGTH = MCIERR_BASE + 55
          > MCIERR_NO_INTEG ER = MCIERR_BASE + 56
          >>
          > MCIERR_WAVE_OUT PUTSINUSE = MCIERR_BASE + 64
          > MCIERR_WAVE_SET OUTPUTINUSE = MCIERR_BASE + 65
          > MCIERR_WAVE_INP UTSINUSE = MCIERR_BASE + 66
          > MCIERR_WAVE_SET INPUTINUSE = MCIERR_BASE + 67
          > MCIERR_WAVE_OUT PUTUNSPECIFIED = MCIERR_BASE + 68
          > MCIERR_WAVE_INP UTUNSPECIFIED = MCIERR_BASE + 69
          > MCIERR_WAVE_OUT PUTSUNSUITABLE = MCIERR_BASE + 70
          > MCIERR_WAVE_SET OUTPUTUNSUITABL E = MCIERR_BASE + 71
          > MCIERR_WAVE_INP UTSUNSUITABLE = MCIERR_BASE + 72
          > MCIERR_WAVE_SET INPUTUNSUITABLE = MCIERR_BASE + 73
          >>
          > MCIERR_SEQ_DIV_ INCOMPATIBLE = MCIERR_BASE + 80
          > MCIERR_SEQ_PORT _INUSE = MCIERR_BASE + 81
          > MCIERR_SEQ_PORT _NONEXISTENT = MCIERR_BASE + 82
          > MCIERR_SEQ_PORT _MAPNODEVICE = MCIERR_BASE + 83
          > MCIERR_SEQ_PORT _MISCERROR = MCIERR_BASE + 84
          > MCIERR_SEQ_TIME R = MCIERR_BASE + 85
          > MCIERR_SEQ_PORT UNSPECIFIED = MCIERR_BASE + 86
          > MCIERR_SEQ_NOMI DIPRESENT = MCIERR_BASE + 87
          >>
          > MCIERR_NO_WINDO W = MCIERR_BASE + 90
          > MCIERR_CREATEWI NDOW = MCIERR_BASE + 91
          > MCIERR_FILE_REA D = MCIERR_BASE + 92
          > MCIERR_FILE_WRI TE = MCIERR_BASE + 93
          >>
          > MCIERR_NO_IDENT ITY = MCIERR_BASE + 94
          >>
          > ' all custom device driver errors must be >= than this value
          > MCIERR_CUSTOM_D RIVER_BASE = MCIERR_BASE + 256
          >End Enum
          >>
          >Private Function mciSimpleSendSt ring(ByVal Command As String) As MCIERROR
          > Return mciSendString(C ommand, Nothing, 0, IntPtr.Zero)
          >End Function
          >>
          >Private Sub StartRecording( )
          > mciSimpleSendSt ring("close all")
          > mciSimpleSendSt ring("open new type waveaudio alias capture")
          >>
          > ' Set capturing options here.
          > 'mciSimpleSendS tring("set capture bitspersample 16")
          > 'mciSimpleSendS tring("set capture samplespersec 44100")
          > 'mciSimpleSendS tring("set capture channels 2")
          > mciSimpleSendSt ring("record capture")
          >End Sub
          >>
          >Private Sub StopRecording()
          > mciSimpleSendSt ring("save capture C:\sample.wav")
          > mciSimpleSendSt ring("close capture")
          >End Sub
          >///
          >>
          >--
          > M S Herfried K. Wagner
          >M V P <URL:http://dotnet.mvps.org/>
          > V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
          >

          Comment

          • jer

            #6
            Re: Sound recording - HELP!

            Cor,

            I think that was my initial shortcoming. I have an app that does a
            similar thing in vb6, and I wanted to upgrade it to VB2005 because I
            really liked the 'run an application in a task tray' tools with vb
            2005.

            I've found the difference in structure declarations, api calls, and
            parameter passing to be the root of my issues. As stated prior, I
            found a post of a different way to declare the functions allowed me to
            just list the devices on the machine, so I figured that it had to be my
            issue of not being able to record.

            So, in short, converting from one language, or version to another, got
            me in this mess. heh... But, maybe this would be a great app to get my
            feet wet with C#.

            I'll let you know how it goes... Maybe even post the app, since I had
            such a problem finding the info myself.

            Jerry




            Cor Ligthert [MVP] wrote:
            Jer,
            >
            I am impressed by the answer from Herfried, I never get such nice samples
            from him.
            >
            However in the SDK from DirectX are(were) in my idea samples that handles
            what you want.
            >
            The pittfall is that the DirectX people are not able to write VB.Net
            (probably to difficult for them) so the samples are only in C#.
            >
            Cor
            >
            >
            "jer" <gerald.king@gm ail.comschreef in bericht
            news:1166565254 .425871.58350@i 12g2000cwa.goog legroups.com...
            My apologies... I'll remove your name from the subject.
            So, you suggest the MCI recording instead of using waveopen/in?

            Maybe if I explain what I'm doing, you might have a better suggestion
            for me.

            Where I work, I can't get a good signal for a sports station I like to
            listing on the radio. So, I tought of an application that I could
            write in VB.Net that would record from a radio plugged into my PC at
            home (server), and record 30 minute chunks. This app would then
            convert the wav to an MP3 and list it on my web server. I could
            navigate to my web server (if I wanted to), and click to have it
            emailed to my google account for downloading to my work PC.

            The radio station does not offer streaming audio yet, so I can't listen
            over the radio. Also, with my new MP3 player, I'd have enough storage
            to sync it every night, and listen to the AM sports station the next
            day.

            So, that's my idea of the project. I will try using the code you've
            supplied first. Do you foresee any issues with the large data size of
            the recording? Would you still recommend this method, or maybe use
            DirectX?

            Thank you very much, and I greatly appreciate your input.

            Jerry



            Herfried K. Wagner [MVP] wrote:
            "jer" <gerald.king@gm ail.comschrieb:
            I've noticed you've helped a lot of people that were trying to do sound
            recording through VB.net. I'm searched all over the internet, and I'm
            still having problems write sound to a wav file.
            >
            Please do not address posts to a specific person here. Each
            thread/question
            can/should by answered by all readers.
            >
            ... So my quesiton... Do you have a similar post or sample application
            for vb2005 that will write a wave file from the sound card?
            >
            That's not that complicated using good old MCI:
            >
            \\\
            Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
            ByVal lpszCommand As String, _
            ByVal lpszReturnStrin g As String, _
            ByVal cchReturn As Int32, _
            ByVal hwndCallback As IntPtr _
            ) As MCIERROR
            >
            Public Enum MCIERROR
            MCIERR_BASE = 256
            >
            MCIERR_INVALID_ DEVICE_ID = MCIERR_BASE + 1
            MCIERR_UNRECOGN IZED_KEYWORD = MCIERR_BASE + 3
            MCIERR_UNRECOGN IZED_COMMAND = MCIERR_BASE + 5
            MCIERR_HARDWARE = MCIERR_BASE + 6
            MCIERR_INVALID_ DEVICE_NAME = MCIERR_BASE + 7
            MCIERR_OUT_OF_M EMORY = MCIERR_BASE + 8
            MCIERR_DEVICE_O PEN = MCIERR_BASE + 9
            MCIERR_CANNOT_L OAD_DRIVER = MCIERR_BASE + 10
            MCIERR_MISSING_ COMMAND_STRING = MCIERR_BASE + 11
            MCIERR_PARAM_OV ERFLOW = MCIERR_BASE + 12
            MCIERR_MISSING_ STRING_ARGUMENT = MCIERR_BASE + 13
            MCIERR_BAD_INTE GER = MCIERR_BASE + 14
            MCIERR_PARSER_I NTERNAL = MCIERR_BASE + 15
            MCIERR_DRIVER_I NTERNAL = MCIERR_BASE + 16
            MCIERR_MISSING_ PARAMETER = MCIERR_BASE + 17
            MCIERR_UNSUPPOR TED_FUNCTION = MCIERR_BASE + 18
            MCIERR_FILE_NOT _FOUND = MCIERR_BASE + 19
            MCIERR_DEVICE_N OT_READY = MCIERR_BASE + 20
            MCIERR_INTERNAL = MCIERR_BASE + 21
            MCIERR_DRIVER = MCIERR_BASE + 22
            MCIERR_CANNOT_U SE_ALL = MCIERR_BASE + 23
            MCIERR_MULTIPLE = MCIERR_BASE + 24
            MCIERR_EXTENSIO N_NOT_FOUND = MCIERR_BASE + 25
            MCIERR_OUTOFRAN GE = MCIERR_BASE + 26
            MCIERR_FLAGS_NO T_COMPATIBLE = MCIERR_BASE + 28
            MCIERR_FILE_NOT _SAVED = MCIERR_BASE + 30
            MCIERR_DEVICE_T YPE_REQUIRED = MCIERR_BASE + 31
            MCIERR_DEVICE_L OCKED = MCIERR_BASE + 32
            MCIERR_DUPLICAT E_ALIAS = MCIERR_BASE + 33
            MCIERR_BAD_CONS TANT = MCIERR_BASE + 34
            MCIERR_MUST_USE _SHAREABLE = MCIERR_BASE + 35
            MCIERR_MISSING_ DEVICE_NAME = MCIERR_BASE + 36
            MCIERR_BAD_TIME _FORMAT = MCIERR_BASE + 37
            MCIERR_NO_CLOSI NG_QUOTE = MCIERR_BASE + 38
            MCIERR_DUPLICAT E_FLAGS = MCIERR_BASE + 39
            MCIERR_INVALID_ FILE = MCIERR_BASE + 40
            MCIERR_NULL_PAR AMETER_BLOCK = MCIERR_BASE + 41
            MCIERR_UNNAMED_ RESOURCE = MCIERR_BASE + 42
            MCIERR_NEW_REQU IRES_ALIAS = MCIERR_BASE + 43
            MCIERR_NOTIFY_O N_AUTO_OPEN = MCIERR_BASE + 44
            MCIERR_NO_ELEME NT_ALLOWED = MCIERR_BASE + 45
            MCIERR_NONAPPLI CABLE_FUNCTION = MCIERR_BASE + 46
            MCIERR_ILLEGAL_ FOR_AUTO_OPEN = MCIERR_BASE + 47
            MCIERR_FILENAME _REQUIRED = MCIERR_BASE + 48
            MCIERR_EXTRA_CH ARACTERS = MCIERR_BASE + 49
            MCIERR_DEVICE_N OT_INSTALLED = MCIERR_BASE + 50
            MCIERR_GET_CD = MCIERR_BASE + 51
            MCIERR_SET_CD = MCIERR_BASE + 52
            MCIERR_SET_DRIV E = MCIERR_BASE + 53
            MCIERR_DEVICE_L ENGTH = MCIERR_BASE + 54
            MCIERR_DEVICE_O RD_LENGTH = MCIERR_BASE + 55
            MCIERR_NO_INTEG ER = MCIERR_BASE + 56
            >
            MCIERR_WAVE_OUT PUTSINUSE = MCIERR_BASE + 64
            MCIERR_WAVE_SET OUTPUTINUSE = MCIERR_BASE + 65
            MCIERR_WAVE_INP UTSINUSE = MCIERR_BASE + 66
            MCIERR_WAVE_SET INPUTINUSE = MCIERR_BASE + 67
            MCIERR_WAVE_OUT PUTUNSPECIFIED = MCIERR_BASE + 68
            MCIERR_WAVE_INP UTUNSPECIFIED = MCIERR_BASE + 69
            MCIERR_WAVE_OUT PUTSUNSUITABLE = MCIERR_BASE + 70
            MCIERR_WAVE_SET OUTPUTUNSUITABL E = MCIERR_BASE + 71
            MCIERR_WAVE_INP UTSUNSUITABLE = MCIERR_BASE + 72
            MCIERR_WAVE_SET INPUTUNSUITABLE = MCIERR_BASE + 73
            >
            MCIERR_SEQ_DIV_ INCOMPATIBLE = MCIERR_BASE + 80
            MCIERR_SEQ_PORT _INUSE = MCIERR_BASE + 81
            MCIERR_SEQ_PORT _NONEXISTENT = MCIERR_BASE + 82
            MCIERR_SEQ_PORT _MAPNODEVICE = MCIERR_BASE + 83
            MCIERR_SEQ_PORT _MISCERROR = MCIERR_BASE + 84
            MCIERR_SEQ_TIME R = MCIERR_BASE + 85
            MCIERR_SEQ_PORT UNSPECIFIED = MCIERR_BASE + 86
            MCIERR_SEQ_NOMI DIPRESENT = MCIERR_BASE + 87
            >
            MCIERR_NO_WINDO W = MCIERR_BASE + 90
            MCIERR_CREATEWI NDOW = MCIERR_BASE + 91
            MCIERR_FILE_REA D = MCIERR_BASE + 92
            MCIERR_FILE_WRI TE = MCIERR_BASE + 93
            >
            MCIERR_NO_IDENT ITY = MCIERR_BASE + 94
            >
            ' all custom device driver errors must be >= than this value
            MCIERR_CUSTOM_D RIVER_BASE = MCIERR_BASE + 256
            End Enum
            >
            Private Function mciSimpleSendSt ring(ByVal Command As String) As MCIERROR
            Return mciSendString(C ommand, Nothing, 0, IntPtr.Zero)
            End Function
            >
            Private Sub StartRecording( )
            mciSimpleSendSt ring("close all")
            mciSimpleSendSt ring("open new type waveaudio alias capture")
            >
            ' Set capturing options here.
            'mciSimpleSendS tring("set capture bitspersample 16")
            'mciSimpleSendS tring("set capture samplespersec 44100")
            'mciSimpleSendS tring("set capture channels 2")
            mciSimpleSendSt ring("record capture")
            End Sub
            >
            Private Sub StopRecording()
            mciSimpleSendSt ring("save capture C:\sample.wav")
            mciSimpleSendSt ring("close capture")
            End Sub
            ///
            >
            --
            M S Herfried K. Wagner
            M V P <URL:http://dotnet.mvps.org/>
            V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

            Comment

            • =?Utf-8?B?RGVubmlz?=

              #7
              Re: Herfried K. Wagner - HELP!

              Thanks for excellent Example. Where did you find the command string
              components, i.e., a tutorial or documentation on command strings. I am
              trying to convert MP3 files into wav files but have hit brick walls unless I
              learn C.
              --
              Dennis in Houston


              "Herfried K. Wagner [MVP]" wrote:
              "jer" <gerald.king@gm ail.comschrieb:
              I've noticed you've helped a lot of people that were trying to do sound
              recording through VB.net. I'm searched all over the internet, and I'm
              still having problems write sound to a wav file.
              >
              Please do not address posts to a specific person here. Each thread/question
              can/should by answered by all readers.
              >
              ... So my quesiton... Do you have a similar post or sample application
              for vb2005 that will write a wave file from the sound card?
              >
              That's not that complicated using good old MCI:
              >
              \\\
              Private Declare Auto Function mciSendString Lib "winmm.dll" ( _
              ByVal lpszCommand As String, _
              ByVal lpszReturnStrin g As String, _
              ByVal cchReturn As Int32, _
              ByVal hwndCallback As IntPtr _
              ) As MCIERROR
              >
              Public Enum MCIERROR
              MCIERR_BASE = 256
              >
              MCIERR_INVALID_ DEVICE_ID = MCIERR_BASE + 1
              MCIERR_UNRECOGN IZED_KEYWORD = MCIERR_BASE + 3
              MCIERR_UNRECOGN IZED_COMMAND = MCIERR_BASE + 5
              MCIERR_HARDWARE = MCIERR_BASE + 6
              MCIERR_INVALID_ DEVICE_NAME = MCIERR_BASE + 7
              MCIERR_OUT_OF_M EMORY = MCIERR_BASE + 8
              MCIERR_DEVICE_O PEN = MCIERR_BASE + 9
              MCIERR_CANNOT_L OAD_DRIVER = MCIERR_BASE + 10
              MCIERR_MISSING_ COMMAND_STRING = MCIERR_BASE + 11
              MCIERR_PARAM_OV ERFLOW = MCIERR_BASE + 12
              MCIERR_MISSING_ STRING_ARGUMENT = MCIERR_BASE + 13
              MCIERR_BAD_INTE GER = MCIERR_BASE + 14
              MCIERR_PARSER_I NTERNAL = MCIERR_BASE + 15
              MCIERR_DRIVER_I NTERNAL = MCIERR_BASE + 16
              MCIERR_MISSING_ PARAMETER = MCIERR_BASE + 17
              MCIERR_UNSUPPOR TED_FUNCTION = MCIERR_BASE + 18
              MCIERR_FILE_NOT _FOUND = MCIERR_BASE + 19
              MCIERR_DEVICE_N OT_READY = MCIERR_BASE + 20
              MCIERR_INTERNAL = MCIERR_BASE + 21
              MCIERR_DRIVER = MCIERR_BASE + 22
              MCIERR_CANNOT_U SE_ALL = MCIERR_BASE + 23
              MCIERR_MULTIPLE = MCIERR_BASE + 24
              MCIERR_EXTENSIO N_NOT_FOUND = MCIERR_BASE + 25
              MCIERR_OUTOFRAN GE = MCIERR_BASE + 26
              MCIERR_FLAGS_NO T_COMPATIBLE = MCIERR_BASE + 28
              MCIERR_FILE_NOT _SAVED = MCIERR_BASE + 30
              MCIERR_DEVICE_T YPE_REQUIRED = MCIERR_BASE + 31
              MCIERR_DEVICE_L OCKED = MCIERR_BASE + 32
              MCIERR_DUPLICAT E_ALIAS = MCIERR_BASE + 33
              MCIERR_BAD_CONS TANT = MCIERR_BASE + 34
              MCIERR_MUST_USE _SHAREABLE = MCIERR_BASE + 35
              MCIERR_MISSING_ DEVICE_NAME = MCIERR_BASE + 36
              MCIERR_BAD_TIME _FORMAT = MCIERR_BASE + 37
              MCIERR_NO_CLOSI NG_QUOTE = MCIERR_BASE + 38
              MCIERR_DUPLICAT E_FLAGS = MCIERR_BASE + 39
              MCIERR_INVALID_ FILE = MCIERR_BASE + 40
              MCIERR_NULL_PAR AMETER_BLOCK = MCIERR_BASE + 41
              MCIERR_UNNAMED_ RESOURCE = MCIERR_BASE + 42
              MCIERR_NEW_REQU IRES_ALIAS = MCIERR_BASE + 43
              MCIERR_NOTIFY_O N_AUTO_OPEN = MCIERR_BASE + 44
              MCIERR_NO_ELEME NT_ALLOWED = MCIERR_BASE + 45
              MCIERR_NONAPPLI CABLE_FUNCTION = MCIERR_BASE + 46
              MCIERR_ILLEGAL_ FOR_AUTO_OPEN = MCIERR_BASE + 47
              MCIERR_FILENAME _REQUIRED = MCIERR_BASE + 48
              MCIERR_EXTRA_CH ARACTERS = MCIERR_BASE + 49
              MCIERR_DEVICE_N OT_INSTALLED = MCIERR_BASE + 50
              MCIERR_GET_CD = MCIERR_BASE + 51
              MCIERR_SET_CD = MCIERR_BASE + 52
              MCIERR_SET_DRIV E = MCIERR_BASE + 53
              MCIERR_DEVICE_L ENGTH = MCIERR_BASE + 54
              MCIERR_DEVICE_O RD_LENGTH = MCIERR_BASE + 55
              MCIERR_NO_INTEG ER = MCIERR_BASE + 56
              >
              MCIERR_WAVE_OUT PUTSINUSE = MCIERR_BASE + 64
              MCIERR_WAVE_SET OUTPUTINUSE = MCIERR_BASE + 65
              MCIERR_WAVE_INP UTSINUSE = MCIERR_BASE + 66
              MCIERR_WAVE_SET INPUTINUSE = MCIERR_BASE + 67
              MCIERR_WAVE_OUT PUTUNSPECIFIED = MCIERR_BASE + 68
              MCIERR_WAVE_INP UTUNSPECIFIED = MCIERR_BASE + 69
              MCIERR_WAVE_OUT PUTSUNSUITABLE = MCIERR_BASE + 70
              MCIERR_WAVE_SET OUTPUTUNSUITABL E = MCIERR_BASE + 71
              MCIERR_WAVE_INP UTSUNSUITABLE = MCIERR_BASE + 72
              MCIERR_WAVE_SET INPUTUNSUITABLE = MCIERR_BASE + 73
              >
              MCIERR_SEQ_DIV_ INCOMPATIBLE = MCIERR_BASE + 80
              MCIERR_SEQ_PORT _INUSE = MCIERR_BASE + 81
              MCIERR_SEQ_PORT _NONEXISTENT = MCIERR_BASE + 82
              MCIERR_SEQ_PORT _MAPNODEVICE = MCIERR_BASE + 83
              MCIERR_SEQ_PORT _MISCERROR = MCIERR_BASE + 84
              MCIERR_SEQ_TIME R = MCIERR_BASE + 85
              MCIERR_SEQ_PORT UNSPECIFIED = MCIERR_BASE + 86
              MCIERR_SEQ_NOMI DIPRESENT = MCIERR_BASE + 87
              >
              MCIERR_NO_WINDO W = MCIERR_BASE + 90
              MCIERR_CREATEWI NDOW = MCIERR_BASE + 91
              MCIERR_FILE_REA D = MCIERR_BASE + 92
              MCIERR_FILE_WRI TE = MCIERR_BASE + 93
              >
              MCIERR_NO_IDENT ITY = MCIERR_BASE + 94
              >
              ' all custom device driver errors must be >= than this value
              MCIERR_CUSTOM_D RIVER_BASE = MCIERR_BASE + 256
              End Enum
              >
              Private Function mciSimpleSendSt ring(ByVal Command As String) As MCIERROR
              Return mciSendString(C ommand, Nothing, 0, IntPtr.Zero)
              End Function
              >
              Private Sub StartRecording( )
              mciSimpleSendSt ring("close all")
              mciSimpleSendSt ring("open new type waveaudio alias capture")
              >
              ' Set capturing options here.
              'mciSimpleSendS tring("set capture bitspersample 16")
              'mciSimpleSendS tring("set capture samplespersec 44100")
              'mciSimpleSendS tring("set capture channels 2")
              mciSimpleSendSt ring("record capture")
              End Sub
              >
              Private Sub StopRecording()
              mciSimpleSendSt ring("save capture C:\sample.wav")
              mciSimpleSendSt ring("close capture")
              End Sub
              ///
              >
              --
              M S Herfried K. Wagner
              M V P <URL:http://dotnet.mvps.org/>
              V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
              >
              >

              Comment

              • Herfried K. Wagner [MVP]

                #8
                Re: Herfried K. Wagner - HELP!

                "Dennis" <Dennis@discuss ions.microsoft. comschrieb:
                Where did you find the command string components, i.e.,
                a tutorial or documentation on command strings. I am
                trying to convert MP3 files into wav files but have hit brick
                walls unless I learn C.
                Windows Multimedia -- Multimedia Command Strings
                <URL:http://msdn.microsoft. com/library/en-us/multimed/htm/_win32_multimed ia_command_stri ngs.asp>

                --
                M S Herfried K. Wagner
                M V P <URL:http://dotnet.mvps.org/>
                V B <URL:http://dotnet.mvps.org/dotnet/faqs/>

                Comment

                • =?Utf-8?B?RGVubmlz?=

                  #9
                  Re: Herfried K. Wagner - HELP!

                  Thanks for site.
                  --
                  Dennis in Houston


                  "Herfried K. Wagner [MVP]" wrote:
                  "Dennis" <Dennis@discuss ions.microsoft. comschrieb:
                  Where did you find the command string components, i.e.,
                  a tutorial or documentation on command strings. I am
                  trying to convert MP3 files into wav files but have hit brick
                  walls unless I learn C.
                  >
                  Windows Multimedia -- Multimedia Command Strings
                  <URL:http://msdn.microsoft. com/library/en-us/multimed/htm/_win32_multimed ia_command_stri ngs.asp>
                  >
                  --
                  M S Herfried K. Wagner
                  M V P <URL:http://dotnet.mvps.org/>
                  V B <URL:http://dotnet.mvps.org/dotnet/faqs/>
                  >
                  >

                  Comment

                  Working...