{"id":13729928,"url":"https://github.com/SoundDevelopment/sound_meter","last_synced_at":"2025-05-08T02:30:52.612Z","repository":{"id":110978789,"uuid":"386042303","full_name":"SoundDevelopment/sound_meter","owner":"SoundDevelopment","description":"Fully resizing juce peak meter module with optional fader overlay.","archived":false,"fork":false,"pushed_at":"2025-04-01T22:42:30.000Z","size":339,"stargazers_count":29,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T23:29:55.828Z","etag":null,"topics":["analyzer","audio","dsp","juce","sound","vst"],"latest_commit_sha":null,"homepage":"https://www.sounddevelopment.nl/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SoundDevelopment.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-14T18:41:18.000Z","updated_at":"2025-01-05T06:11:33.000Z","dependencies_parsed_at":"2023-12-23T16:43:03.990Z","dependency_job_id":"5ff5cf6c-07c5-4bc9-8f19-371c74a8c7bb","html_url":"https://github.com/SoundDevelopment/sound_meter","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoundDevelopment%2Fsound_meter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoundDevelopment%2Fsound_meter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoundDevelopment%2Fsound_meter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SoundDevelopment%2Fsound_meter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SoundDevelopment","download_url":"https://codeload.github.com/SoundDevelopment/sound_meter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252986621,"owners_count":21836196,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["analyzer","audio","dsp","juce","sound","vst"],"created_at":"2024-08-03T02:01:07.638Z","updated_at":"2025-05-08T02:30:52.600Z","avatar_url":"https://github.com/SoundDevelopment.png","language":"C++","funding_links":[],"categories":["Metering"],"sub_categories":[],"readme":"# Sound Meter\n\u003csup\u003e*by Marcel Huibers | [Sound Development](https://www.sounddevelopment.nl) 2025 | Published under the [MIT License](https://en.wikipedia.org/wiki/MIT_License)*\u003c/sup\u003e\n\u003cimg align=\"right\" src=\"https://www.sounddevelopment.nl/sd/resources/images/sound_meter/sound_meter_demo_25.gif\"\u003e\n\u003cbr\u003e\u003cbr\u003e**Peak meter JUCE module with optional fader overlay.\u003cbr\u003e\u003cbr\u003e**\nUsed in the Lobith Audio's waveform audio player [PlayerSpecz](https://www.lobith-audio.com/playerspecz/).\u003cbr\u003e\nCompatible with JUCE 8. For older JUCE version go check out the [JUCE7 branch](https://github.com/SoundDevelopment/sound_meter/tree/juce7).\n\n### Features:\n- Fully **resize-able**.\n- **Adaptive**. Will show header, value, tick-marks only when there is space available.\n- Unlimited number of user defineable **segments**, with custom ranges and configurable colours or gradients.\n- **Efficient**. Only redraws when needed.\n- Configurable meter **ballistics** (meter decay).\n- **Tick-marks** (dividing lines on the meter) at user specified levels.\n- Peak hold **indicator** and optional peak **value** readout.\n- Optional **label strip** next to the meters (which can double as master fader).\n- Optional **header** identifying the meter's name (set by user) or channel type.\n- Optional **fader** and mute button (in the header).\n\n### **New: Meter Presets!**\n- Default (-60 dB - 0 dB)\n- SMPTE PPM  (-44 dB - 0 dB)\n- EBU PPM (-30 dB - -10 dB)\n- Yamaha 60 Mizer (-60 dB - 0 dB)\n- Bob Katz K metering (K20, K14, K12)\n- Extended Bottom (-96 dB - 0 dB)\n- Extended Top (-50 dB - +20 dB)\n- Full Range (-96 dB - +100 dB)\n\nYou can find the API documentation [here](https://www.sounddevelopment.nl/sd/resources/documentation/sound_meter/)...\n\u003cbr\u003e\nAn example project, demonstrating sound_meter can be found [here](https://github.com/SoundDevelopment/sound_meter-example)...\n\n# Usage\n\nAll classes are in the namespace `sd::SoundMeter` to avoid collisions. You can either prefix each symbol, or import the namespace. \n\n### MetersComponent\n\nThe [MetersComponent](https://www.sounddevelopment.nl/sd/resources/documentation/sound_meter/classsd_1_1SoundMeter_1_1MetersComponent.html) class creates and controls the meters. \nThis would live in your **editor.h**. \n```cpp\nprivate:\n   sd::SoundMeter::MetersComponent  m_meters;\n```\n\u003cbr\u003e\n\nIn the **constructor** you can specify a channel format with [setChannelFormat](https://www.sounddevelopment.nl/sd/resources/documentation/sound_meter/classsd_1_1SoundMeter_1_1MetersComponent.html#aea27fda8af5ec463436186e8fb3afd20) or set the nummer of channels with [setNumChannels](https://www.sounddevelopment.nl/sd/resources/documentation/sound_meter/classsd_1_1SoundMeter_1_1MetersComponent.html#a042d84e77a91f501c57377d461957e41):\n```cpp\nm_meters.setChannelFormat (juce::AudioChannelSet::stereo());\n```\nand configure it's options: (for all meter options, see [documentation](https://www.sounddevelopment.nl/sd/resources/documentation/sound_meter/structsd_1_1SoundMeter_1_1Options.html))\n```cpp\nsd::SoundMeter::Options meterOptions;\nmeterOptions.faderEnabled     = true;\nmeterOptions.headerEnabled    = true;\nmeterOptions.showTickMarks    = true;\nm_meters.setOptions (meterOptions);\n```\nand configure the segments:\n```cpp\nstd::vector\u003csd::SoundMeter::SegmentOptions\u003e segmentOptions = \n{ // From bottom of the meter (0.0f) to the half. Displaying -60 dB up to -18 dB.\n  { { -60.0f, -18.0f }, { 0.0f, 0.5f }, juce::Colours::green, juce::Colours::green }, \n  // From half of the meter to almost the top (0.9f). Displaying -18 dB up to -3 dB.\n  { { -18.0f, -3.0f }, { 0.5f, 0.90f }, juce::Colours::green, juce::Colours::yellow },\n  // From almost the top to the top of the meter (1.0f). Displaying -3 dB up to 0 dB.\n  { { -3.0f, 0.0f }, { 0.90f, 1.0f }, juce::Colours::yellow, juce::Colours::red } };    \nm_meters.setMeterSegments (segmentOptions);\n```\n\nFinally (still in the **constructor**) we add the component and make it visible:\n```cpp\naddAndMakeVisible (m_meters);\n```\n\nIn the `resized()` method, you set the bounds (left, right, width, height) of the meters:\n```cpp\nm_meters.setBounds (getLocalBounds());\n```\n\n### Getting the levels\n\nBasically everything is set up now.\u003cbr\u003e\nAll left to do now is to supply the meter with the level with the method:\n`setInputLevel (int channel, float value);`\n\nThe recommended way to get the levels from the audio processor is to let the editor poll the audio processor (with a timer for instance).\nPreferably it would poll atomic values in the audio processor for thread safety.\n\nA fully working example demonstrating this can be found [here](https://github.com/SoundDevelopment/sound_meter-example)...\n\n\u003cbr\u003e\u003cbr\u003e\n\n-----\n*Sound Development 2025*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSoundDevelopment%2Fsound_meter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FSoundDevelopment%2Fsound_meter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FSoundDevelopment%2Fsound_meter/lists"}