• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C# MIXERCONTROL类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了C#中MIXERCONTROL的典型用法代码示例。如果您正苦于以下问题:C# MIXERCONTROL类的具体用法?C# MIXERCONTROL怎么用?C# MIXERCONTROL使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



MIXERCONTROL类属于命名空间,在下文中一共展示了MIXERCONTROL类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C#代码示例。

示例1: InitRealtekHDaudioRecord

        public static bool InitRealtekHDaudioRecord(int mixerID, int record_level)      // yt7pwr
        {
            try
            {
                int mixer;
                int retval = -1;
                retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
                if (retval != MMSYSERR_NOERROR)
                    return false;

                // turn Main Mute Off
                MIXERCONTROL ctrl = new MIXERCONTROL();
                bool success = false;

                int i;
                for (i = -1; i < 4; i++)
                {
                    success = GetControlByID(mixer, 0, i, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
                    if (success)
                    {
                        if (ctrl.szName.Contains("Master Mute"))
                        {
                            if (!SetBool(mixer, ctrl, false))
                                goto failed;
                        }
                        // turn CD volume Mute off
                        else if (ctrl.szName.Contains("CD Volume"))
                        {
                            if (!SetBool(mixer, ctrl, true))
                                goto failed;
                        }
                        // turn Line volume Mute on
                        else if (ctrl.szName.Contains("Line Volume"))
                        {
                            if (!SetBool(mixer, ctrl, false))
                                goto failed;
                        }
                        // turn Mic Mute Off
                        else if (ctrl.szName.Contains("Mic Volume"))
                        {
                            if (!SetBool(mixer, ctrl, true))
                                goto failed;
                        }
                        // turn Stereo Mix Mute on
                        else if (ctrl.szName.Contains("Stereo Mix"))
                        {
                            if (!SetBool(mixer, ctrl, true))
                                goto failed;
                        }
                    }
                }

                // set Record Main Volume to max
                success = GetControlByID(mixer, 0, -1, MIXERCONTROL_CONTROLTYPE_VOLUME, out ctrl);
                if (!success && ctrl.szName.Contains("Recording"))
                    goto failed;
                if (!SetUnsigned(mixer, ctrl, UInt16.MaxValue * record_level / 100))
                    goto failed;

                mixerClose(mixer);
                return true;

            failed:
                mixerClose(mixer);
                return false;
            }
            catch (Exception ex)
            {
                Debug.Write(ex.ToString());
                return false;
            }
        }
开发者ID:Dfinitski,项目名称:genesisradio,代码行数:72,代码来源:mixer.cs


示例2: GetVolumeControl

    private static bool GetVolumeControl(int hmixer, int componentType, int ctrlType, out MIXERCONTROL mxc,
                                         out int vCurrentVol)
    {
      // This function attempts to obtain a mixer control. 
      // Returns True if successful. 
      MIXERLINECONTROLS mxlc = new MIXERLINECONTROLS();
      MIXERLINE mxl = new MIXERLINE();
      MIXERCONTROLDETAILS pmxcd = new MIXERCONTROLDETAILS();
      MIXERCONTROLDETAILS_UNSIGNED du = new MIXERCONTROLDETAILS_UNSIGNED();
      mxc = new MIXERCONTROL();
      int rc;
      bool retValue;
      vCurrentVol = -1;

      mxl.cbStruct = Marshal.SizeOf(mxl);
      mxl.dwComponentType = componentType;

      rc = mixerGetLineInfoA(hmixer, ref mxl, MIXER_GETLINEINFOF_COMPONENTTYPE);

      if (MMSYSERR_NOERROR == rc)
      {
        int sizeofMIXERCONTROL = 152;
        int ctrl = Marshal.SizeOf(typeof (MIXERCONTROL));
        mxlc.pamxctrl = Marshal.AllocCoTaskMem(sizeofMIXERCONTROL);
        mxlc.cbStruct = Marshal.SizeOf(mxlc);
        mxlc.dwLineID = mxl.dwLineID;
        mxlc.dwControl = ctrlType;
        mxlc.cControls = 1;
        mxlc.cbmxctrl = sizeofMIXERCONTROL;

        // Allocate a buffer for the control 
        mxc.cbStruct = sizeofMIXERCONTROL;

        // Get the control 
        rc = mixerGetLineControlsA(hmixer, ref mxlc, MIXER_GETLINECONTROLSF_ONEBYTYPE);

        if (MMSYSERR_NOERROR == rc)
        {
          retValue = true;

          // Copy the control into the destination structure 
          mxc = (MIXERCONTROL)Marshal.PtrToStructure(mxlc.pamxctrl, typeof (MIXERCONTROL));
        }
        else
        {
          retValue = false;
        }
        int sizeofMIXERCONTROLDETAILS = Marshal.SizeOf(typeof (MIXERCONTROLDETAILS));
        int sizeofMIXERCONTROLDETAILS_UNSIGNED = Marshal.SizeOf(typeof (MIXERCONTROLDETAILS_UNSIGNED));
        pmxcd.cbStruct = sizeofMIXERCONTROLDETAILS;
        pmxcd.dwControlID = mxc.dwControlID;
        pmxcd.paDetails =
          Marshal.AllocCoTaskMem(sizeofMIXERCONTROLDETAILS_UNSIGNED);
        pmxcd.cChannels = 1;
        pmxcd.item = 0;
        pmxcd.cbDetails = sizeofMIXERCONTROLDETAILS_UNSIGNED;

        rc = mixerGetControlDetailsA(hmixer, ref pmxcd, MIXER_GETCONTROLDETAILSF_VALUE);

        du =
          (MIXERCONTROLDETAILS_UNSIGNED)Marshal.PtrToStructure(pmxcd.paDetails, typeof (MIXERCONTROLDETAILS_UNSIGNED));

        vCurrentVol = du.dwValue;

        return retValue;
      }

      retValue = false;
      return retValue;
    }
开发者ID:arangas,项目名称:MediaPortal-1,代码行数:70,代码来源:AudioMixerHelper.cs


示例3: GetMinMaxVolume

 public static int GetMinMaxVolume(out int iMin, out int iMax)
 {
   int mixer;
   MIXERCONTROL volCtrl = new MIXERCONTROL();
   int currentVol;
   mixerOpen(out mixer, 0, 0, 0, 0);
   int type = MIXERCONTROL_CONTROLTYPE_VOLUME;
   GetVolumeControl(mixer, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, type, out volCtrl, out currentVol);
   mixerClose(mixer);
   iMin = volCtrl.lMinimum;
   iMax = volCtrl.lMaximum;
   return currentVol;
 }
开发者ID:arangas,项目名称:MediaPortal-1,代码行数:13,代码来源:AudioMixerHelper.cs


示例4: GetControlID

        public static int GetControlID( int component, int control )                                        // GetControlID
        {
            MIXERCONTROL mxc = new MIXERCONTROL();
            int _i;         // Though we won't need _i, it still must be declared                                    

            bool b = false;
            int retValue = 0;

            b = GetMixerControl(
                            0,
                            component,
                            control,
                            out mxc,
                            out _i);

            return retValue = b ? mxc.dwControlID : -1;
        }
开发者ID:andrewlouie,项目名称:AAMusicPlayer,代码行数:17,代码来源:MM.cs


示例5: GetControl

 private static MixerControl GetControl(Mixer mx, MixerLine ml, MIXERCONTROL mc)
 {
     MixerControl result = new MixerControl(mx, ml, mc);
     if (result.Class == MixerControlClass.FADER && ((uint)result.ControlType & MIXERCONTROL_CT_UNITS_MASK) == (uint)MixerControlType.MIXERCONTROL_CT_UNITS_UNSIGNED)
     {
         result = new FaderMixerControl(mx, ml, mc);
     }
     else if (result.Class == MixerControlClass.SWITCH && ((uint)result.ControlType & MIXERCONTROL_CT_SUBCLASS_MASK) == (uint)MixerControlType.MIXERCONTROL_CT_SC_SWITCH_BOOLEAN && ((uint)result.ControlType & MIXERCONTROL_CT_UNITS_MASK) == (uint)MixerControlType.MIXERCONTROL_CT_UNITS_BOOLEAN)
     {
         result = new BooleanMixerControl(mx, ml, mc);
     }
     return result;
 }
开发者ID:floatas,项目名称:highsign,代码行数:13,代码来源:MixerControl.cs


示例6: SetMute

		private static bool SetMute(int mixerID, uint dst_type, uint src_type, bool val)
		{
			int mixer;
			MIXERCONTROL muteCtrl = new MIXERCONTROL();
			bool currentMute = GetMute(mixerID, dst_type, src_type);
			if(currentMute == val) return true;

			mixerOpen(out mixer, mixerID, 0, 0, 0);
			bool success = GetControlByType(mixer, dst_type, src_type, MIXERCONTROL_CONTROLTYPE_MUTE, out muteCtrl);
			if(success == true)
			{

				MIXERCONTROLDETAILS mxcd = new MIXERCONTROLDETAILS(); 
				MIXERCONTROLDETAILS_UNSIGNED mute = new MIXERCONTROLDETAILS_UNSIGNED(); 

				mxcd.item = 0; 
				mxcd.dwControlID = muteCtrl.dwControlID; 
				mxcd.cbStruct = Marshal.SizeOf(mxcd); 
				mxcd.cbDetails = Marshal.SizeOf(mute); 

				// Allocate a buffer for the control value buffer 
				mxcd.cChannels = 1; 
				if(val)	mute.dwValue = 1;
				else mute.dwValue = 0;

				// Copy the data into the control value buffer 
				mxcd.paDetails = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_UNSIGNED))); 
				Marshal.StructureToPtr(mute, mxcd.paDetails,false); 

				// Set the control value 
				int retval = mixerSetControlDetails(mixer, ref mxcd, MIXER_SETCONTROLDETAILSF_VALUE); 
				if(retval == MMSYSERR_NOERROR) 
				{
					currentMute = GetMute(mixerID, dst_type, src_type);
					if(currentMute != val)
						success = false;
					else success = true;
				}
				else success = false;
				Marshal.FreeCoTaskMem(mxcd.paDetails);
			}
			else success = false;
			mixerClose(mixer);
			return success;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:45,代码来源:wmm.cs


