summaryrefslogtreecommitdiff
path: root/IvyAudioMon
diff options
context:
space:
mode:
authorfcolin2007-02-01 13:29:31 +0000
committerfcolin2007-02-01 13:29:31 +0000
commitafe2e7dfc1388cad991e8d38dda7d648c137aa52 (patch)
tree92bf63d2b2b34a805927aa294c7c51912638f66a /IvyAudioMon
parent0be65f8a110ee9bf5da9c93e0bd5b5b62b3bad0c (diff)
parent04c263c314499e38d64af9d4a1aa5e2b8d9d5ead (diff)
downloadivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.zip
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.gz
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.bz2
ivy-cplusplus-afe2e7dfc1388cad991e8d38dda7d648c137aa52.tar.xz
modif struct svnwindows@3001
Diffstat (limited to 'IvyAudioMon')
-rw-r--r--IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj811
-rw-r--r--IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj.vspscc10
-rw-r--r--IvyAudioMon/IvyAudioMon.exe.manifest22
-rw-r--r--IvyAudioMon/IvyAudioMon.sln54
-rw-r--r--IvyAudioMon/IvyAudioMon.vssscc10
-rw-r--r--IvyAudioMon/Meter.cpp72
-rw-r--r--IvyAudioMon/Meter.h49
-rw-r--r--IvyAudioMon/Meter.rc206
-rw-r--r--IvyAudioMon/Meter.vcproj250
-rw-r--r--IvyAudioMon/Meter.vcproj.vspscc10
-rw-r--r--IvyAudioMon/MeterDlg.cpp365
-rw-r--r--IvyAudioMon/MeterDlg.h80
-rw-r--r--IvyAudioMon/ParseCmdLine.cpp76
-rw-r--r--IvyAudioMon/ParseCmdLine.h37
-rw-r--r--IvyAudioMon/StdAfx.cpp6
-rw-r--r--IvyAudioMon/StdAfx.h28
-rw-r--r--IvyAudioMon/res/Meter.icobin0 -> 318 bytes
-rw-r--r--IvyAudioMon/res/Meter.rc213
-rw-r--r--IvyAudioMon/resource.h30
19 files changed, 2129 insertions, 0 deletions
diff --git a/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj b/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj
new file mode 100644
index 0000000..8747e9e
--- /dev/null
+++ b/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj
@@ -0,0 +1,811 @@
+"DeployProject"
+{
+"VSVersion" = "3:701"
+"ProjectType" = "8:{2C2AF0D9-9B47-4FE5-BEF2-169778172667}"
+"IsWebType" = "8:FALSE"
+"ProjectName" = "8:Install"
+"LanguageId" = "3:1036"
+"CodePage" = "3:1252"
+"UILanguageId" = "3:1036"
+"SccProjectName" = "8:SAK"
+"SccLocalPath" = "8:SAK"
+"SccAuxPath" = "8:SAK"
+"SccProvider" = "8:SAK"
+ "Hierarchy"
+ {
+ "Entry"
+ {
+ "MsmKey" = "8:_1FFF66C6BAC84098B44C4BFB77CF31BA"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_24D4F2F7205D4B84A9A179397CA5449D"
+ "OwnerKey" = "8:_UNDEFINED"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_280A192E83624205B038236965792BA6"
+ "OwnerKey" = "8:_24D4F2F7205D4B84A9A179397CA5449D"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_29B546875AD67FD9DDEB3787BB5634AC"
+ "OwnerKey" = "8:_24D4F2F7205D4B84A9A179397CA5449D"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ "Entry"
+ {
+ "MsmKey" = "8:_63D08CD46ADD4B6981762367F1A8B4B4"
+ "OwnerKey" = "8:_24D4F2F7205D4B84A9A179397CA5449D"
+ "MsmSig" = "8:_UNDEFINED"
+ }
+ }
+ "Configurations"
+ {
+ "Debug"
+ {
+ "DisplayName" = "8:Debug"
+ "IsDebugOnly" = "11:TRUE"
+ "IsReleaseOnly" = "11:FALSE"
+ "OutputFilename" = "8:Debug\\InstIvyAudioMonitor.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:2"
+ }
+ "Release"
+ {
+ "DisplayName" = "8:Release"
+ "IsDebugOnly" = "11:FALSE"
+ "IsReleaseOnly" = "11:TRUE"
+ "OutputFilename" = "8:..\\..\\..\\..\\Install\\IvyAudioMon.msi"
+ "PackageFilesAs" = "3:2"
+ "PackageFileSize" = "3:-2147483648"
+ "CabType" = "3:1"
+ "Compression" = "3:2"
+ "SignOutput" = "11:FALSE"
+ "CertificateFile" = "8:"
+ "PrivateKeyFile" = "8:"
+ "TimeStampServer" = "8:"
+ "InstallerBootstrapper" = "3:1"
+ }
+ }
+ "Deployable"
+ {
+ "CustomAction"
+ {
+ }
+ "DefaultFeature"
+ {
+ "Name" = "8:DefaultFeature"
+ "Title" = "8:"
+ "Description" = "8:"
+ }
+ "ExternalPersistence"
+ {
+ "LaunchCondition"
+ {
+ }
+ }
+ "Feature"
+ {
+ }
+ "File"
+ {
+ "{A582A373-4685-4296-BEFE-614B80A702C3}:_29B546875AD67FD9DDEB3787BB5634AC"
+ {
+ "SourcePath" = "8:WSOCK32.dll"
+ "TargetName" = "8:WSOCK32.dll"
+ "Tag" = "8:"
+ "Folder" = "8:_B77ADBA35B9B4DABB6315373618206DF"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "IsolateTo" = "8:"
+ }
+ }
+ "FileType"
+ {
+ }
+ "Folder"
+ {
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_9C9C3F0E7D0440BD8FC950681C8BDFF5"
+ {
+ "Name" = "8:#1919"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:ProgramMenuFolder"
+ "Folders"
+ {
+ }
+ }
+ "{58C0ADA3-3CEA-43BD-A3B3-2EA121BC8217}:_B77ADBA35B9B4DABB6315373618206DF"
+ {
+ "DefaultLocation" = "8:[ProgramFilesFolder][Manufacturer]\\[ProductName]"
+ "Name" = "8:#1925"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:TARGETDIR"
+ "Folders"
+ {
+ }
+ }
+ "{78BAF5CE-F2E5-45BE-83BC-DB6AF387E941}:_CBE0581308BE453A8D2918CCA90E7FA2"
+ {
+ "Name" = "8:#1916"
+ "AlwaysCreate" = "11:FALSE"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Property" = "8:DesktopFolder"
+ "Folders"
+ {
+ }
+ }
+ }
+ "LaunchCondition"
+ {
+ }
+ "Locator"
+ {
+ }
+ "MsiBootstrapper"
+ {
+ "LangId" = "3:1036"
+ }
+ "Product"
+ {
+ "Name" = "8:Microsoft Visual Studio"
+ "ProductName" = "8:IvyAudioMon"
+ "ProductCode" = "8:{1D4F0F46-9EC2-422B-AC5E-7407448D5E1B}"
+ "PackageCode" = "8:{21119BEA-2AC8-47AE-9174-7F3FC1074FF8}"
+ "UpgradeCode" = "8:{63A0EA16-E436-46F8-A5D0-22C992240CE4}"
+ "RestartWWWService" = "11:FALSE"
+ "RemovePreviousVersions" = "11:TRUE"
+ "DetectNewerInstalledVersion" = "11:TRUE"
+ "ProductVersion" = "8:1.0.1"
+ "Manufacturer" = "8:CENA PII"
+ "ARPHELPTELEPHONE" = "8:"
+ "ARPHELPLINK" = "8:"
+ "Title" = "8:IvyAudioMon"
+ "Subject" = "8:"
+ "ARPCONTACT" = "8:CENA"
+ "Keywords" = "8:ivy"
+ "ARPCOMMENTS" = "8:Audio monitor for Ivy"
+ "ARPURLINFOABOUT" = "8:"
+ "ARPPRODUCTICON" = "8:"
+ "ARPIconIndex" = "3:0"
+ "SearchPath" = "8:"
+ "UseSystemSearchPath" = "11:TRUE"
+ }
+ "Registry"
+ {
+ "HKLM"
+ {
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_8E97A3A6197D41C18F825E47B18A63B8"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_BFB0F7EE6461455A82D21F6B188BC952"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCU"
+ {
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_30F0AB285F08494B99DEDF264CB58AED"
+ {
+ "Name" = "8:Software"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ "{6A471EEF-D31B-40F8-BCF6-C9E8EC783F36}:_C112641E4EDD452ABF4B8361F38D8039"
+ {
+ "Name" = "8:[Manufacturer]"
+ "Condition" = "8:"
+ "AlwaysCreate" = "11:FALSE"
+ "DeleteAtUninstall" = "11:FALSE"
+ "Transitive" = "11:FALSE"
+ "Keys"
+ {
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ "Values"
+ {
+ }
+ }
+ }
+ }
+ "HKCR"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKU"
+ {
+ "Keys"
+ {
+ }
+ }
+ "HKPU"
+ {
+ "Keys"
+ {
+ }
+ }
+ }
+ "Sequences"
+ {
+ }
+ "Shortcut"
+ {
+ "{478F747B-8505-45D1-9AAE-8C3B645C26E3}:_2240A7D62F4F410F896ABD1A12FC17CE"
+ {
+ "Name" = "8:IvyAudioMon"
+ "Arguments" = "8:"
+ "Description" = "8:"
+ "ShowCmd" = "3:1"
+ "IconIndex" = "3:0"
+ "Transitive" = "11:FALSE"
+ "Target" = "8:_1FFF66C6BAC84098B44C4BFB77CF31BA"
+ "Folder" = "8:_9C9C3F0E7D0440BD8FC950681C8BDFF5"
+ "WorkingFolder" = "8:_B77ADBA35B9B4DABB6315373618206DF"
+ "Icon" = "8:"
+ "Feature" = "8:"
+ }
+ }
+ "UserInterface"
+ {
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_0FC4A48F6C1A48898536C7D225CDBD18"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:1"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_C14469C50F234DB7BF4FDDC77E614389"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progression"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_1C654AAF7E24483CACE80660DD7DD7C1"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:2"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_246CADC3304E4D458C7209E11813417D"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Terminé"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_202BE75FFB354259B74198A8BC0E6543"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdUserInterface.wim"
+ }
+ "{B654A020-6903-4E6A-A86C-75DC463DB54B}:_2F02F6743C41431E8CDF97AF5ADCE2C7"
+ {
+ "UseDynamicProperties" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdBasicDialogs.wim"
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_40B3D65F18C347949729D8727EAFCF5A"
+ {
+ "Name" = "8:#1902"
+ "Sequence" = "3:1"
+ "Attributes" = "3:3"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_C79367C78F8D4CFAAFDBA76CE26440A9"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Terminé"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFinishedDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "UpdateText"
+ {
+ "Name" = "8:UpdateText"
+ "DisplayName" = "8:#1058"
+ "Description" = "8:#1158"
+ "Type" = "3:15"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1258"
+ "DefaultValue" = "8:#1258"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_48B2B2E5F721448E897D9B22396E09E5"
+ {
+ "Name" = "8:#1901"
+ "Sequence" = "3:2"
+ "Attributes" = "3:2"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_AF79945CD8DC4C0090DAFF213ADDD226"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Progression"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminProgressDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "ShowProgress"
+ {
+ "Name" = "8:ShowProgress"
+ "DisplayName" = "8:#1009"
+ "Description" = "8:#1109"
+ "Type" = "3:5"
+ "ContextData" = "8:1;True=1;False=0"
+ "Attributes" = "3:0"
+ "Setting" = "3:0"
+ "Value" = "3:1"
+ "DefaultValue" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_56DDF779024C4B7DA283A20E4EDF975B"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:2"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_9F1357406D3C4391A37026DB5ACACBFE"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Dossier d'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_A806909CFAC14B269567508382146607"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirmer l'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_FA35B731B6424407886715895D826B0B"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Bienvenue"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdAdminWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ "{8D9DEE8B-DD8B-4F48-9072-C4364E4F4011}:_D17F3ACD1241458BA747EBBB3776DA42"
+ {
+ "Name" = "8:#1900"
+ "Sequence" = "3:1"
+ "Attributes" = "3:1"
+ "Dialogs"
+ {
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_5BBB4A316E4647FEB34D20AB70320849"
+ {
+ "Sequence" = "3:200"
+ "DisplayName" = "8:Dossier d'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdFolderDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_81BFECCD2AFE47F3899A9A1E5CD1A9CF"
+ {
+ "Sequence" = "3:300"
+ "DisplayName" = "8:Confirmer l'installation"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdConfirmDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ "{18ADD6EC-89FE-4ED7-AD3E-211C40278470}:_ACD3BF5E8B1443F1993A861355C9AFC5"
+ {
+ "Sequence" = "3:100"
+ "DisplayName" = "8:Bienvenue"
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:FALSE"
+ "SourcePath" = "8:<VsdDialogDir>\\VsdWelcomeDlg.wid"
+ "Properties"
+ {
+ "BannerBitmap"
+ {
+ "Name" = "8:BannerBitmap"
+ "DisplayName" = "8:#1001"
+ "Description" = "8:#1101"
+ "Type" = "3:8"
+ "ContextData" = "8:Bitmap"
+ "Attributes" = "3:4"
+ "Setting" = "3:1"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "CopyrightWarning"
+ {
+ "Name" = "8:CopyrightWarning"
+ "DisplayName" = "8:#1002"
+ "Description" = "8:#1102"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1202"
+ "DefaultValue" = "8:#1202"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ "Welcome"
+ {
+ "Name" = "8:Welcome"
+ "DisplayName" = "8:#1003"
+ "Description" = "8:#1103"
+ "Type" = "3:3"
+ "ContextData" = "8:"
+ "Attributes" = "3:0"
+ "Setting" = "3:1"
+ "Value" = "8:#1203"
+ "DefaultValue" = "8:#1203"
+ "UsePlugInResources" = "11:TRUE"
+ }
+ }
+ }
+ }
+ }
+ }
+ "MergeModule"
+ {
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_280A192E83624205B038236965792BA6"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:vc_user_stl71_rtl_x86_---.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ "{35A69C6E-5BA4-440D-803D-762B59A45393}:_63D08CD46ADD4B6981762367F1A8B4B4"
+ {
+ "UseDynamicProperties" = "11:TRUE"
+ "IsDependency" = "11:TRUE"
+ "SourcePath" = "8:vc_user_crt71_rtl_x86_---.msm"
+ "Properties"
+ {
+ }
+ "LanguageId" = "3:0"
+ "Exclude" = "11:FALSE"
+ "Folder" = "8:"
+ "Feature" = "8:"
+ "IsolateTo" = "8:"
+ }
+ }
+ "ProjectOutput"
+ {
+ "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_1FFF66C6BAC84098B44C4BFB77CF31BA"
+ {
+ "SourcePath" = "8:..\\Release\\IvyAudioMon.exe"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_B77ADBA35B9B4DABB6315373618206DF"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{1CE6AEB9-1360-44A0-ABB6-44324A0E5812}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_24D4F2F7205D4B84A9A179397CA5449D"
+ {
+ "SourcePath" = "8:..\\..\\Bus\\Ivy\\Release\\Ivy.dll"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_B77ADBA35B9B4DABB6315373618206DF"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:Built"
+ "OutputProjectGuid" = "8:{84E0039A-6721-4B18-9792-E9AE4274AC0E}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ "{8062640A-2EEE-46E9-AB67-688E9A886E9F}:_955505C784224888BF1CFB0776E09565"
+ {
+ "SourcePath" = "8:"
+ "TargetName" = "8:"
+ "Tag" = "8:"
+ "Folder" = "8:_B77ADBA35B9B4DABB6315373618206DF"
+ "Condition" = "8:"
+ "Transitive" = "11:FALSE"
+ "Vital" = "11:TRUE"
+ "ReadOnly" = "11:FALSE"
+ "Hidden" = "11:FALSE"
+ "System" = "11:FALSE"
+ "Permanent" = "11:FALSE"
+ "SharedLegacy" = "11:FALSE"
+ "PackageAs" = "3:1"
+ "Register" = "3:1"
+ "Exclude" = "11:FALSE"
+ "IsDependency" = "11:FALSE"
+ "IsolateTo" = "8:"
+ "ProjectOutputGroupRegister" = "3:1"
+ "OutputConfiguration" = "8:"
+ "OutputGroupCanonicalName" = "8:ContentFiles"
+ "OutputProjectGuid" = "8:{1CE6AEB9-1360-44A0-ABB6-44324A0E5812}"
+ "ShowKeyOutput" = "11:TRUE"
+ "ExcludeFilters"
+ {
+ }
+ }
+ }
+ "VJSharpPlugin"
+ {
+ }
+ }
+}
diff --git a/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj.vspscc b/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj.vspscc
new file mode 100644
index 0000000..853b643
--- /dev/null
+++ b/IvyAudioMon/InstIvyAudioMonitor/InstIvyAudioMonitor.vdproj.vspscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = "relative:InstIvyAudioMonitor"
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
+}
diff --git a/IvyAudioMon/IvyAudioMon.exe.manifest b/IvyAudioMon/IvyAudioMon.exe.manifest
new file mode 100644
index 0000000..4b4b9ea
--- /dev/null
+++ b/IvyAudioMon/IvyAudioMon.exe.manifest
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly
+ xmlns="urn:schemas-microsoft-com:asm.v1"
+ manifestVersion="1.0">
+<assemblyIdentity
+ processorArchitecture="x86"
+ version="5.1.0.0"
+ type="win32"
+ name="IvyAudioMon.exe"/>
+ <description>IvyAudioMon</description>
+ <dependency>
+ <dependentAssembly>
+ <assemblyIdentity
+ type="win32"
+ name="Microsoft.Windows.Common-Controls"
+ version="6.0.0.0"
+ publicKeyToken="6595b64144ccf1df"
+ language="*"
+ processorArchitecture="x86"/>
+ </dependentAssembly>
+ </dependency>
+</assembly>
diff --git a/IvyAudioMon/IvyAudioMon.sln b/IvyAudioMon/IvyAudioMon.sln
new file mode 100644
index 0000000..9bf1146
--- /dev/null
+++ b/IvyAudioMon/IvyAudioMon.sln
@@ -0,0 +1,54 @@
+Microsoft Visual Studio Solution File, Format Version 8.00
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "IvyAudioMon", "Meter.vcproj", "{1CE6AEB9-1360-44A0-ABB6-44324A0E5812}"
+ ProjectSection(ProjectDependencies) = postProject
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E} = {84E0039A-6721-4B18-9792-E9AE4274AC0E}
+ EndProjectSection
+EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Ivy", "..\Bus\Ivy\Ivy.vcproj", "{84E0039A-6721-4B18-9792-E9AE4274AC0E}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "Install", "InstIvyAudioMonitor\InstIvyAudioMonitor.vdproj", "{F1B2FDBA-BFA9-4738-9A7A-A02015B2020C}"
+ ProjectSection(ProjectDependencies) = postProject
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SourceCodeControl) = preSolution
+ SccNumberOfProjects = 4
+ SccLocalPath0 = .
+ CanCheckoutShared = false
+ SolutionUniqueID = {7EBE2858-5CAE-4B88-9010-B3E88451FDCD}
+ SccProjectUniqueName1 = ..\\Bus\\Ivy\\Ivy.vcproj
+ SccProjectName1 = \u0022$/Bus/Ivy\u0022,\u0020QPEAAAAA
+ SccLocalPath1 = ..\\Bus\\Ivy
+ CanCheckoutShared = false
+ SccProjectUniqueName2 = InstIvyAudioMonitor\\InstIvyAudioMonitor.vdproj
+ SccLocalPath2 = .
+ CanCheckoutShared = false
+ SccProjectFilePathRelativizedFromConnection2 = InstIvyAudioMonitor\\
+ SccProjectUniqueName3 = Meter.vcproj
+ SccLocalPath3 = .
+ CanCheckoutShared = false
+ EndGlobalSection
+ GlobalSection(SolutionConfiguration) = preSolution
+ Debug = Debug
+ Release = Release
+ EndGlobalSection
+ GlobalSection(ProjectConfiguration) = postSolution
+ {1CE6AEB9-1360-44A0-ABB6-44324A0E5812}.Debug.ActiveCfg = Debug|Win32
+ {1CE6AEB9-1360-44A0-ABB6-44324A0E5812}.Debug.Build.0 = Debug|Win32
+ {1CE6AEB9-1360-44A0-ABB6-44324A0E5812}.Release.ActiveCfg = Release|Win32
+ {1CE6AEB9-1360-44A0-ABB6-44324A0E5812}.Release.Build.0 = Release|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Debug.ActiveCfg = Debug|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Debug.Build.0 = Debug|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Release.ActiveCfg = Release|Win32
+ {84E0039A-6721-4B18-9792-E9AE4274AC0E}.Release.Build.0 = Release|Win32
+ {F1B2FDBA-BFA9-4738-9A7A-A02015B2020C}.Debug.ActiveCfg = Debug
+ {F1B2FDBA-BFA9-4738-9A7A-A02015B2020C}.Release.ActiveCfg = Release
+ {F1B2FDBA-BFA9-4738-9A7A-A02015B2020C}.Release.Build.0 = Release
+ EndGlobalSection
+ GlobalSection(ExtensibilityGlobals) = postSolution
+ EndGlobalSection
+ GlobalSection(ExtensibilityAddIns) = postSolution
+ EndGlobalSection
+EndGlobal
diff --git a/IvyAudioMon/IvyAudioMon.vssscc b/IvyAudioMon/IvyAudioMon.vssscc
new file mode 100644
index 0000000..794f014
--- /dev/null
+++ b/IvyAudioMon/IvyAudioMon.vssscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = ""
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROJECT"
+}
diff --git a/IvyAudioMon/Meter.cpp b/IvyAudioMon/Meter.cpp
new file mode 100644
index 0000000..5df8655
--- /dev/null
+++ b/IvyAudioMon/Meter.cpp
@@ -0,0 +1,72 @@
+// Meter.cpp : Defines the class behaviors for the application.
+//
+
+#include "stdafx.h"
+#include "Meter.h"
+#include "MeterDlg.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterApp
+
+BEGIN_MESSAGE_MAP(CMeterApp, CWinApp)
+ //{{AFX_MSG_MAP(CMeterApp)
+ // NOTE - the ClassWizard will add and remove mapping macros here.
+ // DO NOT EDIT what you see in these blocks of generated code!
+ //}}AFX_MSG
+ ON_COMMAND(ID_HELP, CWinApp::OnHelp)
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterApp construction
+
+CMeterApp::CMeterApp()
+{
+ // TODO: add construction code here,
+ // Place all significant initialization in InitInstance
+}
+
+/////////////////////////////////////////////////////////////////////////////
+// The one and only CMeterApp object
+
+CMeterApp theApp;
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterApp initialization
+
+BOOL CMeterApp::InitInstance()
+{
+ // Standard initialization
+ // If you are not using these features and wish to reduce the size
+ // of your final executable, you should remove from the following
+ // the specific initialization routines you do not need.
+
+#ifdef _AFXDLL
+ //Enable3dControls(); // Call this when using MFC in a shared DLL
+#else
+ //Enable3dControlsStatic(); // Call this when linking to MFC statically
+#endif
+
+ CMeterDlg dlg;
+ m_pMainWnd = &dlg;
+ int nResponse = dlg.DoModal();
+ if (nResponse == IDOK)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with OK
+ }
+ else if (nResponse == IDCANCEL)
+ {
+ // TODO: Place code here to handle when the dialog is
+ // dismissed with Cancel
+ }
+
+ // Since the dialog has been closed, return FALSE so that we exit the
+ // application, rather than start the application's message pump.
+ return FALSE;
+}
diff --git a/IvyAudioMon/Meter.h b/IvyAudioMon/Meter.h
new file mode 100644
index 0000000..4e9e30a
--- /dev/null
+++ b/IvyAudioMon/Meter.h
@@ -0,0 +1,49 @@
+// Meter.h : main header file for the METER application
+//
+
+#if !defined(AFX_METER_H__3A48D835_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
+#define AFX_METER_H__3A48D835_F4B7_11D1_9F80_006008984DF6__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#ifndef __AFXWIN_H__
+ #error include 'stdafx.h' before including this file for PCH
+#endif
+
+#include "resource.h" // main symbols
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterApp:
+// See Meter.cpp for the implementation of this class
+//
+
+class CMeterApp : public CWinApp
+{
+public:
+ CMeterApp();
+
+// Overrides
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CMeterApp)
+ public:
+ virtual BOOL InitInstance();
+ //}}AFX_VIRTUAL
+
+// Implementation
+
+ //{{AFX_MSG(CMeterApp)
+ // NOTE - the ClassWizard will add and remove member functions here.
+ // DO NOT EDIT what you see in these blocks of generated code !
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+
+/////////////////////////////////////////////////////////////////////////////
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_METER_H__3A48D835_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
diff --git a/IvyAudioMon/Meter.rc b/IvyAudioMon/Meter.rc
new file mode 100644
index 0000000..b7c7058
--- /dev/null
+++ b/IvyAudioMon/Meter.rc
@@ -0,0 +1,206 @@
+// Microsoft Visual C++ generated resource script.
+//
+#include "resource.h"
+
+#define APSTUDIO_READONLY_SYMBOLS
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 2 resource.
+//
+#include "afxres.h"
+
+/////////////////////////////////////////////////////////////////////////////
+#undef APSTUDIO_READONLY_SYMBOLS
+
+/////////////////////////////////////////////////////////////////////////////
+// Anglais (États-Unis) resources
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
+#pragma code_page(1252)
+#endif //_WIN32
+
+#ifdef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// TEXTINCLUDE
+//
+
+1 TEXTINCLUDE
+BEGIN
+ "resource.h\0"
+END
+
+2 TEXTINCLUDE
+BEGIN
+ "#include ""afxres.h""\r\n"
+ "\0"
+END
+
+3 TEXTINCLUDE
+BEGIN
+ "#define _AFX_NO_SPLITTER_RESOURCES\r\n"
+ "#define _AFX_NO_OLE_RESOURCES\r\n"
+ "#define _AFX_NO_TRACKER_RESOURCES\r\n"
+ "#define _AFX_NO_PROPERTY_RESOURCES\r\n"
+ "\r\n"
+ "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)\r\n"
+ "#ifdef _WIN32\r\n"
+ "LANGUAGE 9, 1\r\n"
+ "#pragma code_page(1252)\r\n"
+ "#endif\r\n"
+ "#include ""res\\Meter.rc2"" // non-Microsoft Visual C++ edited resources\r\n"
+ "#include ""afxres.rc"" // Standard components\r\n"
+ "#endif\0"
+END
+
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Icon
+//
+
+// Icon with lowest ID value placed first to ensure application icon
+// remains consistent on all systems.
+IDR_MAINFRAME ICON "res\\Meter.ico"
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Dialog
+//
+
+IDD_ABOUTBOX DIALOGEX 0, 0, 197, 78
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
+CAPTION "About Ivy Audio Monitor"
+FONT 8, "MS Sans Serif", 0, 0, 0x0
+BEGIN
+ ICON IDR_MAINFRAME,IDC_STATIC,11,17,20,20
+ LTEXT "Ivy Audio Monitor",IDC_STATIC,40,12,143,8,SS_NOPREFIX
+ LTEXT "Copyright (C) PII 2002 - 2115",IDC_STATIC,40,36,143,8
+ DEFPUSHBUTTON "OK",IDOK,83,51,32,14,WS_GROUP
+ LTEXT "Version 1.0",IDC_STATIC,40,24,143,8
+END
+
+IDD_METER_DIALOG DIALOGEX 0, 0, 214, 84
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION |
+ WS_SYSMENU
+EXSTYLE WS_EX_APPWINDOW
+CAPTION "Ivy Audio Monitor"
+FONT 8, "MS Sans Serif", 0, 0, 0x1
+BEGIN
+ CONTROL "Progress1",IDC_PROGRESS,"msctls_progress32",WS_BORDER,
+ 20,38,173,14
+ CONTROL "",IDC_PEEK,"msctls_progress32",WS_BORDER,19,58,173,14
+ EDITTEXT IDC_BUS,20,17,172,15,ES_AUTOHSCROLL
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// Version
+//
+
+VS_VERSION_INFO VERSIONINFO
+ FILEVERSION 1,2,0,0
+ PRODUCTVERSION 1,2,0,0
+ FILEFLAGSMASK 0x3fL
+#ifdef _DEBUG
+ FILEFLAGS 0x1L
+#else
+ FILEFLAGS 0x0L
+#endif
+ FILEOS 0x4L
+ FILETYPE 0x1L
+ FILESUBTYPE 0x0L
+BEGIN
+ BLOCK "StringFileInfo"
+ BEGIN
+ BLOCK "040904b0"
+ BEGIN
+ VALUE "CompanyName", "chensu"
+ VALUE "FileDescription", "Audio Mixer Functions Demo - Wave Meter"
+ VALUE "FileVersion", "1.2"
+ VALUE "InternalName", "Wave Meter"
+ VALUE "LegalCopyright", "Copyright (C) chensu 1998 - 2002"
+ VALUE "OriginalFilename", "Meter.EXE"
+ VALUE "ProductName", "Audio Mixer Functions Demo"
+ VALUE "ProductVersion", "1.2"
+ END
+ END
+ BLOCK "VarFileInfo"
+ BEGIN
+ VALUE "Translation", 0x409, 1200
+ END
+END
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// DESIGNINFO
+//
+
+#ifdef APSTUDIO_INVOKED
+GUIDELINES DESIGNINFO
+BEGIN
+ IDD_ABOUTBOX, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 190
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 71
+ END
+
+ IDD_METER_DIALOG, DIALOG
+ BEGIN
+ LEFTMARGIN, 7
+ RIGHTMARGIN, 207
+ TOPMARGIN, 7
+ BOTTOMMARGIN, 77
+ END
+END
+#endif // APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+//
+// String Table
+//
+
+STRINGTABLE
+BEGIN
+ IDS_ABOUTBOX "&About Wave Meter..."
+ IDS_FMTNUMMIXERS "%u mixer(s)"
+ IDS_FMTCAPS "%s, %lu destination line(s)"
+ IDS_FMTNAMES "%s - %s"
+ IDS_NOCONTROL "The control does not exist."
+END
+
+#endif // Anglais (États-Unis) resources
+/////////////////////////////////////////////////////////////////////////////
+
+
+
+#ifndef APSTUDIO_INVOKED
+/////////////////////////////////////////////////////////////////////////////
+//
+// Generated from the TEXTINCLUDE 3 resource.
+//
+#define _AFX_NO_SPLITTER_RESOURCES
+#define _AFX_NO_OLE_RESOURCES
+#define _AFX_NO_TRACKER_RESOURCES
+#define _AFX_NO_PROPERTY_RESOURCES
+
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
+#ifdef _WIN32
+LANGUAGE 9, 1
+#pragma code_page(1252)
+#endif
+#include "res\Meter.rc2" // non-Microsoft Visual C++ edited resources
+#include "afxres.rc" // Standard components
+#endif
+/////////////////////////////////////////////////////////////////////////////
+#endif // not APSTUDIO_INVOKED
+
diff --git a/IvyAudioMon/Meter.vcproj b/IvyAudioMon/Meter.vcproj
new file mode 100644
index 0000000..0278e48
--- /dev/null
+++ b/IvyAudioMon/Meter.vcproj
@@ -0,0 +1,250 @@
+<?xml version="1.0" encoding="Windows-1252"?>
+<VisualStudioProject
+ ProjectType="Visual C++"
+ Version="7.10"
+ Name="IvyAudioMon"
+ SccProjectName="SAK"
+ SccAuxPath="SAK"
+ SccLocalPath="SAK"
+ SccProvider="SAK"
+ Keyword="MFCProj">
+ <Platforms>
+ <Platform
+ Name="Win32"/>
+ </Platforms>
+ <Configurations>
+ <Configuration
+ Name="Debug|Win32"
+ OutputDirectory=".\Debug"
+ IntermediateDirectory=".\Debug"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ AdditionalIncludeDirectories="..\Ivy"
+ PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS"
+ RuntimeLibrary="1"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="stdafx.h"
+ PrecompiledHeaderFile=".\Debug/Meter.pch"
+ AssemblerListingLocation=".\Debug/"
+ ObjectFile=".\Debug/"
+ ProgramDataBaseFileName=".\Debug/"
+ WarningLevel="4"
+ SuppressStartupBanner="TRUE"
+ DebugInformationFormat="4"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ GenerateDebugInformation="TRUE"
+ ProgramDatabaseFile=".\Debug/Meter.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="_DEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Debug/Meter.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="_DEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ <Configuration
+ Name="Release|Win32"
+ OutputDirectory=".\Release"
+ IntermediateDirectory=".\Release"
+ ConfigurationType="1"
+ UseOfMFC="1"
+ ATLMinimizesCRunTimeLibraryUsage="FALSE">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ InlineFunctionExpansion="1"
+ AdditionalIncludeDirectories="..\Ivy"
+ PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
+ StringPooling="TRUE"
+ RuntimeLibrary="0"
+ EnableFunctionLevelLinking="TRUE"
+ UsePrecompiledHeader="3"
+ PrecompiledHeaderThrough="stdafx.h"
+ PrecompiledHeaderFile=".\Release/Meter.pch"
+ AssemblerListingLocation=".\Release/"
+ ObjectFile=".\Release/"
+ ProgramDataBaseFileName=".\Release/"
+ WarningLevel="4"
+ SuppressStartupBanner="TRUE"/>
+ <Tool
+ Name="VCCustomBuildTool"/>
+ <Tool
+ Name="VCLinkerTool"
+ AdditionalDependencies="winmm.lib"
+ LinkIncremental="1"
+ SuppressStartupBanner="TRUE"
+ ProgramDatabaseFile=".\Release/Meter.pdb"
+ SubSystem="2"
+ TargetMachine="1"/>
+ <Tool
+ Name="VCMIDLTool"
+ PreprocessorDefinitions="NDEBUG"
+ MkTypLibCompatible="TRUE"
+ SuppressStartupBanner="TRUE"
+ TargetEnvironment="1"
+ TypeLibraryName=".\Release/Meter.tlb"
+ HeaderFileName=""/>
+ <Tool
+ Name="VCPostBuildEventTool"/>
+ <Tool
+ Name="VCPreBuildEventTool"/>
+ <Tool
+ Name="VCPreLinkEventTool"/>
+ <Tool
+ Name="VCResourceCompilerTool"
+ PreprocessorDefinitions="NDEBUG"
+ Culture="1033"/>
+ <Tool
+ Name="VCWebServiceProxyGeneratorTool"/>
+ <Tool
+ Name="VCXMLDataGeneratorTool"/>
+ <Tool
+ Name="VCWebDeploymentTool"/>
+ <Tool
+ Name="VCManagedWrapperGeneratorTool"/>
+ <Tool
+ Name="VCAuxiliaryManagedWrapperGeneratorTool"/>
+ </Configuration>
+ </Configurations>
+ <References>
+ </References>
+ <Files>
+ <Filter
+ Name="Source Files"
+ Filter="cpp;c;cxx;rc;def;r;odl;idl;hpj;bat">
+ <File
+ RelativePath="Meter.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath="Meter.rc">
+ </File>
+ <File
+ RelativePath="MeterDlg.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ PreprocessorDefinitions=""/>
+ </FileConfiguration>
+ </File>
+ <File
+ RelativePath=".\ParseCmdLine.cpp">
+ </File>
+ <File
+ RelativePath="StdAfx.cpp">
+ <FileConfiguration
+ Name="Debug|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="0"
+ PreprocessorDefinitions=""
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ <FileConfiguration
+ Name="Release|Win32">
+ <Tool
+ Name="VCCLCompilerTool"
+ Optimization="1"
+ PreprocessorDefinitions=""
+ UsePrecompiledHeader="1"/>
+ </FileConfiguration>
+ </File>
+ </Filter>
+ <Filter
+ Name="Header Files"
+ Filter="h;hpp;hxx;hm;inl">
+ <File
+ RelativePath="Meter.h">
+ </File>
+ <File
+ RelativePath="MeterDlg.h">
+ </File>
+ <File
+ RelativePath=".\ParseCmdLine.h">
+ </File>
+ <File
+ RelativePath="Resource.h">
+ </File>
+ <File
+ RelativePath="StdAfx.h">
+ </File>
+ </Filter>
+ <Filter
+ Name="Resource Files"
+ Filter="ico;cur;bmp;dlg;rc2;rct;bin;cnt;rtf;gif;jpg;jpeg;jpe">
+ <File
+ RelativePath="res\Meter.ico">
+ </File>
+ <File
+ RelativePath="res\Meter.rc2">
+ </File>
+ </Filter>
+ <File
+ RelativePath=".\IvyAudioMon.exe.manifest"
+ DeploymentContent="TRUE">
+ </File>
+ <File
+ RelativePath="ReadMe.txt">
+ </File>
+ </Files>
+ <Globals>
+ <Global
+ Name="RESOURCE_FILE"
+ Value="Meter.rc"/>
+ </Globals>
+</VisualStudioProject>
diff --git a/IvyAudioMon/Meter.vcproj.vspscc b/IvyAudioMon/Meter.vcproj.vspscc
new file mode 100644
index 0000000..feffdec
--- /dev/null
+++ b/IvyAudioMon/Meter.vcproj.vspscc
@@ -0,0 +1,10 @@
+""
+{
+"FILE_VERSION" = "9237"
+"ENLISTMENT_CHOICE" = "NEVER"
+"PROJECT_FILE_RELATIVE_PATH" = ""
+"NUMBER_OF_EXCLUDED_FILES" = "0"
+"ORIGINAL_PROJECT_FILE_PATH" = ""
+"NUMBER_OF_NESTED_PROJECTS" = "0"
+"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
+}
diff --git a/IvyAudioMon/MeterDlg.cpp b/IvyAudioMon/MeterDlg.cpp
new file mode 100644
index 0000000..1749e28
--- /dev/null
+++ b/IvyAudioMon/MeterDlg.cpp
@@ -0,0 +1,365 @@
+// MeterDlg.cpp : implementation file
+//
+
+#include "stdafx.h"
+#include <stdlib.h> // abs, __max
+#include <math.h>
+#include "Meter.h"
+#include "MeterDlg.h"
+#include "ParseCmdLine.h"
+
+#ifdef _DEBUG
+#define new DEBUG_NEW
+#undef THIS_FILE
+static char THIS_FILE[] = __FILE__;
+#endif
+
+
+const char * CONVSTR( const CString& str )
+{
+#ifdef UNDER_CE
+
+ static char buffer[4096];
+ int len = str.GetLength();
+ buffer[len] = '\0';
+ if ( len )
+ {
+ int err = WideCharToMultiByte( CP_ACP, 0, str, len, buffer, 4096, NULL, NULL );
+ if ( err == 0 )
+ TRACE(TEXT("Error converting chars %d\n"),GetLastError());
+ }
+ return buffer;
+#else
+ return (LPCSTR) str;
+#endif
+
+}
+/////////////////////////////////////////////////////////////////////////////
+// CAboutDlg dialog used for App About
+
+class CAboutDlg : public CDialog
+{
+public:
+ CAboutDlg();
+
+// Dialog Data
+ //{{AFX_DATA(CAboutDlg)
+ enum { IDD = IDD_ABOUTBOX };
+ //}}AFX_DATA
+
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CAboutDlg)
+ protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+ //{{AFX_MSG(CAboutDlg)
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+};
+
+CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
+{
+ //{{AFX_DATA_INIT(CAboutDlg)
+ //}}AFX_DATA_INIT
+}
+
+void CAboutDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CAboutDlg)
+ //}}AFX_DATA_MAP
+}
+
+BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
+ //{{AFX_MSG_MAP(CAboutDlg)
+ // No message handlers
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterDlg dialog
+
+CMeterDlg::CMeterDlg(CWnd* pParent /*=NULL*/)
+ : CDialog(CMeterDlg::IDD, pParent)
+ , m_busnumber(_T(""))
+{
+ //{{AFX_DATA_INIT(CMeterDlg)
+ //}}AFX_DATA_INIT
+ // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
+ m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
+}
+
+void CMeterDlg::DoDataExchange(CDataExchange* pDX)
+{
+ CDialog::DoDataExchange(pDX);
+ //{{AFX_DATA_MAP(CMeterDlg)
+ DDX_Control(pDX, IDC_PROGRESS, m_ctrlProgress);
+ DDX_Control(pDX, IDC_PEEK, m_ctrlPeekValue);
+ DDX_Text(pDX, IDC_BUS, m_busnumber);
+ //}}AFX_DATA_MAP
+
+
+}
+
+BEGIN_MESSAGE_MAP(CMeterDlg, CDialog)
+ //{{AFX_MSG_MAP(CMeterDlg)
+ ON_WM_DESTROY()
+ ON_WM_SYSCOMMAND()
+ ON_WM_PAINT()
+ ON_WM_QUERYDRAGICON()
+ //}}AFX_MSG_MAP
+END_MESSAGE_MAP()
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterDlg message handlers
+
+BOOL CMeterDlg::OnInitDialog()
+{
+ CDialog::OnInitDialog();
+
+ // Add "About..." menu item to system menu.
+
+ // IDM_ABOUTBOX must be in the system command range.
+ ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
+ ASSERT(IDM_ABOUTBOX < 0xF000);
+
+ CMenu* pSysMenu = GetSystemMenu(FALSE);
+ if (pSysMenu != NULL)
+ {
+ CString strAboutMenu;
+ strAboutMenu.LoadString(IDS_ABOUTBOX);
+ if (!strAboutMenu.IsEmpty())
+ {
+ pSysMenu->AppendMenu(MF_SEPARATOR);
+ pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
+ }
+ }
+
+ // Set the icon for this dialog. The framework does this automatically
+ // when the application's main window is not a dialog
+ SetIcon(m_hIcon, TRUE); // Set big icon
+ SetIcon(m_hIcon, FALSE); // Set small icon
+ m_ctrlProgress.SetRange( 0 , 255 );
+ m_ctrlPeekValue.SetRange( 0 , 255 );
+
+ nb_buffers = 0;
+ peekValue = 0.0;
+ lastValue = 0.0;
+ m_seuil = 15.0;
+
+ openWaveDev();
+
+ // parse command Line Info
+ ParseCmdLine cmd;
+ AfxGetApp()->ParseCommandLine( cmd );
+
+ // Set Argument from Command Line
+ m_seuil = cmd.m_seuil;
+ m_busnumber = cmd.m_busNumber;
+ bus = new Ivy( "IvyAudioMon","IvyAudioMon Ready",this,FALSE);
+
+// bus->BindMsg("(.*)", BUS_CALLBACK_OF(CTestDlg, IvyCallback ));
+
+ //bus->BindMsg("^S( A=([0-9]+))?( B=([0-9]+))?",cb);
+
+ // force bus start in case of start
+ m_busnumber = bus->GetDomain( CONVSTR(m_busnumber) );
+ bus->start(CONVSTR(m_busnumber));
+
+
+ VERIFY(this->UpdateData(FALSE));
+
+ return TRUE; // return TRUE unless you set the focus to a control
+}
+void CMeterDlg::OnApplicationConnected(IvyApplication *app)
+{
+// TRACE( "Application: %s ready",(LPCSTR)(app->GetName()) );
+}
+void CMeterDlg::OnApplicationDisconnected(IvyApplication *app)
+{
+// TRACE( "Application: %s bye",(LPCSTR)(app->GetName()) );
+}
+void CMeterDlg::OnOK()
+{
+ VERIFY(this->UpdateData(TRUE));
+ m_busnumber = bus->GetDomain( CONVSTR(m_busnumber) );
+ if ( m_busnumber.FindOneOf(":") )
+ {
+ bus->stop();
+ bus->start(CONVSTR(m_busnumber));
+ }
+ VERIFY(this->UpdateData(FALSE));
+
+ // Do not close on return key
+ return;
+
+ // CDialog::OnOK(); // This will close the dialog and DoModal will return.
+}
+
+
+void CMeterDlg::OnDestroy()
+{
+ bus->stop();
+ delete bus;
+ CDialog::OnDestroy();
+}
+
+void CMeterDlg::OnSysCommand(UINT nID, LPARAM lParam)
+{
+ if ((nID & 0xFFF0) == IDM_ABOUTBOX)
+ {
+ CAboutDlg dlgAbout;
+ dlgAbout.DoModal();
+ }
+ else
+ {
+ CDialog::OnSysCommand(nID, lParam);
+ }
+}
+
+// If you add a minimize button to your dialog, you will need the code below
+// to draw the icon. For MFC applications using the document/view model,
+// this is automatically done for you by the framework.
+
+void CMeterDlg::OnPaint()
+{
+ if (IsIconic())
+ {
+ CPaintDC dc(this); // device context for painting
+
+ SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
+
+ // Center icon in client rectangle
+ int cxIcon = GetSystemMetrics(SM_CXICON);
+ int cyIcon = GetSystemMetrics(SM_CYICON);
+ CRect rect;
+ GetClientRect(&rect);
+ int x = (rect.Width() - cxIcon + 1) / 2;
+ int y = (rect.Height() - cyIcon + 1) / 2;
+
+ // Draw the icon
+ dc.DrawIcon(x, y, m_hIcon);
+ }
+ else
+ {
+ CDialog::OnPaint();
+ }
+}
+
+// The system calls this to obtain the cursor to display while the user drags
+// the minimized window.
+HCURSOR CMeterDlg::OnQueryDragIcon()
+{
+ return (HCURSOR) m_hIcon;
+}
+
+
+/*
+* Callback function when WAVE input buffer is full
+*/
+void CALLBACK CMeterDlg::recordCallBack(HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
+{
+ CMeterDlg* ctrl = (CMeterDlg*) dwInstance;
+ ctrl->recordCB( hWaveIn, uMsg, dwInstance, dwParam1, dwParam2 );
+}
+void CALLBACK CMeterDlg::recordCB(HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2)
+{
+ WAVEHDR *waveHeader = (WAVEHDR*)dwParam1;
+ float lVal =0;
+ switch ( uMsg )
+ {
+ case WIM_OPEN:
+ TRACE("WIM_OPEN\n");
+ break;
+ case WIM_DATA:
+ for ( DWORD i = 0; i < waveHeader->dwBytesRecorded; i++ )
+ {
+ //TRACE("WIM_DATA[%d]= %02x\n",i,waveHeader->lpData[i]);
+ lVal += abs( (float)( unsigned char )waveHeader->lpData[i] - 127.0f) ;
+ }
+ lVal /= waveHeader->dwBytesRecorded ;
+ lVal *= 2;
+ TRACE("WIM_DATA %d %d %f\n",waveHeader->dwBufferLength,waveHeader->dwBytesRecorded,lVal);
+ nb_buffers++;
+ peekValue = max( peekValue, lVal );
+ // moyenne sur 1 seconde
+ if ( nb_buffers*BUFSIZE > 8000 )
+ {
+ nb_buffers = 0;
+ peekValue = lVal;
+ }
+ m_ctrlPeekValue.SetPos( peekValue );
+ m_ctrlProgress.SetPos(lVal);
+ if ( lVal > m_seuil || lastValue > m_seuil )
+ {
+ lastValue = lVal;
+ if ( lVal < m_seuil ) peekValue = lVal = 0.0;
+ bus->SendMsg("AudioMonitor Change value=%.2f peak=%.2f",lVal,peekValue);
+ }
+ if (waveInUnprepareHeader(hWaveIn, &WaveHeader,sizeof(WAVEHDR)))
+ {
+ //cerr << "WAVE unprepare input buffer error\n";
+ //exit(1);
+ }
+ WaveHeader.dwFlags = 0;
+
+ if (waveInPrepareHeader(hWaveIn, &WaveHeader,sizeof(WAVEHDR)))
+ {
+ }
+ if (waveInAddBuffer(hWaveIn, &WaveHeader,sizeof(WAVEHDR)))
+ {
+ }
+ break;
+ case WIM_CLOSE:
+ TRACE("WIM_CLOSE\n");
+ break;
+ }
+}
+void CMeterDlg::openWaveDev()
+{
+ MMRESULT Rc;
+ WAVEFORMATEX PCMWaveFmtRecord;
+
+ PCMWaveFmtRecord.wFormatTag = WAVE_FORMAT_PCM;
+ PCMWaveFmtRecord.nChannels = 1;
+ PCMWaveFmtRecord.nSamplesPerSec = 8000;
+ PCMWaveFmtRecord.wBitsPerSample = 8;
+ PCMWaveFmtRecord.nAvgBytesPerSec = PCMWaveFmtRecord.nSamplesPerSec
+ * PCMWaveFmtRecord.wBitsPerSample / 8;
+ PCMWaveFmtRecord.nBlockAlign = PCMWaveFmtRecord.nChannels *
+ PCMWaveFmtRecord.wBitsPerSample / 8;
+
+ Rc = waveInOpen(&hWaveIn, WAVE_MAPPER, &PCMWaveFmtRecord, (DWORD_PTR)CMeterDlg::recordCallBack, (DWORD_PTR)this, CALLBACK_FUNCTION);
+ if (Rc)
+ {
+ }
+ WaveHeader.dwBufferLength = BUFSIZE;
+ WaveHeader.lpData = (LPSTR) (inbuf);
+ WaveHeader.dwFlags = WaveHeader.reserved = 0;
+ WaveHeader.dwLoops = 0;
+ WaveHeader.lpNext = 0;
+ Rc = waveInPrepareHeader(hWaveIn, &WaveHeader,
+ sizeof(WAVEHDR));
+ if (Rc)
+ {
+ waveInClose(hWaveIn);
+ }
+ Rc = waveInAddBuffer(hWaveIn, &WaveHeader,
+ sizeof(WAVEHDR));
+ if (Rc)
+ {
+ waveInClose(hWaveIn);
+ }
+
+
+ ResetEvent(recordDone);
+
+ if (Rc = waveInStart(hWaveIn))
+ {
+ waveInClose(hWaveIn);
+ }
+}
+
diff --git a/IvyAudioMon/MeterDlg.h b/IvyAudioMon/MeterDlg.h
new file mode 100644
index 0000000..dcd007d
--- /dev/null
+++ b/IvyAudioMon/MeterDlg.h
@@ -0,0 +1,80 @@
+// MeterDlg.h : header file
+//
+
+#include "afxcmn.h"
+#if !defined(AFX_METERDLG_H__3A48D837_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
+#define AFX_METERDLG_H__3A48D837_F4B7_11D1_9F80_006008984DF6__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+#include "Ivy.h"
+
+#define BUFSIZE 800 // size of audio in buffer
+
+/////////////////////////////////////////////////////////////////////////////
+// CMeterDlg dialog
+
+class CMeterDlg : public CDialog, public IvyApplicationCallback
+{
+// Construction
+public:
+ CMeterDlg(CWnd* pParent = NULL); // standard constructor
+
+// Dialog Data
+ //{{AFX_DATA(CMeterDlg)
+ enum { IDD = IDD_METER_DIALOG };
+ CProgressCtrl m_ctrlProgress;
+ CProgressCtrl m_ctrlPeekValue;
+ //}}AFX_DATA
+
+ // ClassWizard generated virtual function overrides
+ //{{AFX_VIRTUAL(CMeterDlg)
+ protected:
+ virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
+ //}}AFX_VIRTUAL
+
+// Implementation
+protected:
+ HICON m_hIcon;
+
+ // Generated message map functions
+ //{{AFX_MSG(CMeterDlg)
+ virtual BOOL OnInitDialog();
+ afx_msg void OnDestroy();
+ afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
+ afx_msg void OnPaint();
+ afx_msg HCURSOR OnQueryDragIcon();
+ virtual void OnOK( );
+
+ //}}AFX_MSG
+ DECLARE_MESSAGE_MAP()
+
+private:
+
+
+ void openWaveDev();
+ static void CALLBACK recordCallBack(HWAVEIN hWaveIn, UINT uMsg, DWORD p1, DWORD p2, DWORD p3);
+ void CALLBACK recordCB(HWAVEIN hWaveIn, UINT uMsg, DWORD p1, DWORD p2, DWORD p3);
+ HANDLE recordDone; // event of audio input completion
+ HWAVEIN hWaveIn; // onput WAVE audio device handle
+ char inbuf[BUFSIZE]; // WAVE input data buffer area
+ WAVEHDR WaveHeader;
+ long nb_buffers;
+ float peekValue;
+ float lastValue;
+ float m_seuil;
+
+ Ivy *bus;
+ void WriteMessage(const char * format, ...);
+ void OnApplicationConnected( IvyApplication *app );
+ void OnApplicationDisconnected( IvyApplication *app );
+ void OnDirectMessage( IvyApplication *app, int id, const char *arg );
+ void SendIvyFile( const CString & strFileName );
+ CString m_busnumber;
+};
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_METERDLG_H__3A48D837_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
diff --git a/IvyAudioMon/ParseCmdLine.cpp b/IvyAudioMon/ParseCmdLine.cpp
new file mode 100644
index 0000000..59a27ce
--- /dev/null
+++ b/IvyAudioMon/ParseCmdLine.cpp
@@ -0,0 +1,76 @@
+// ParseCmdLine.cpp: implementation of the ParseCmdLine class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#include "stdafx.h"
+
+#include "ParseCmdLine.h"
+
+#ifdef _DEBUG
+#undef THIS_FILE
+static char THIS_FILE[]=__FILE__;
+#define new DEBUG_NEW
+#endif
+
+//////////////////////////////////////////////////////////////////////
+// Construction/Destruction
+//////////////////////////////////////////////////////////////////////
+
+ParseCmdLine::ParseCmdLine()
+{
+ m_start = TRUE;
+ m_busNumber = "";
+ m_prefix = "IvyAudioMon ";
+ m_seuil = 15.0;
+ m_extent = "*.txt";
+}
+
+ParseCmdLine::~ParseCmdLine()
+{
+
+}
+
+void ParseCmdLine::ParseParam(LPCTSTR lpszParam, BOOL bFlag, BOOL bLast)
+{
+ if (bFlag)
+ {
+ ParseParamFlag(lpszParam);
+ }
+ else
+ ParseParamNotFlag(lpszParam);
+
+}
+
+void ParseCmdLine::ParseParamFlag(LPCTSTR pszParam)
+{
+
+ if (lstrcmpi(pszParam, TEXT("start")) == 0)
+ m_start = TRUE;
+ else if (lstrcmpi(pszParam, TEXT("bus")) == 0)
+ m_shellCommand = BusNumber;
+ else if (lstrcmpi(pszParam, TEXT("seuil")) == 0)
+ m_shellCommand = Seuil;
+ else if (lstrcmpi(pszParam, TEXT("prefix")) == 0)
+ m_shellCommand = Prefix;
+ else if (lstrcmpi(pszParam, TEXT("extent")) == 0)
+ m_shellCommand = Extent;
+}
+
+void ParseCmdLine::ParseParamNotFlag(LPCTSTR pszParam)
+{
+ switch ( m_shellCommand )
+ {
+ case BusNumber:
+ m_busNumber = pszParam;
+ break;
+ case Seuil:
+ m_seuil = atof(pszParam);
+ break;
+ case Prefix:
+ m_prefix = pszParam;
+ break;
+ case Extent:
+ m_extent = pszParam;
+ break;
+ }
+}
diff --git a/IvyAudioMon/ParseCmdLine.h b/IvyAudioMon/ParseCmdLine.h
new file mode 100644
index 0000000..281491e
--- /dev/null
+++ b/IvyAudioMon/ParseCmdLine.h
@@ -0,0 +1,37 @@
+// TestParseCmdLine.h: interface for the TestParseCmdLine class.
+//
+//////////////////////////////////////////////////////////////////////
+
+#if !defined(AFX_FXParseCMDLINE_H__20232B92_AB99_11D2_898F_00A0245B298A__INCLUDED_)
+#define AFX_FXParseCMDLINE_H__20232B92_AB99_11D2_898F_00A0245B298A__INCLUDED_
+
+#if _MSC_VER > 1000
+#pragma once
+#endif // _MSC_VER > 1000
+
+class ParseCmdLine : public CCommandLineInfo
+{
+public:
+
+ BOOL m_start;
+ CString m_busNumber;
+ float m_seuil;
+ CString m_extent;
+ CString m_prefix;
+ virtual void ParseParam( LPCTSTR lpszParam, BOOL bFlag, BOOL bLast );
+ ParseCmdLine();
+ virtual ~ParseCmdLine();
+ enum {
+ BusNumber,
+ Start,
+ Seuil,
+ Extent,
+ Prefix
+ }m_shellCommand;
+
+protected:
+ void ParseParamNotFlag(LPCTSTR pszParam);
+ void ParseParamFlag(LPCTSTR pszParam);
+};
+
+#endif // !defined(AFX_FXParseCMDLINE_H__20232B92_AB99_11D2_898F_00A0245B298A__INCLUDED_)
diff --git a/IvyAudioMon/StdAfx.cpp b/IvyAudioMon/StdAfx.cpp
new file mode 100644
index 0000000..c6c47aa
--- /dev/null
+++ b/IvyAudioMon/StdAfx.cpp
@@ -0,0 +1,6 @@
+// stdafx.cpp : source file that includes just the standard includes
+// Meter.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
diff --git a/IvyAudioMon/StdAfx.h b/IvyAudioMon/StdAfx.h
new file mode 100644
index 0000000..dbe11c7
--- /dev/null
+++ b/IvyAudioMon/StdAfx.h
@@ -0,0 +1,28 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently, but
+// are changed infrequently
+//
+
+#if !defined(AFX_STDAFX_H__3A48D839_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
+#define AFX_STDAFX_H__3A48D839_F4B7_11D1_9F80_006008984DF6__INCLUDED_
+
+#if _MSC_VER >= 1000
+#pragma once
+#endif // _MSC_VER >= 1000
+
+#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
+
+#include <afxwin.h> // MFC core and standard components
+#include <afxext.h> // MFC extensions
+#ifndef _AFX_NO_AFXCMN_SUPPORT
+#include <afxcmn.h> // MFC support for Windows Common Controls
+#endif // _AFX_NO_AFXCMN_SUPPORT
+
+
+#include <mmsystem.h>
+
+
+//{{AFX_INSERT_LOCATION}}
+// Microsoft Developer Studio will insert additional declarations immediately before the previous line.
+
+#endif // !defined(AFX_STDAFX_H__3A48D839_F4B7_11D1_9F80_006008984DF6__INCLUDED_)
diff --git a/IvyAudioMon/res/Meter.ico b/IvyAudioMon/res/Meter.ico
new file mode 100644
index 0000000..44e26f0
--- /dev/null
+++ b/IvyAudioMon/res/Meter.ico
Binary files differ
diff --git a/IvyAudioMon/res/Meter.rc2 b/IvyAudioMon/res/Meter.rc2
new file mode 100644
index 0000000..357866f
--- /dev/null
+++ b/IvyAudioMon/res/Meter.rc2
@@ -0,0 +1,13 @@
+//
+// METER.RC2 - resources Microsoft Visual C++ does not edit directly
+//
+
+#ifdef APSTUDIO_INVOKED
+ #error this file is not editable by Microsoft Visual C++
+#endif //APSTUDIO_INVOKED
+
+
+/////////////////////////////////////////////////////////////////////////////
+// Add manually edited resources here...
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/IvyAudioMon/resource.h b/IvyAudioMon/resource.h
new file mode 100644
index 0000000..4039cb3
--- /dev/null
+++ b/IvyAudioMon/resource.h
@@ -0,0 +1,30 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by Meter.rc
+//
+#define IDM_ABOUTBOX 0x0010
+#define IDD_ABOUTBOX 100
+#define IDS_ABOUTBOX 101
+#define IDD_METER_DIALOG 102
+#define IDS_FMTNUMMIXERS 102
+#define IDS_FMTCAPS 103
+#define IDS_FMTNAMES 104
+#define IDS_NOCONTROL 105
+#define IDR_MAINFRAME 128
+#define IDC_PROGRESS 1000
+#define IDC_EDIT1 1001
+#define IDC_PEEK 1001
+#define IDC_EDIT2 1002
+#define IDC_BUS 1002
+#define IDC_EDIT3 1003
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NEXT_RESOURCE_VALUE 129
+#define _APS_NEXT_COMMAND_VALUE 32771
+#define _APS_NEXT_CONTROL_VALUE 1005
+#define _APS_NEXT_SYMED_VALUE 101
+#endif
+#endif