Skip to content

Commit

Permalink
Change cpu calculation to AudioProcessLoadMeasurer Class
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelwitte committed Apr 26, 2024
1 parent e75ec0f commit 712df3b
Show file tree
Hide file tree
Showing 6 changed files with 39 additions and 23 deletions.
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,7 @@ target_link_libraries(${TARGET_NAME}
juce::juce_graphics
juce::juce_gui_basics
juce::juce_gui_extra
juce::juce_audio_basics
onnxruntime

PUBLIC
Expand Down
10 changes: 6 additions & 4 deletions source/PluginProcessor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ AudioPluginAudioProcessor::AudioPluginAudioProcessor()
grainDelay1(1),
grainDelay2(2),
processorCompressor(parameters)
{
{
// resets the state


network1Name = "Funk";
network2Name = "Djembe";
Expand Down Expand Up @@ -169,6 +171,7 @@ void AudioPluginAudioProcessor::prepareToPlay (double sampleRate, int samplesPer
void AudioPluginAudioProcessor::releaseResources() {
// When playback stops, you can use this as an opportunity to free up any
// spare memory, etc.
measurer.reset();
}

bool AudioPluginAudioProcessor::isBusesLayoutSupported (const BusesLayout& layouts) const {
Expand All @@ -195,9 +198,8 @@ bool AudioPluginAudioProcessor::isBusesLayoutSupported (const BusesLayout& layou

void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer,
juce::MidiBuffer& ) {
juce::AudioProcessLoadMeasurer::ScopedTimer s(measurer);
juce::AudioProcessLoadMeasurer::ScopedTimer s(measurer, buffer.getNumSamples());
{

dryWetMixer.setDrySamples(buffer);
stereoToMono(monoBuffer, buffer);

Expand Down Expand Up @@ -249,7 +251,7 @@ void AudioPluginAudioProcessor::processBlock (juce::AudioBuffer<float>& buffer,
}
cpuLoad = measurer.getLoadAsPercentage();

// std::cout << "CPU: " << (int)(cpuLoad) << " %\n";
std::cout << "CPU: " << (int)(cpuLoad) << " %\n";
// std::cout << "latency: " << (latency*1000) << " ms\n";
}

Expand Down
3 changes: 3 additions & 0 deletions source/PluginProcessor.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "dsp/gain/ProcessorGain.h"
#include "dsp/Filter/IIRCutoffFilter.h"
#include "dsp/grainDelay/GrainDelay.h"
//#include <audio_basics/buffers/juce_AudioProcessLoadMeasurer.h>


//==============================================================================
Expand Down Expand Up @@ -123,6 +124,8 @@

float latency;



//==============================================================================
JUCE_HEAVYWEIGHT_LEAK_DETECTOR (AudioPluginAudioProcessor)
};
2 changes: 1 addition & 1 deletion source/ui/CustomComponents/Footer/FooterComponent.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ void FooterComponent::updateSpecs(){
latencySeconds = (float)latencySamples / float(sampleRate);

//processorUse = processor.getCpuLoad();
processorUse = systemSpecs.getCPULoad();
processorUse = processor.getCpuLoad();

std::string cpuString = "CPU: " + std::to_string((int)processorUse ) + " %";
cpuLabel.setText(cpuString, juce::dontSendNotification);
Expand Down
43 changes: 25 additions & 18 deletions source/utils/SystemSpecs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -104,35 +104,42 @@
}

#elif JUCE_MAC

#include <mach/mach_init.h>
#include <mach/mach_error.h>
#include <mach/mach_host.h>
#include <mach/vm_map.h>

SystemSpecs::SystemSpecs() {
}

SystemSpecs::~SystemSpecs() {}


static unsigned long long _previousTotalTicks = 0;
static unsigned long long _previousIdleTicks = 0;

double SystemSpecs::getCPULoad() {
// host_cpu_load_info_data_t cpuinfo;
// mach_msg_type_number_t count = HOST_CPU_LOAD_INFO_COUNT;
// if (host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&cpuinfo, &count) == KERN_SUCCESS)
// {
// unsigned long long totalTicks = 0;
// for(int i=0; i<CPU_STATE_MAX; i++) totalTicks += cpuinfo.cpu_ticks[i];
// return calculateCPULoad(cpuinfo.cpu_ticks[CPU_STATE_IDLE], totalTicks);
// }
// else return -1.0f;
return 0.0;
host_cpu_load_info_data_t cpuinfo;
mach_msg_type_number_t count = HOST_CPU_LOAD_INFO_COUNT;
if (host_statistics(mach_host_self(), HOST_CPU_LOAD_INFO, (host_info_t)&cpuinfo, &count) == KERN_SUCCESS)
{
unsigned long long totalTicks = 0;
for(int i=0; i<CPU_STATE_MAX; i++) totalTicks += cpuinfo.cpu_ticks[i];
return calculateCPULoad(cpuinfo.cpu_ticks[CPU_STATE_IDLE], totalTicks);
}
else return -1.0f;
// return 0.0;
}

double SystemSpecs::calculateCPULoad() {
// unsigned long long totalTicksSinceLastTime = totalTicks-_previousTotalTicks;
// unsigned long long idleTicksSinceLastTime = idleTicks-_previousIdleTicks;
// float ret = 1.0f-((totalTicksSinceLastTime > 0) ? ((float)idleTicksSinceLastTime)/totalTicksSinceLastTime : 0);
// _previousTotalTicks = totalTicks;
// _previousIdleTicks = idleTicks;
// return ret;
return 0.0;
double SystemSpecs::calculateCPULoad(unsigned long long idleTicks, unsigned long long totalTicks) {
unsigned long long totalTicksSinceLastTime = totalTicks-_previousTotalTicks;
unsigned long long idleTicksSinceLastTime = idleTicks-_previousIdleTicks;
double ret = 1.0f*100-((totalTicksSinceLastTime > 0) ? ((double)(idleTicksSinceLastTime/totalTicksSinceLastTime)) : 0);
_previousTotalTicks = totalTicks;
_previousIdleTicks = idleTicks;
return ret;
// return 0.0;
}
#endif

Expand Down
3 changes: 3 additions & 0 deletions source/utils/SystemSpecs.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,10 @@ class SystemSpecs {
~SystemSpecs();

double getCPULoad();

double calculateCPULoad();
// Mac
double calculateCPULoad(unsigned long long idleTicks, unsigned long long totalTicks);
private:
juce::SystemStats::OperatingSystemType os;
};
Expand Down

0 comments on commit 712df3b

Please sign in to comment.