示例7: GetVolume

        public static int GetVolume( int control, int component )                                             // GetVolume
        {
            int hmixer = 0;
            int currVol = -1;

            MIXERCONTROL volCtrl = new MIXERCONTROL();

            int rc = mixerOpen(
                            out hmixer,
                            0,
                            0,
                            0,
                            0);

            bool b = GetMixerControl(
                                hmixer,
                                component,
                                control,
                                out volCtrl,        // Not used
                                out currVol);

            mixerClose(hmixer);

            return currVol;
        }
开发者ID:andrewlouie,项目名称:AAMusicPlayer,代码行数:25,代码来源:MM.cs


示例8: SetMux

		public static bool SetMux(int mixerID, int index)
		{
			int mixer;
			int retval = -1;
			MIXERCONTROL ctrl = new MIXERCONTROL();

			mixerOpen(out mixer, mixerID, 0, 0, 0);
			GetControlByType(mixer,MIXERLINE_COMPONENTTYPE_DST_WAVEIN, 0, MIXERCONTROL_CONTROLTYPE_MUX, out ctrl);

			MIXERCONTROLDETAILS details = new MIXERCONTROLDETAILS();
			int size = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_SIGNED));
			details.dwControlID = ctrl.dwControlID; 
			details.cbDetails = size; 
			details.item = ctrl.cMultipleItems;
			if(details.item > 0) size *= details.item;
			details.paDetails = Marshal.AllocCoTaskMem(size); 
			details.cbStruct = Marshal.SizeOf(details); 
			details.cChannels = 1; 
	
			if(details.item > 0)
			{
				int[] val = new int[details.item];
				for(int m=0; m<details.item; m++)
				{
					if(m == index) val[m] = 1;
					else val[m] = 0;
				}
				Marshal.Copy(val, 0, details.paDetails, details.item);

				retval = mixerSetControlDetails(mixer, ref details, MIXER_GETCONTROLDETAILSF_VALUE); 
			}
			if(retval == MMSYSERR_NOERROR)
				return true;
			else return false;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:35,代码来源:wmm.cs


