STRUCT SND_FIREWIRE_MOTU_REGISTER_DSP_PARAMETER(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’– struct snd_firewire_motu_register_dsp_parameter(9) πŸ’–

okay so bestie, welcome to the Kernel API Manual β€” yes, THE kernel API manual, we're in the big leagues now πŸŽ€ and today's main character is struct snd_firewire_motu_register_dsp_parameter, no cap.


✨ NAME ✨

struct snd_firewire_motu_register_dsp_parameter β€” the container for parameters of DSP controlled by register access. that's it, that's the whole vibe. it holds stuff. it's a container. slay πŸ’…


🌸 SYNOPSIS 🌸

here's the whole shape of it, copied exactly because we do NOT mess with source code:

struct snd_firewire_motu_register_dsp_parameter {
    struct {
      struct {
        __u8 gain[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
        __u8 pan[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
        __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
        __u8
paired_balance[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
        __u8
paired_width[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_SRC_COUNT];
      } source[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
      struct {
        __u8
paired_volume[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
        __u8 paired_flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_MIXER_COUNT];
      } output;
    } mixer;
    struct {
      __u8 main_paired_volume;
      __u8 hp_paired_volume;
      __u8 hp_paired_assignment;
      __u8 reserved[5];
    } output;
    struct {
      __u8 boost_flag;
      __u8 nominal_level_flag;
      __u8 reserved[6];
    } line_input;
    struct {
      __u8
gain_and_invert[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
      __u8 flag[SNDRV_FIREWIRE_MOTU_REGISTER_DSP_ALIGNED_INPUT_COUNT];
    } input;
    __u8 reserved[64];
};

she's nested, she's dense, she's iconic πŸ‘‘


πŸ¦‹ Members πŸ¦‹

time for the member-by-member vibe check, let's go:

  • mixer β€” the aggregate of mixer.source and mixer.output. the whole mixer situation in one lil bundle 🫢
  • mixer.source.gain β€” The gain of source to mixer.
  • mixer.source.pan β€” The L/R balance of source to mixer.
  • mixer.source.flag β€” The flag of source to mixer, including mute, solo. (mute AND solo, she contains multitudes)
  • mixer.source.paired_balance β€” The L/R balance of paired source to mixer, only for 4 pre and Audio Express.
  • mixer.source.paired_width β€” The width of paired source to mixer, only for 4 pre and Audio Express.
  • mixer.output β€” FIXME. literally just FIXME, that's the whole description. the docs said "we'll get to it" and never got to it 😭 honestly relatable, but also, bestie, please
  • mixer.output.paired_volume β€” The volume of paired output from mixer.
  • mixer.output.paired_flag β€” The flag of paired output from mixer.
  • output β€” output parameters. short and sweet πŸ’œ
  • output.main_paired_volume β€” The volume of paired main output.
  • output.hp_paired_volume β€” The volume of paired hp output.
  • output.hp_paired_assignment β€” The source assigned to paired hp output.
  • output.reserved β€” Padding for 32-bit alignment for future extension. (future-proofing queen 🌈)
  • line_input β€” line input parameters ✨
  • line_input.boost_flag β€” The flags of boost for line inputs, only for 828mk2 and Traveler.
  • line_input.nominal_level_flag β€” The flags of nominal level for line inputs, only for 828mk2 and Traveler.
  • line_input.reserved β€” Padding for 32-bit alignment for future extension.
  • input β€” input parameters 🌸
  • input.gain_and_invert β€” The value including gain and invert for input, only for Ultralite, 4 pre and Audio Express.
  • input.flag β€” The flag of input; e.g. jack detection, phantom power, and pad, only for Ultralite, 4 pre and Audio express.
  • reserved β€” Padding so that the size of structure is kept to 512 bytes, but for future extension. five hundred and twelve bytes, bestie, that's not a drill πŸ’€

πŸŽ€ Description πŸŽ€

so what does this thing do? The structure expresses the set of parameters for DSP controlled by register access. that's the tea β˜• β€” DSP params, controlled by register access, all bundled into one struct. no cap.


⭐ SEE ALSO ⭐

go read these next, iykyk:

  • Kernel file ./include/uapi/sound/firewire.h struct snd_firewire_event_ff400_message(9), struct snd_firewire_motu_register_dsp_meter(9), struct snd_firewire_motu_command_dsp_meter(9)

ok real talk for one sec: those reserved fields are padding for future extension, so don't go filling them with your own little experiments, bestie πŸ™ˆ they're reserved for a reason.

and that's the page!! 🧚 source: ./include/uapi/sound, dated October 2026 β€” mwah, kisses, go write some firewire DSP code, you absolute legend πŸ‘‘πŸ”₯πŸ’–

πŸ“¦ where this page comes from