summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkleines Filmröllchen <filmroellchen@serenityos.org>2022-05-11 21:59:49 +0200
committerLinus Groh <mail@linusgroh.de>2022-05-13 00:47:26 +0200
commitf23aea0c4b049c7b2ffab442175dfbd2ea7b54e8 (patch)
tree25fe34e7595e30c29e9981aca59d7c52c24e7c7b
parentbcb331b8620509aca8894e6bc033fbfcb777eec0 (diff)
downloadserenity-f23aea0c4b049c7b2ffab442175dfbd2ea7b54e8.zip
LibDSP: Make the note frequencies an AK::Array instead of a C array
This was a leftover from the early days of Piano, and there's no reason to leave it that way especially if we want to use more complex collection APIs in the future.
-rw-r--r--Userland/Libraries/LibDSP/Clip.cpp2
-rw-r--r--Userland/Libraries/LibDSP/Clip.h4
-rw-r--r--Userland/Libraries/LibDSP/Music.h3
-rw-r--r--Userland/Libraries/LibDSP/Synthesizers.cpp2
-rw-r--r--Userland/Libraries/LibDSP/Synthesizers.h2
5 files changed, 6 insertions, 7 deletions
diff --git a/Userland/Libraries/LibDSP/Clip.cpp b/Userland/Libraries/LibDSP/Clip.cpp
index ebd8588956..8b672a764c 100644
--- a/Userland/Libraries/LibDSP/Clip.cpp
+++ b/Userland/Libraries/LibDSP/Clip.cpp
@@ -16,7 +16,7 @@ Sample AudioClip::sample_at(u32 time)
void NoteClip::set_note(RollNote note)
{
- VERIFY(note.pitch >= 0 && note.pitch < note_count);
+ VERIFY(note.pitch >= 0 && note.pitch < note_frequencies.size());
VERIFY(note.off_sample < m_length);
VERIFY(note.length() >= 2);
diff --git a/Userland/Libraries/LibDSP/Clip.h b/Userland/Libraries/LibDSP/Clip.h
index 9e950d22f9..818a18d15b 100644
--- a/Userland/Libraries/LibDSP/Clip.h
+++ b/Userland/Libraries/LibDSP/Clip.h
@@ -47,10 +47,10 @@ class NoteClip final : public Clip {
public:
void set_note(RollNote note);
- Array<SinglyLinkedList<RollNote>, note_count> const& notes() const { return m_notes; }
+ Array<SinglyLinkedList<RollNote>, note_frequencies.size()> const& notes() const { return m_notes; }
private:
- Array<SinglyLinkedList<RollNote>, note_count> m_notes;
+ Array<SinglyLinkedList<RollNote>, note_frequencies.size()> m_notes;
};
}
diff --git a/Userland/Libraries/LibDSP/Music.h b/Userland/Libraries/LibDSP/Music.h
index 501f364472..d4b90ca93e 100644
--- a/Userland/Libraries/LibDSP/Music.h
+++ b/Userland/Libraries/LibDSP/Music.h
@@ -84,7 +84,7 @@ struct Signal : public Variant<Sample, RollNotes> {
// We calculate note frequencies relative to A4:
// 440.0 * pow(pow(2.0, 1.0 / 12.0), N)
// Where N is the note distance from A.
-constexpr double note_frequencies[] = {
+constexpr Array<double, 84> note_frequencies = {
// Octave 1
32.703195662574764,
34.647828872108946,
@@ -177,7 +177,6 @@ constexpr double note_frequencies[] = {
3729.3100921447249,
3951.0664100489994,
};
-constexpr size_t const note_count = array_size(note_frequencies);
constexpr double const middle_c = note_frequencies[36];
diff --git a/Userland/Libraries/LibDSP/Synthesizers.cpp b/Userland/Libraries/LibDSP/Synthesizers.cpp
index 8b583adf3d..5cab654a2c 100644
--- a/Userland/Libraries/LibDSP/Synthesizers.cpp
+++ b/Userland/Libraries/LibDSP/Synthesizers.cpp
@@ -41,7 +41,7 @@ Signal Classic::process_impl(Signal const& input_signal)
// "Press" the necessary notes in the internal representation,
// and "release" all of the others
- for (u8 i = 0; i < note_count; ++i) {
+ for (u8 i = 0; i < note_frequencies.size(); ++i) {
if (auto maybe_note = in.get(i); maybe_note.has_value())
m_playing_notes.set(i, maybe_note.value());
diff --git a/Userland/Libraries/LibDSP/Synthesizers.h b/Userland/Libraries/LibDSP/Synthesizers.h
index 01654d99cb..ee74c4cf9b 100644
--- a/Userland/Libraries/LibDSP/Synthesizers.h
+++ b/Userland/Libraries/LibDSP/Synthesizers.h
@@ -66,7 +66,7 @@ private:
ProcessorRangeParameter m_release;
RollNotes m_playing_notes;
- Array<double, note_count> last_random;
+ Array<double, note_frequencies.size()> last_random;
};
}