示例9: InitSantaCruz

		public static bool InitSantaCruz(int mixerID)
		{
			int mixer;
			int retval = -1;
			retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
			if(retval != MMSYSERR_NOERROR)
				return false;

			// Set Playback Wave Volume to max
			MIXERCONTROL ctrl = new MIXERCONTROL();
			bool success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_VOLUME, out ctrl);
			if(!success)
				goto failed;
			if(!SetUnsigned(mixer, ctrl, ctrl.lMaximum))
				goto failed;

			// Set Playback Wave Mute to off
			success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// Set Playback Synthesizer Mute to on
			success = GetControlByID(mixer, 0, 1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback Aux Mute to on
			success = GetControlByID(mixer, 0, 2, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback CD Player Mute to on
			success = GetControlByID(mixer, 0, 3, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback Line In Mute to on
			success = GetControlByID(mixer, 0, 4, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback Synth Daughter Card Mute to on
			success = GetControlByID(mixer, 0, 5, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback Microphone Mute to on
			success = GetControlByID(mixer, 0, 6, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set Playback Telephone Mute to on
			success = GetControlByID(mixer, 0, 7, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Set 5.1 Emulation Mute to on
			success = GetControlByID(mixer, 2, 3, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Disable equalizer
			success = GetControlByID(mixer, 3, -1, MIXERCONTROL_CONTROLTYPE_ONOFF, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// Disable effects 1 channel
			success = GetControlByID(mixer, 6, -1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// Disable effects 2 channel
			success = GetControlByID(mixer, 7, -1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

//.........这里部分代码省略.........
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:101,代码来源:wmm.cs


示例10: GetMuxLineNames

		public static bool GetMuxLineNames(int mixerID, out ArrayList a)
		{
			int mixer;
			MIXERCONTROL ctrl = new MIXERCONTROL();
			a = new ArrayList();

			mixerOpen(out mixer, mixerID, 0, 0, 0);
			GetControlByType(mixer, MIXERLINE_COMPONENTTYPE_DST_WAVEIN, 0, MIXERCONTROL_CONTROLTYPE_MUX, out ctrl);

			int n = ctrl.cMultipleItems;
			MIXERCONTROLDETAILS mxcd = new MIXERCONTROLDETAILS();
			mxcd.cbStruct = Marshal.SizeOf(mxcd);
			mxcd.dwControlID = ctrl.dwControlID;     // <== MIXERCONTROL.dwControlID
			mxcd.cChannels = 1;
			mxcd.item = n;   // <== MIXERCONTROL.cMultipleItems

			int size = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_LISTTEXT))*n;
			mxcd.cbDetails = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_LISTTEXT));
			mxcd.paDetails = Marshal.AllocCoTaskMem(size);

			int result = mixerGetControlDetails(mixer, ref mxcd, MIXER_GETCONTROLDETAILSF_LISTTEXT);

			if(result != MMSYSERR_NOERROR)
			{
				mixerClose(mixer);
				return false;
			}

			for(int i=0; i<mxcd.item; i++)
			{
				MIXERCONTROLDETAILS_LISTTEXT ltxt = new MIXERCONTROLDETAILS_LISTTEXT();
				IntPtr ptr = new IntPtr(mxcd.paDetails.ToInt32() + i*mxcd.cbDetails);
				
				ltxt = (MIXERCONTROLDETAILS_LISTTEXT)Marshal.PtrToStructure(ptr, typeof(MIXERCONTROLDETAILS_LISTTEXT));
				a.Add(ltxt.szName);
			}
			mixerClose(mixer);
			return true;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:39,代码来源:wmm.cs


示例11: GetMux

		public static int GetMux(int mixerID)
		{
			int mixer;
			MIXERCONTROL ctrl = new MIXERCONTROL();

			mixerOpen(out mixer, mixerID, 0, 0, 0);
			GetControlByType(mixer, MIXERLINE_COMPONENTTYPE_DST_WAVEIN, 0, MIXERCONTROL_CONTROLTYPE_MUX, out ctrl);
			
			MIXERCONTROLDETAILS details = new MIXERCONTROLDETAILS();
			int size = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_UNSIGNED));
			details.dwControlID = ctrl.dwControlID; 
			details.item = ctrl.cMultipleItems;
			details.cbDetails = size;
			if(details.item > 0) size *= ctrl.cMultipleItems;
			details.paDetails = Marshal.AllocCoTaskMem(size); 
			details.cbStruct = Marshal.SizeOf(details); 
			details.cChannels = 1;									
																		
			int retval = mixerGetControlDetails(mixer, ref details, MIXER_GETCONTROLDETAILSF_VALUE); 
			if(retval == MMSYSERR_NOERROR)
			{
				if(details.item > 0)
				{
					MIXERCONTROLDETAILS_UNSIGNED[] val = new MIXERCONTROLDETAILS_UNSIGNED[details.item];
					for(int m=0; m<details.item; m++)
					{
						IntPtr ptr = new IntPtr(details.paDetails.ToInt32() + m*details.cbDetails);
						val[m] = new MIXERCONTROLDETAILS_UNSIGNED();
						val[m] = (MIXERCONTROLDETAILS_UNSIGNED)Marshal.PtrToStructure(ptr, typeof(MIXERCONTROLDETAILS_UNSIGNED));
						if(val[m].dwValue == 1)
						{
							retval = m;
							m = details.item;
						}
					}
				}
			}
			mixerClose(mixer);
			return retval;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:40,代码来源:wmm.cs


示例12: GetNumMuxLines

		public static int GetNumMuxLines(int mixerID)
		{
			int mixer;
			MIXERCONTROL ctrl = new MIXERCONTROL();

			mixerOpen(out mixer, mixerID, 0, 0, 0);
			bool response = GetControlByType(mixer, MIXERLINE_COMPONENTTYPE_DST_WAVEIN, 0, MIXERCONTROL_CONTROLTYPE_MUX, out ctrl);
			mixerClose(mixer);

			if(response)
				return ctrl.cMultipleItems;
			else
				return -1;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:14,代码来源:wmm.cs


示例13: GetVolume_RealtekHDaudio

        private static int GetVolume_RealtekHDaudio(int mixerID, int dst_type, int src_type)        // yt7pwr
        {
            if (mixerID > mixerGetNumDevs() - 1 ||
                mixerID < 0)
                return -1;

            int mixer;
            int val;
            MIXERCONTROL volCtrl = new MIXERCONTROL();

            int retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
            if (retval != MMSYSERR_NOERROR)
                return -1;

            bool success = GetControlByID(mixer, dst_type, src_type, MIXERCONTROL_CONTROLTYPE_VOLUME, out volCtrl);
            if (success == true)
            {
                MIXERCONTROLDETAILS details = new MIXERCONTROLDETAILS();

                int sizeofMIXERCONTROLDETAILS = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS));
                int sizeofMIXERCONTROLDETAILS_UNSIGNED = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_UNSIGNED));
                details.cbStruct = sizeofMIXERCONTROLDETAILS;
                details.dwControlID = volCtrl.dwControlID;
                details.paDetails = Marshal.AllocCoTaskMem(sizeofMIXERCONTROLDETAILS_UNSIGNED);
                details.cChannels = 1;
                details.item = 0;
                details.cbDetails = sizeofMIXERCONTROLDETAILS_UNSIGNED;

                retval = mixerGetControlDetails(mixer, ref details, MIXER_GETCONTROLDETAILSF_VALUE);
                if (retval == MMSYSERR_NOERROR)
                {
                    MIXERCONTROLDETAILS_UNSIGNED du = (MIXERCONTROLDETAILS_UNSIGNED)Marshal.PtrToStructure(details.paDetails, typeof(MIXERCONTROLDETAILS_UNSIGNED));
                    val = du.dwValue;
                }
                else val = -1;
                Marshal.FreeCoTaskMem(details.paDetails);
            }
            else val = -1;
            mixerClose(mixer);
            return val;
        }
开发者ID:Dfinitski,项目名称:genesisradio,代码行数:41,代码来源:mixer.cs


示例14: InitRealtekHDaudioPlay

        public static bool InitRealtekHDaudioPlay(int mixerID)      // yt7pwr
        {
            try
            {
                int mixer;
                int retval = -1;
                retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
                if (retval != MMSYSERR_NOERROR)
                    return false;

                MIXERCONTROL ctrl = new MIXERCONTROL();
                // set Playback Wave Volume to max
                bool success = GetControlByType(mixer, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS,
                    4104, MIXERCONTROL_CONTROLTYPE_MUX, out ctrl);
                if (!success)
                    goto failed;
                if (!SetUnsigned(mixer, ctrl, ctrl.lMaximum))
                    goto failed;

                mixerClose(mixer);
                return true;

            failed:
                mixerClose(mixer);
                return false;
            }
            catch (Exception ex)
            {
                Debug.Write(ex.ToString());
                return false;
            }
        }
开发者ID:Dfinitski,项目名称:genesisradio,代码行数:32,代码来源:mixer.cs


示例15: GetUnsigned

		private static bool GetUnsigned(int mixer, MIXERCONTROL ctrl, out int num)
		{
			MIXERCONTROLDETAILS mxcd = new MIXERCONTROLDETAILS();
			num = 0;

			int sizeofMIXERCONTROLDETAILS = Marshal.SizeOf(mxcd);
			int sizeofMIXERCONTROLDETAILS_UNSIGNED = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_UNSIGNED)); 
			mxcd.cbStruct = sizeofMIXERCONTROLDETAILS; 
			mxcd.dwControlID = ctrl.dwControlID; 
			mxcd.paDetails = Marshal.AllocCoTaskMem(sizeofMIXERCONTROLDETAILS_UNSIGNED); 
			mxcd.cChannels = 1; 
			mxcd.item = 0; 
			mxcd.cbDetails = sizeofMIXERCONTROLDETAILS_UNSIGNED; 

			int retval = mixerGetControlDetails(mixer, ref mxcd, MIXER_GETCONTROLDETAILSF_VALUE);
			if(retval != MMSYSERR_NOERROR)
			{
				Marshal.FreeCoTaskMem(mxcd.paDetails);
				return false;
			}

			MIXERCONTROLDETAILS_UNSIGNED du = 
				(MIXERCONTROLDETAILS_UNSIGNED)Marshal.PtrToStructure(mxcd.paDetails, typeof(MIXERCONTROLDETAILS_UNSIGNED));
			num = du.dwValue;

			Marshal.FreeCoTaskMem(mxcd.paDetails);
			return true;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:28,代码来源:wmm.cs


示例16: InitAudigy2

		public static bool InitAudigy2(int mixerID)
		{
			int mixer;
			int retval = -1;
			retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
			if(retval != MMSYSERR_NOERROR)
				return false;

			// turn Monitor Without Recording on
			MIXERCONTROL ctrl = new MIXERCONTROL();
			bool success = GetControlByID(mixer, 1, 4, MIXERCONTROL_CONTROLTYPE_ONOFF, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Wave Mute off
			success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// turn Playback Midi Synth Mute on
			success = GetControlByID(mixer, 0, 1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback S/PDIF-In Mute on
			success = GetControlByID(mixer, 0, 2, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback CD Digital Mute on
			success = GetControlByID(mixer, 0, 3, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Auxiliary Mute on
			success = GetControlByID(mixer, 0, 4, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback CD Audio Mute on
			success = GetControlByID(mixer, 0, 5, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Line In Mute off
			success = GetControlByID(mixer, 0, 6, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// turn Playback TAD-In Mute on
			success = GetControlByID(mixer, 0, 7, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Microphone Mute on
			success = GetControlByID(mixer, 0, 8, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Main Mute off
			success = GetControlByID(mixer, 0, -1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// turn Playback Wave Volume to Max
			success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_VOLUME, out ctrl);
			if(!success)
				goto failed;
			if(!SetUnsigned(mixer, ctrl, ctrl.lMaximum))
				goto failed;

			mixerClose(mixer);
			return true;

			failed:
				mixerClose(mixer);
			return false;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:100,代码来源:wmm.cs


示例17: SetUnsigned

		private static bool SetUnsigned(int mixer, MIXERCONTROL ctrl, int num)
		{
			int current_val;
			if(!GetUnsigned(mixer, ctrl, out current_val))
				return false;

			if(current_val == num)
				return true;
            
			if(num > ctrl.lMaximum) num = ctrl.lMaximum;
			if(num < ctrl.lMinimum) num = ctrl.lMinimum;

			MIXERCONTROLDETAILS mxcd = new MIXERCONTROLDETAILS();
			MIXERCONTROLDETAILS_UNSIGNED val = new MIXERCONTROLDETAILS_UNSIGNED();

			mxcd.item = 0;
			mxcd.dwControlID = ctrl.dwControlID;
			mxcd.cbStruct = Marshal.SizeOf(mxcd);
			mxcd.cbDetails = Marshal.SizeOf(val);

			mxcd.cChannels = 1;
			val.dwValue = num;

			mxcd.paDetails = Marshal.AllocCoTaskMem(Marshal.SizeOf(val));
			Marshal.StructureToPtr(val, mxcd.paDetails, false);

			int retval = mixerSetControlDetails(mixer, ref mxcd, MIXER_SETCONTROLDETAILSF_VALUE);
			Marshal.FreeCoTaskMem(mxcd.paDetails);

			if(retval != MMSYSERR_NOERROR)
				return false;
		
			if(!GetUnsigned(mixer, ctrl, out current_val))
				return false;

			if(current_val == num)
				return true;
			else
				return false;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:40,代码来源:wmm.cs


示例18: InitMP3Plus

		public static bool InitMP3Plus(int mixerID)
		{
			int mixer;
			int retval = -1;
			retval = mixerOpen(out mixer, mixerID, 0, 0, 0);
			if(retval != MMSYSERR_NOERROR)
				return false;

			// turn Playback Wave Volume to max
			MIXERCONTROL ctrl = new MIXERCONTROL();
			bool success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_VOLUME, out ctrl);
			if(!success)
				goto failed;
			if(!SetUnsigned(mixer, ctrl, ctrl.lMaximum))
				goto failed;

			// turn Playback Wave Mute off
			success = GetControlByID(mixer, 0, 0, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, false))
				goto failed;

			// turn Playback Midi Mute on
			success = GetControlByID(mixer, 0, 1, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Microphone Mute on
			success = GetControlByID(mixer, 0, 2, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback Line In Mute on
			success = GetControlByID(mixer, 0, 3, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			// turn Playback CD Audio Mute on
			success = GetControlByID(mixer, 0, 4, MIXERCONTROL_CONTROLTYPE_MUTE, out ctrl);
			if(!success)
				goto failed;
			if(!SetBool(mixer, ctrl, true))
				goto failed;

			mixerClose(mixer);
			return true;
			
			failed:
				mixerClose(mixer);
			return false;
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:58,代码来源:wmm.cs


示例19: RestoreState

		public static void RestoreState()
		{
			int index = 0;
			uint[] ctrl_list =
			{
				MIXERCONTROL_CONTROLTYPE_CUSTOM,
				MIXERCONTROL_CONTROLTYPE_BOOLEANMETER,
				MIXERCONTROL_CONTROLTYPE_SIGNEDMETER,
				MIXERCONTROL_CONTROLTYPE_PEAKMETER,
				MIXERCONTROL_CONTROLTYPE_BOOLEAN,
				MIXERCONTROL_CONTROLTYPE_ONOFF,
				MIXERCONTROL_CONTROLTYPE_MUTE,
				MIXERCONTROL_CONTROLTYPE_MONO,
				MIXERCONTROL_CONTROLTYPE_LOUDNESS,
				MIXERCONTROL_CONTROLTYPE_STEREOENH,
				MIXERCONTROL_CONTROLTYPE_BUTTON,
				MIXERCONTROL_CONTROLTYPE_DECIBELS,
				MIXERCONTROL_CONTROLTYPE_SIGNED,
				MIXERCONTROL_CONTROLTYPE_SLIDER,
				MIXERCONTROL_CONTROLTYPE_PAN,
				MIXERCONTROL_CONTROLTYPE_QSOUNDPAN,
				MIXERCONTROL_CONTROLTYPE_SINGLESELECT,
				MIXERCONTROL_CONTROLTYPE_MUX,
				MIXERCONTROL_CONTROLTYPE_MULTIPLESELECT,
				MIXERCONTROL_CONTROLTYPE_MIXER,
				MIXERCONTROL_CONTROLTYPE_UNSIGNEDMETER,
				MIXERCONTROL_CONTROLTYPE_UNSIGNED,
				MIXERCONTROL_CONTROLTYPE_BASS,
				MIXERCONTROL_CONTROLTYPE_EQUALIZER,
				MIXERCONTROL_CONTROLTYPE_FADER,
				MIXERCONTROL_CONTROLTYPE_TREBLE,
				MIXERCONTROL_CONTROLTYPE_VOLUME,
				MIXERCONTROL_CONTROLTYPE_MICROTIME,
				MIXERCONTROL_CONTROLTYPE_MILLITIME,
				MIXERCONTROL_CONTROLTYPE_PERCENT,
			};
            
			int num_mixers = mixerGetNumDevs();
			int mixer = -1;
			int retval = -1;

			for(int i=0; i<num_mixers; i++)	// for each mixer
			{
				mixerOpen(out mixer, i, 0, 0, 0);
				MIXERCAPS mc = new MIXERCAPS();

				retval = mixerGetDevCaps(mixer, ref mc, Marshal.SizeOf(mc));
				if(retval == MMSYSERR_NOERROR)
				{
					int num_dest = mc.cDestinations;
					for(int j=0; j<num_dest; j++)		// for each destination line in this mixer
					{
						MIXERLINE dst_line = new MIXERLINE();
						dst_line.cbStruct = Marshal.SizeOf(dst_line);
						dst_line.dwDestination = j;

						retval = mixerGetLineInfo(mixer, ref dst_line, MIXER_GETLINEINFOF_DESTINATION);
						if(retval == MMSYSERR_NOERROR)
						{
							for(int k=0; k<30; k++)		// for each control in this destination line
							{
								MIXERLINECONTROLS dst_lc = new MIXERLINECONTROLS();
								int mcSize = 152;
								dst_lc.pamxctrl = Marshal.AllocCoTaskMem(mcSize);
								dst_lc.cbStruct = Marshal.SizeOf(dst_lc); 
								dst_lc.dwLineID = dst_line.dwLineID; 
								dst_lc.dwControl = ctrl_list[k]; 
								dst_lc.cControls = 1; 
								dst_lc.cbmxctrl = mcSize;

								// Get the control 
								retval = mixerGetLineControls(mixer, ref dst_lc, MIXER_GETLINECONTROLSF_ONEBYTYPE); 
								if(retval == MMSYSERR_NOERROR) 
								{ 
									MIXERCONTROL ctrl = new MIXERCONTROL();
									ctrl.cbStruct = mcSize; 
									// Copy the control into the destination structure 
									ctrl = (MIXERCONTROL)Marshal.PtrToStructure(dst_lc.pamxctrl, typeof(MIXERCONTROL)); 
									MIXERCONTROLDETAILS details = new MIXERCONTROLDETAILS();
									int size = Marshal.SizeOf(typeof(MIXERCONTROLDETAILS_SIGNED));
									details.dwControlID = ctrl.dwControlID; 
									details.cbDetails = size; 
									details.item = ctrl.cMultipleItems;
									if(details.item > 0) size *= details.item;
									details.paDetails = Marshal.AllocCoTaskMem(size); 
									details.cbStruct = Marshal.SizeOf(details); 
									details.cChannels = 1; 
									
									if(details.item > 0)
									{
										if(index != save.Count)
										{
											int rec_index = (int)save[index];
											int[] val = new int[details.item];
											for(int m=0; m<details.item; m++)
											{
												if(m == rec_index) val[m] = 1;
												else val[m] = 0;
											}
											Marshal.Copy(val, 0, details.paDetails, details.item);
//.........这里部分代码省略.........
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:101,代码来源:wmm.cs


示例20: GetControlByID

		private static bool GetControlByID(int mixer, int dst_id, int src_id, uint ctrl_type, out MIXERCONTROL outCtrl)
		{
			outCtrl = new MIXERCONTROL();
			MIXERLINE dst_line = new MIXERLINE();

			dst_line.cbStruct = Marshal.SizeOf(dst_line);
			dst_line.dwDestination = dst_id;
			int retval = mixerGetLineInfo(mixer, ref dst_line, MIXER_GETLINEINFOF_DESTINATION);
			if(retval != MMSYSERR_NOERROR)
				return false;

			if(src_id < 0)
			{
				MIXERLINECONTROLS dst_lc = new MIXERLINECONTROLS();
				int mcSize = 152;
				dst_lc.pamxctrl = Marshal.AllocCoTaskMem(mcSize);
				dst_lc.cbStruct = Marshal.SizeOf(dst_lc);
				dst_lc.dwLineID = dst_line.dwLineID;
				dst_lc.dwControl = ctrl_type;
				dst_lc.cControls = 1;
				dst_lc.cbmxctrl = mcSize;

				// Get the control 
				retval = mixerGetLineControls(mixer, ref dst_lc, MIXER_GETLINECONTROLSF_ONEBYTYPE); 
				if(retval != MMSYSERR_NOERROR) 
				{
					Marshal.FreeCoTaskMem(dst_lc.pamxctrl);
					return false;
				}
 
				MIXERCONTROL ctrl = new MIXERCONTROL();
				ctrl.cbStruct = mcSize; 
				// Copy the control into the destination structure 
				ctrl = (MIXERCONTROL)Marshal.PtrToStructure(dst_lc.pamxctrl, typeof(MIXERCONTROL)); 
				outCtrl = ctrl;
				Marshal.FreeCoTaskMem(dst_lc.pamxctrl);
				return true;
			}
			else
			{
				MIXERLINE src_line = new MIXERLINE();
				src_line.cbStruct = dst_line.cbStruct;
				src_line.dwDestination = dst_line.dwDestination;
				src_line.dwSource = src_id;
				retval = mixerGetLineInfo(mixer, ref src_line, MIXER_GETLINEINFOF_SOURCE);
				if(retval != MMSYSERR_NOERROR)
					return false;

				MIXERLINECONTROLS src_lc = new MIXERLINECONTROLS();
				int mcSize = 152;
				src_lc.pamxctrl = Marshal.AllocCoTaskMem(mcSize);
				src_lc.cbStruct = Marshal.SizeOf(src_lc); 
				src_lc.dwLineID = src_line.dwLineID; 
				src_lc.dwControl = ctrl_type; 
				src_lc.cControls = 1; 
				src_lc.cbmxctrl = mcSize;

				// Get the control 
				retval = mixerGetLineControls(mixer, ref src_lc, MIXER_GETLINECONTROLSF_ONEBYTYPE); 
				if(retval != MMSYSERR_NOERROR)
				{
					Marshal.FreeCoTaskMem(src_lc.pamxctrl);
					return false;
				}

				MIXERCONTROL ctrl = new MIXERCONTROL();
				ctrl.cbStruct = mcSize; 
				// Copy the control into the destination structure 
				ctrl = (MIXERCONTROL)Marshal.PtrToStructure(src_lc.pamxctrl, typeof(MIXERCONTROL)); 
				outCtrl = ctrl;
				Marshal.FreeCoTaskMem(src_lc.pamxctrl);
				return true;
			}
		}
开发者ID:HosokawaKenchi,项目名称:powersdr-if-stage,代码行数:74,代码来源:wmm.cs



注:本文中的MIXERCONTROL类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C# MIXERCONTROLDETAILS类代码示例发布时间:2022-05-24
下一篇:
C# MEMORY_BASIC_INFORMATION类代码示例发布时间:2022-05-24
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap