c语言音量控制源代码
乐曲程序c语言代码解析

乐曲程序通常指的是使用计算机编程语言来生成和处理音频的程序。
在C语言中,我们可以使用库函数来生成音频,或者直接操作音频文件。
下面是一个简单的C语言程序示例,该程序播放一个音频文件:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <audio.h>#define AUDIO_FILE "path_to_your_audio_file.wav"int main() {// 打开音频文件FILE *file = fopen(AUDIO_FILE, "rb");if (file == NULL) {printf("Could not open the audio file.\n");return 1;}// 获取音频信息WaveHeader header;if (wave_read_header(file, &header) != 0) {printf("Error reading wave header.\n");fclose(file);return 1;}// 播放音频int16_t *buffer = (int16_t *)malloc(header.data_size);if (buffer == NULL) {printf("Memory allocation failed.\n");fclose(file);return 1;}if (fread(buffer, header.data_size, 1, file) != 1) {printf("Error reading audio data.\n");fclose(file);free(buffer);return 1;}fclose(file);// 使用音频库播放音频audio_play(buffer, header.data_size);free(buffer);return 0;}```上述代码使用了`wave_read_header`函数来读取音频文件的头信息,然后使用`fread`函数读取音频数据,并使用`audio_play`函数来播放音频。
C#(源码)电脑音量大小控制器

C# 电脑音量大小控制源码备注:直接赋值代码即可用(作为资料保存不错)using System;usingSystem.Windows.Forms;usingControlTheVolume;namespace 电脑音量控制{public partial class Form1 : Form{public Form1(){ InitializeComponent(); }staticintvolumeValue = PC_VolumeControl.GetVolume();intdanqianYL;private void Form1_Load(object sender, EventArgs e){label2.Text = label1.Text = "初始系统音量为:" + PC_VolumeControl.GetVolume().ToString();//显示当前系统音量volumeValue = PC_VolumeControl.GetVolume();}private void button1_Click(object sender, EventArgs e){danqianYL = PC_VolumeControl.GetVolume();label2.Text = "当前系统音量为:" + danqianYL.ToString();PC_VolumeControl.SetVolume(danqianYL + 1000);}private void button2_Click(object sender, EventArgs e){danqianYL = PC_VolumeControl.GetVolume();label2.Text = "当前系统音量为:" + danqianYL.ToString();PC_VolumeControl.SetVolume(danqianYL - 1000);}private void button3_Click(object sender, EventArgs e){PC_VolumeControl.SetVolume(0);label2.Text = "当前系统音量为:" + PC_VolumeControl.GetVolume().ToString();}private void button4_Click(object sender, EventArgs e){try{int value = checked(int.Parse(textBox1.Text));PC_VolumeControl.SetVolume(value);}catch (Exception Ex){ MessageBox.Show(Ex.Message); }}}}//ControlTheVolume.cs类using System;usingSystem.Runtime.InteropServices;usingSystem.Windows.Forms;namespaceControlTheVolume{classPC_VolumeControl{privateconstint MMSYSERR_NOERROR = 0;privateconstint MAXPNAMELEN = 32;privateconstint MIXER_LONG_NAME_CHARS = 64;privateconstint MIXER_SHORT_NAME_CHARS = 16;privateconstint MIXER_GETLINEINFOF_COMPONENTTYPE = 0x3;privateconstint MIXER_GETCONTROLDETAILSF_VALUE = 0x0;privateconstint MIXER_GETLINECONTROLSF_ONEBYTYPE = 0x2;privateconstint MIXER_SETCONTROLDETAILSF_VALUE = 0x0;privateconstint MIXERLINE_COMPONENTTYPE_DST_FIRST = 0x0;privateconstint MIXERLINE_COMPONENTTYPE_SRC_FIRST = 0x1000;privateconstint MIXERCONTROL_CT_CLASS_FADER = 0x50000000;privateconstint MIXERCONTROL_CT_UNITS_UNSIGNED = 0x30000;privateconstint MIXERCONTROL_CONTROLTYPE_FADER = (MIXERCONTROL_CT_CLASS_FADER | MIXERCONTROL_CT_UNITS_UNSIGNED);privateconstint MIXERCONTROL_CONTROLTYPE_VOLUME = (MIXERCONTROL_CONTROLTYPE_FADER + 1);privateconstint MIXERLINE_COMPONENTTYPE_DST_SPEAKERS = (MIXERLINE_COMPONENTTYPE_DST_FIRST + 4);privateconstint MIXERLINE_COMPONENTTYPE_SRC_MICROPHONE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 3);privateconstint MIXERLINE_COMPONENTTYPE_SRC_LINE = (MIXERLINE_COMPONENTTYPE_SRC_FIRST + 2);publicstructMixerCaps{publicintwMid; public intwPid; public intvDriverVersion;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAXPNAMELEN)]public string szPname; public intfdwSupport; public intcDestinations;}publicstruct Mixer{publicintcbStruct; public intdwControlID; public intdwControlType; publicintfdwControl; public intcMultipleItems;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MIXER_SHORT_NAME_CHARS)]public string szShortName;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MIXER_LONG_NAME_CHARS)]public string szName; public intlMinimum; public intlMaximum;[MarshalAs(UnmanagedType.U4, SizeConst = 10)]publicint reserved;}publicstructMixerDetails{publicintcbStruct; public intdwControlID; public intcChannels;publicint item; public intcbDetails; public IntPtrpaDetails;}publicstructUnsignedMixerDetails { public intdwValue; }publicstructMixerLine{publicintcbStruct; public intdwDestination; public intdwSource;publicintdwLineID; public intfdwLine; public intdwUser; publicintdwComponentType; public intcChannels; public intcConnections; publicintcControls;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MIXER_SHORT_NAME_CHARS)]public string szShortName;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MIXER_LONG_NAME_CHARS)]public string szName; public intdwType; public intdwDeviceID;publicintwMid; public intwPid; public intvDriverVersion;[MarshalAs(UnmanagedType.ByValTStr, SizeConst = MAXPNAMELEN)]public string szPname;}//定义监听变量publicstructLineControls{publicintcbStruct; public intdwLineID; public intdwControl;publicintcControls; public intcbmxctrl; public IntPtrpamxctrl;}[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerClose(inthmx);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetControlDetailsA(inthmxobj, ref MixerDetailspmxcd, intfdwDetails);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetDevCapsA(intuMxId, MixerCapspmxcaps, intcbmxcaps);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetID(inthmxobj, intpumxID, intfdwId);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetLineControlsA(inthmxobj, ref LineControlspmxlc, intfdwControls);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetLineInfoA(inthmxobj, ref MixerLinepmxl, intfdwInfo);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerGetNumDevs();[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerMessage(inthmx, intuMsg, int dwParam1, int dwParam2); [DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerOpen(out intphmx, intuMxId, intdwCallback, intdwInstance, intfdwOpen);[DllImport("winmm.dll", CharSet = CharSet.Ansi)]public static extern intmixerSetControlDetails(inthmxobj, ref MixerDetailspmxcd, intfdwDetails);private static boolGetMixer(inti, int type, intctrlType, out Mixer mixerControl, out intcurrVolume){int details;boolbReturn;currVolume = -1;LineControlslineControls = new LineControls();MixerLine line = new MixerLine();MixerDetailsmcDetails = new MixerDetails(); UnsignedMixerDetailsdetailsUnsigned = new UnsignedMixerDetails();mixerControl = new Mixer();//mixerline设置属性的对象line.cbStruct = Marshal.SizeOf(line);line.dwComponentType = type;details = mixerGetLineInfoA(i, ref line, MIXER_GETLINEINFOF_COMPONENTTYPE);if (MMSYSERR_NOERROR == details){intmcSize = 152;int control = Marshal.SizeOf(typeof(Mixer));lineControls.pamxctrl = Marshal.AllocCoTaskMem(mcSize);lineControls.cbStruct = Marshal.SizeOf(lineControls);lineControls.dwLineID = line.dwLineID;lineControls.dwControl = ctrlType;ontrols = 1;lineControls.cbmxctrl = mcSize;mixerControl.cbStruct = mcSize;details = mixerGetLineControlsA(i, ref lineControls, MIXER_GETLINECONTROLSF_ONEBYTYPE);if (MMSYSERR_NOERROR == details){bReturn = true;mixerControl = (Mixer)Marshal.PtrToStructure(lineControls.pamxctrl, typeof(Mixer));}else { bReturn = false; }intmcDetailsSize = Marshal.SizeOf(typeof(MixerDetails));intmcDetailsUnsigned = Marshal.SizeOf(typeof(UnsignedMixerDetails)); mcDetails.cbStruct = mcDetailsSize;mcDetails.dwControlID = mixerControl.dwControlID;mcDetails.paDetails = Marshal.AllocCoTaskMem(mcDetailsUnsigned);hannels = 1;mcDetails.item = 0;mcDetails.cbDetails = mcDetailsUnsigned;details = mixerGetControlDetailsA(i, ref mcDetails, MIXER_GETCONTROLDETAILSF_VALUE);detailsUnsigned = (UnsignedMixerDetails)Marshal.PtrToStructure(mcDetails.paDetails,typeof(UnsignedMixerDetails));currVolume = detailsUnsigned.dwValue;returnbReturn;}bReturn = false;returnbReturn;}/// <summary>///方法将该值设置为一个音量控制/// </summary>private static boolSetMixer(inti, Mixer mixerControl, intvolumeLevel){boolbReturn;int details;MixerDetailsmixerDetails = new MixerDetails();UnsignedMixerDetails volume = new UnsignedMixerDetails();mixerDetails.item = 0;mixerDetails.dwControlID = mixerControl.dwControlID;mixerDetails.cbStruct = Marshal.SizeOf(mixerDetails);mixerDetails.cbDetails = Marshal.SizeOf(volume);hannels = 1;volume.dwValue = volumeLevel;mixerDetails.paDetails = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(UnsignedMixerDetails))); Marshal.StructureToPtr(volume, mixerDetails.paDetails, false);details = mixerSetControlDetails(i, ref mixerDetails, MIXER_SETCONTROLDETAILSF_VALUE);if (MMSYSERR_NOERROR == details){ bReturn = true; }else{ bReturn = false; }returnbReturn;}/// <summary>/////获取音量/// </summary>public static intGetVolume(){intcurrVolume;intmixerControl;Mixer mixer = new Mixer();mixerOpen(out mixerControl, 0, 0, 0, 0);int type = MIXERCONTROL_CONTROLTYPE_VOLUME;GetMixer(mixerControl, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, type, out mixer, out currVolume);mixerClose(mixerControl);returncurrVolume;}/// <summary>/// 设置音量大小/// </summary>/// <param name="volumeLevel">音量大小</param>public static void SetVolume(intvolumeLevel){try{intcurrVolume;intmixerControl;Mixer volumeControl = new Mixer();mixerOpen(out mixerControl, 0, 0, 0, 0);intcontrolType = MIXERCONTROL_CONTROLTYPE_VOLUME;GetMixer(mixerControl, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, controlType, out volumeControl, out currVolume);if (volumeLevel>volumeControl.lMaximum){ volumeLevel = volumeControl.lMaximum; }else if (volumeLevel<volumeControl.lMinimum){ volumeLevel = volumeControl.lMinimum; }SetMixer(mixerControl, volumeControl, volumeLevel);GetMixer(mixerControl, MIXERLINE_COMPONENTTYPE_DST_SPEAKERS, controlType, out volumeControl, out currVolume);if (volumeLevel != currVolume){ throw new Exception("不能设置音量"); }mixerClose(mixerControl);}catch (Exception ex){ MessageBox.Show(ex.Message); }} }}。
MFC中控制系统音量类的实现

1.在vc++ 6.0新建VolumeCtrl类2.VolumeCtrl.h文件// VolumeCtrl.h: interface for the CVolumeCtrl class.////////////////////////////////////////////////////////////////////////#include "windows.h"#include <mmsystem.h>#if !defined(AFX_VOLUMECTRL_H__B8EA9E68_F433_4713_88C6_36B12F8D2A01__INC LUDED_)#defineAFX_VOLUMECTRL_H__B8EA9E68_F433_4713_88C6_36B12F8D2A01__INCLUDED_#if _MSC_VER > 1000#pragma once#endif // _MSC_VER > 1000classCVolumeCtrl{public:CVolumeCtrl(CWnd *pParent);virtual ~CVolumeCtrl();public:BOOL GetVolume(DWORD &dwVol);//获取音量BOOL SetVoleme(DWORD dwVol);//设置音量BOOL amdGetVolumeControl();//得到音量控制设备句柄BOOL amdInitialize();//初始化BOOL amdUnInitialize();private:CWnd * m_hParent; //父窗口指针UINT m_nNumMixers; //混音设备个数HMIXER m_hMixer; //混音设备句柄MIXERCAPS m_mxcaps;CString m_strDsLineName,m_strVolumeControlName;DWORD m_dwMinimum,m_dwMaximum;DWORD m_dwVolumeControlID; //音量控制器ID};#endif// !defined(AFX_VOLUMECTRL_H__B8EA9E68_F433_4713_88C6_36B12F8D2A01__INCLUDE D_)3.VolumeCtrl.cpp文件// VolumeCtrl.cpp: implementation of the CVolumeCtrl class.////////////////////////////////////////////////////////////////////////#include "stdafx.h"#include "MediaPlayer.h"#include "VolumeCtrl.h"#ifdef _DEBUG#undef THIS_FILEstatic char THIS_FILE[]=__FILE__;#define new DEBUG_NEW#endif//////////////////////////////////////////////////////////////////////// Construction/Destruction//////////////////////////////////////////////////////////////////////CVolumeCtrl::CVolumeCtrl(CWnd *pParent){m_hParent=pParent;}CVolumeCtrl::~CVolumeCtrl(){amdUnInitialize();}BOOL CVolumeCtrl::amdInitialize(){m_nNumMixers= ::mixerGetNumDevs();m_hMixer = NULL;::ZeroMemory(&m_mxcaps,sizeof(MIXERCAPS));if(m_nNumMixers != 0){if(::mixerOpen(&m_hMixer,0,(DWORD)m_hParent->GetSafeHwnd(),NULL,MIXER_OBJECTF_ MIXER|CALLBACK_WINDOW)!=MMSYSERR_NOERROR){return FALSE;}if(::mixerGetDevCaps((UINT)m_hMixer,&m_mxcaps,sizeof(MIXERCAPS))!=MMSYSERR_NOERROR){return FALSE;}}else{return FALSE;}return TRUE;}BOOL CVolumeCtrl::amdUnInitialize(){BOOL bResult = TRUE;if(m_hMixer != NULL){if(::mixerClose(m_hMixer)!=MMSYSERR_NOERROR){bResult=FALSE;}m_hMixer = NULL;}returnbResult;}BOOL CVolumeCtrl::SetVoleme(DWORD dwVol){if(m_hMixer == NULL||m_strDsLineName.IsEmpty()||m_strVolumeControlName.IsEmpty()) {return FALSE;}MIXERCONTROLDETAILS_UNSIGNED mxcdVolume = {dwVol};// MIXERCONTROLDETAILS_UNSIGNED mxcdVolume = dwVol;MIXERCONTROLDETAILS mxcd;mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);mxcd.dwControlID = m_dwVolumeControlID;hannels = 1;mxcd.cMultipleItems = 0;mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);mxcd.paDetails = &mxcdVolume;if(::mixerSetControlDetails((HMIXEROBJ)m_hMixer,&mxcd,MIXER_OBJECTF_HMIXER|M IXER_SETCONTROLDETAILSF_VALUE)!=MMSYSERR_NOERROR){return FALSE;}return TRUE;}BOOL CVolumeCtrl::GetVolume(DWORD &dwVol){if(m_hMixer == NULL ||m_strDsLineName.IsEmpty() ||m_strVolumeControlName.IsEmpty()){return FALSE;}MIXERCONTROLDETAILS_UNSIGNED mxcdVolume={dwVol};MIXERCONTROLDETAILS mxcd;mxcd.cbStruct = sizeof(MIXERCONTROLDETAILS);mxcd.dwControlID = m_dwVolumeControlID;hannels = 1;mxcd.cMultipleItems = 0;mxcd.cbDetails = sizeof(MIXERCONTROLDETAILS_UNSIGNED);mxcd.paDetails = &mxcdVolume;if(mixerSetControlDetails((HMIXEROBJ)m_hMixer,&mxcd,MIXER_OBJECTF_HMIXER|MI XER_SETCONTROLDETAILSF_VALUE)!=MMSYSERR_NOERROR){return FALSE;}dwVol = mxcdVolume.dwValue;return TRUE;}BOOL CVolumeCtrl::amdGetVolumeControl(){m_strDsLineName.Empty();m_strVolumeControlName.Empty();if(m_hMixer == NULL){return FALSE;}MIXERLINE mxl;mxl.cbStruct = sizeof(MIXERLINE);mxl.dwComponentType = MIXERLINE_COMPONENTTYPE_DST_SPEAKERS;if(::mixerGetLineInfo((HMIXEROBJ)m_hMixer,&mxl,MIXER_OBJECTF_HMIXER|MIXER_G ETLINEINFOF_COMPONENTTYPE)!=MMSYSERR_NOERROR){return FALSE;}MIXERCONTROL mxc;MIXERLINECONTROLS mxlc;mxlc.cbStruct = sizeof(MIXERLINECONTROLS);mxlc.dwLineID = mxl.dwLineID;mxlc.dwControlType = MIXERCONTROL_CONTROLTYPE_VOLUME;ontrols = 1;mxlc.cbmxctrl = sizeof(MIXERCONTROL);mxlc.pamxctrl = &mxc;if(mixerGetLineControls((HMIXEROBJ)m_hMixer,&mxlc,MIXER_OBJECTF_HMIXER|MIXE R_GETLINECONTROLSF_ONEBYTYPE)!=MMSYSERR_NOERROR){return FALSE;}m_strDsLineName = mxl.szName;m_strVolumeControlName = mxc.szName;m_dwMinimum = mxc.Bounds.dwMinimum;m_dwMaximum = mxc.Bounds.dwMaximum;m_dwVolumeControlID = mxc.dwControlID;return TRUE;}。
控制台C语言编写音乐播放器主要功能

