Module: Rocksky::Equalizer

Defined in:
lib/rocksky/equalizer.rb

Overview

app.rocksky.equalizer.* — saved EQ presets (app.rocksky.equalizer records in the caller's repo).

Units are rockbox's internal ones: band frequency in Hz, gain in tenths of dB (30 = +3.0 dB), q × 10 (7 = Q 0.7); precut in tenths of dB (-240..0).

Class Method Summary collapse

Class Method Details

.delete_preset(rkey, token:, base: nil) ⇒ Object

Delete a preset by rkey. Empty response.



34
35
36
# File 'lib/rocksky/equalizer.rb', line 34

def delete_preset(rkey, token:, base: nil)
  Rocksky.post("app.rocksky.equalizer.deletePreset", { rkey: rkey }, base: base, token: token)
end

.presets(actor: nil, token: nil, base: nil) ⇒ Object

An actor's presets ({ "presets" => [...] }). Omit actor for the authenticated viewer's own — that read is auth-gated, so pass token.



14
15
16
17
18
# File 'lib/rocksky/equalizer.rb', line 14

def presets(actor: nil, token: nil, base: nil)
  params = {}
  params[:did] = actor if actor
  Rocksky.get("app.rocksky.equalizer.listPresets", params, base: base, token: token)
end

.put_preset(name, bands, token:, precut: nil, base: nil) ⇒ Object

Create or update a preset; the rkey is name slugified, so an existing name overwrites that preset. bands is an array of { frequency:, gain:, q: } hashes. Returns the saved preset view.



23
24
25
26
27
28
29
30
31
# File 'lib/rocksky/equalizer.rb', line 23

def put_preset(name, bands, token:, precut: nil, base: nil)
  body = { name: name, bands: bands }
  body[:precut] = precut if precut
  # putPreset's input is a JSON body, so it rides the body-carrying native
  # call rather than the query-string Rocksky.post.
  Rocksky.unwrap(C.rocksky_library_post(base.to_s, token.to_s,
                                        "app.rocksky.equalizer.putPreset",
                                        JSON.generate(body)))
end