#include "FM_Main.h"#include"CTL.H"#include<stdio.h>#include<windows.h>#include<mmsystem.h>#include"GUI.h"#include"ERR_CheckEnter.h"#pragma comment(lib,"winmm.lib")#include "FM_CheckFile.c"#include"FM_Choose.c"#include"FM_List.c"#include "FM_Path.c"int Order=1; //初始时为第一首歌,随音乐切换而切换--nextsong() int NewOrder=0;int Amount = 0; //歌曲总量int begin; //自定义列表中开始序号int circulatemode=1; //循环模式int pp=0;int begintemp=0; //存储自定义列表边界int ww=-1; // 显示自定义列表当前播放信息int upordown=1; //判断切歌方向int firstup=0;int originvolume=500; //默认音量为500char v[40]="setaudio aa volume to 500"; //初始化音量void Init(){Order=1;NewOrder=0;Amount = 0;circulatemode=1;pp=0;begintemp=0;ww=-1;upordown=1;firstup=0;originvolume=500;}void ShowFileList(){if(begintemp==0)begintemp=begin;Amount = FM_CheckFile();begin = Amount;if(NewOrder==0){Show_GUI_EIGHT();FM_CheckFilePrint(0,Amount);}else{Show_GUI_EIGHT();FM_CheckFilePrint(Amount,begintemp);}};void ShowFileDetails(){int i=0;if(upordown==1){if(NewOrder!=0){Order=Amount+1+ww;ww++;}}if(upordown==2){if(firstup==0){if(NewOrder!=0){Order=Amount+1+ww;ww--;}firstup--;}else{if(NewOrder!=0){Order=Amount+1+ww;ww--;}}}firstup+=4;i=Order-1;printf(" 正在播放的音乐\n");printf("-------------------------------------------------------\n");printf(" 歌曲号歌曲名歌手名\n");printf("-------------------------------------------------------\n");printf(" %3d ",info[i].ID);printf(" %-20s ",info[i].song);printf(" %-10s\n",info[i].singer);printf("-------------------------------------------------------\n");}void Play(){if(NewOrder!=0)Order=Amount+1;char vol[10]="500";char v[40];char ch[200];sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);sprintf(v," setaudio aa volume to %s",vol);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);// getchar();}void Stop(){mciSendString ("pause aa",NULL,0,NULL);printf("歌曲播放已暂停,输入3继续播放,输入12退出\n\n");// getchar();}void Resume(){mciSendString ("resume aa",NULL,0,NULL);// getchar();}void FastForward(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快进:");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d+=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void FastBack(){int n=1;int m=0;int d=0;int minute;int second;char dd[60][20];char temp[20];do{printf("输入1快退");scanf("%d",&n);mciSendString ("status aa position", dd[m], 20, 0); char ch[20];sprintf(ch,"%s",dd[m]);d=atoi(dd[m]);d-=5000;minute=(int)(((int)(d/1000))/60);second=(d/1000)-minute*60;itoa(d,dd[m],10);sprintf(temp,"seek aa to %s",dd[m]);mciSendString (temp,NULL,0,NULL);Play();m++;clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前时间:%d:%02d \n",minute,second);}while(n==1);}void StopStop(){char temp[20];char ch[10];itoa(0,ch,10);sprintf(temp,"seek aa to %s",ch);mciSendString (temp,NULL,0,NULL);mciSendString ("pause aa",NULL,0,NULL);printf("点击1重新播放\n\n");}void VolumePlus(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1增加音量,输入2退出音量增加模式 ");scanf("%d",&n);originvolume+=250;itoa(originvolume,volume,10);sprintf(temp," setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume-=250;}void VolumeReduce(){int n=1;// int originvolume=500;char volume[10];char temp[40];while(n==1){printf("输入1降低音量,输入2退出音量降低模式 ");scanf("%d",&n);originvolume-=250;itoa(originvolume,volume,10);sprintf(temp,"setaudio aa volume to %s",volume);mciSendString (temp,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("当前音量:%d\n",originvolume);}originvolume+=250;}void PreSong(){if(NewOrder==0){if(circulatemode==1){if(Order<1){Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<1){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount){Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp--;}upordown=2;}void NextSong(){if(NewOrder==0){if(circulatemode==1){if(Order>Amount){Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order>Amount)//////////////////////////////////////////////{Order=1;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order-1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}}else{Order=Amount+pp;if(circulatemode==1){if(Order<Amount)/////////////////////有问题{Order=Amount;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}if(circulatemode==2){if(Order<Amount)//有问题{Order=begin;char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[Order+1].add);mciSendString(ch,NULL,0,NULL);mciSendString(v,NULL,0,NULL);mciSendString("play aa ",NULL,0,NULL);// getchar();}}pp++;}upordown=1;}void SelectCirculMode(){int i=0;Show_GUI_SEVEN();scanf("%d",&i);if(i==1)circulatemode=1;if(i==2)circulatemode=2;}void SaveExit(){/*char dd[20];char log[50]={"testlog!!!"};mciSendString ("status aa position", dd, 20, 0);int d;d=atoi(dd);FILE *fp = NULL;fp = fopen("D:\\SaveLog.txt","a");fwrite(log,1,50,fp);*/}void PlayOperation(){int d;re: clrscr();ShowFileList();ShowFileDetails();Show_GUI_FOUR();printf("请选择要进行的操作:");epo:scanf("%d",&d);fflush(stdin);if(ERR_CheckEntero(d)){switch(d){case 1:Play();goto re;case 2:Stop();goto re;case 3:Resume();goto re;case 6:FastForward();goto re;case 8:FastBack();goto re;case 4:StopStop();goto re;case 9:VolumePlus();goto re;case 10:VolumeReduce();goto re;case 5:Order--;PreSong();goto re;case 7:Order++;NextSong();goto re;case 12:ChooseSong();goto re;case 11:SelectCirculMode();goto re;case 13:mciSendString("close aa", NULL, 0, NULL);return;case 14:SaveExit();// getchar();}}else{goto epo;}};void NewOperation(){ee: int i=0;printf("请选择要进行的操作:");scanf("%d",&i);fflush(stdin);switch(i){case 1:FM_CheckFilePrint(0,Amount);begin = FM_Choose(Amount,begin);break;case 2:begin = FM_Path(begin);break;case 3:break;default:printf("输入有误\n");goto ee;}};void ShowNewList(){FM_List(begin,Amount);NewOrder=Amount+1;PlayOperation();}void ChooseSong(){int id = 0;printf("请输入歌曲号:");scanf("%d",&id);if(id<1||id>Amount){printf("选择歌曲不存在!\n");}else{char ch[200];mciSendString("close aa", NULL, 0, NULL);sprintf(ch,"open \"%s\" alias aa",info[id-1].add);mciSendString(ch,NULL,0,NULL);mciSendString("play aa repeat",NULL,0,NULL);}}。
MP3c语言源代码

static MCI_PLAY_PARMS mciPlay;
static MCI_OPEN_PARMS mciOpen;
static MCI_DGV_SETAUDIO_PARMS mciSetAudioPara;
memset(FileName, 0, sizeof(FileName) );
FileNames.hInstance = NULL ;
FileNames.lpstrFilter = szFilter ;
FileNames.lpstrCustomFilter = NULL ;
FileNames.nMaxCustFilter = 0 ;
}
c[7+i+j]=a[7];
c[8+i+j]=a[8];
memcpy(szFilter, c,100);
FileNames.lStructSize = sizeof (OPENFILENAME) ;
FileNames.hwndOwner = hwnd ;
FileNames.nFilterIndex = 0 ;
FileNames.lpstrFile = szFileName ;
FileNames.nMaxFile = MAX_PATH ;
FileNames.lpstrFileTitle = szTitleName ;
return 0;
}
mciSetAudioPara.dwValue = iPosition*10;
mciSendCommand(mciOpen.wDeviceID, MCI_SETAUDIO, MCI_DGV_SETAUDIO_VALUE | MCI_DGV_SETAUDIO_ITEM,(DWORD)(LPVOID)&mciSetAudioPara);
c语言课程设计音频信息管理(修改自学生成绩管理系统)

.一引言在现在的日常生活中,人们对娱乐的要求越来越高。
因为随着科技的突飞猛进,娱乐形式、娱乐设备也越来越多。
而听音乐则是其中一种十分重要而实现起来又十分简单的娱乐形式,所以说,音乐无处不在。
因此,我们对音乐的管理就十分有必要了。
现在的生活节奏越来越快,人们想要更加方便而快捷的管理自己的音乐,节省自己的时间。
而目前我们学习过如何使C语言来进行编程,所以就有了这个简单的设计。
随着各种便携式音乐播放器以及电子计算机的普及,人们所拥有的音乐越来越多,风格,演唱者,各不相同,而人们在不同的心情,不同的天气时对音乐的爱好是不同的。
人们需要更加快捷而方便的管理自己的音乐,让自己的音乐列表井然有序。
可以根据不同的场合,不同的心情快速的找到自己所需要的音乐。
让音乐匹配自己的心情,通过音乐来表达自己的感受是很多人习惯。
音乐是一种娱乐,同时也是一种特别的表达方式。
歌手通过歌曲来表达自己的某种情感,产生与听众的共鸣。
当听众想要表达相同的情感时,直接就可以引用自己听过的歌。
我们让这种娱乐,或者更着重于对自己情感的表达实现起来更加容易。
运用音乐管理程序可以更加方便而快捷的管理自己喜欢的音乐,省去了繁琐的过程,让听音乐更加方便快捷,节省自己的宝贵时间。
音乐管理是每个音乐播放器必须实现的功能之一。
随着各个电子厂商退出自己的便携是播放器,只有高效便捷的的音乐管理方式才能在竞争中脱颖而出。
好的音乐管理程序是对消费者的负责,更是对自己责任的负责。
以前的操作系统等系统软件主要是由汇编语言编写的(包括UNIX操作系统在)。
由于汇编语言指令时机器所不能直接识别、理解和执行的,最好改用高级语言,但一般高级语言难以实现汇编语言的某些功能(汇编语言可以直接对硬件进行操作,例如,对存地址的操作、位操作等)。
人们设想能否找到一种既具有一般高级语言特性,又具有低级语言特性的语言,集它们的优点于一身。
于是,C语言就在这种情况下应运而生了。
本次课设我选择歌曲管理程序的设计,考察我对结构体,数组的操作,以及C语言算法的掌握。
c语言声音控制的函数

c语言声音控制的函数C语言提供了一系列函数来控制声音,在音频处理和媒体应用等领域中发挥着重要作用。
在本文中,我们将介绍几个常用的C语言声音控制函数,以帮助读者了解其基本原理和使用方式。
首先,让我们来研究如何播放声音。
在C语言中,我们可以使用函数`PlaySound()`来实现简单的声音播放功能。
该函数接受一个参数,即指向要播放声音文件的字符串。
通过调用该函数,我们可以播放.wav格式的声音文件。
例如,如果我们想要播放一个名为`sound.wav`的声音文件,我们可以使用以下代码:```PlaySound("sound.wav", NULL, SND_FILENAME);```此处的第二个参数为NULL,表示我们不想使用系统默认的播放方式。
而最后一个参数SND_FILENAME则为我们指定了要播放的声音文件名。
接下来,我们介绍C语言中如何控制声音的音量。
通过使用`waveOutSetVolume()`函数,我们可以调整系统的音量。
这个函数接受两个参数,第一个参数表示音频设备的句柄,我们可以通过`waveOutOpen()`函数获取到该句柄;第二个参数则是一个32位的无符号整数,表示音量大小。
该整数的高16位表示左声道的音量,低16位表示右声道的音量。
比如,如果我们想将左右声道的音量都设置为最大,我们可以使用以下代码:```waveOutSetVolume(NULL, 0xFFFFFFFF);```此处的第一个参数为NULL,表示我们调整的是系统的音量;而第二个参数0xFFFFFFFF表示将左右声道的音量都设置为最大。
除了调整音量,我们还可以使用C语言来生成特定频率的声音。
在这里,我们可以使用`beep()`函数来实现。
`beep()`函数接受两个参数,第一个参数表示频率,第二个参数表示持续时间(以毫秒为单位)。
例如,如果我们想在500Hz的频率下播放一个持续1秒的声音,我们可以使用以下代码:```beep(500, 1000);```通过不同的频率和持续时间组合,我们可以生成不同音高和音长的声音。
用C语言编写后台音乐控制程序

用C语言编写后台音乐控制程序
黄学军
【期刊名称】《电脑编程技巧与维护》
【年(卷),期】1996(000)001
【摘要】在自己的程序里采用后台音乐控制技术是很诱人的想法。
在C语言中利用ICH中断实现多任务可以解决这个问题,不少书上介绍过这方面的技巧。
笔者就所见到的这方面技巧进行分析,发现有一个不小的缺陷,就是它们只能对音调进行控制,而不能对音长进行控制,这是因为他们大多采用了“for(i=0;i<1000;i++)”,或“delay()”语句进行延时来获得音长的。
这样又带来了一个问题,那就是宝贵的机时都浪费在这些中断服务程序的延时等待上。
【总页数】2页(P17-18)
【作者】黄学军
【作者单位】无
【正文语种】中文
【中图分类】TP311
【相关文献】
1.一个由LabVIEW编写的扫描探针显微镜控制程序 [J], 白江华;John L Freeouf;Andres La Rosa
2.浅析S7-200 PLC顺序控制程序编写的几种思路 [J], 张祁
3.S7-200PLC 顺序控制程序编写的几种思路 [J], 张祁;
4.C语言下拉式菜单程序的常见失误及改进:“后台”演奏音乐 [J], 王水;余光
5.如何用C语言编写步进电机控制程序 [J], 张振环
因版权原因,仅展示原文概要,查看原文内容请购买。