Skip to content

Conversation

@FloppyDisk-OSC
Copy link
Contributor

Adds channel reporters, notes on channel array reporter, note to name reporter, and fixes a bug involving note reporter keeping the note value after the note was released

@vercel
Copy link

vercel bot commented Feb 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
penguinmod-extensions-gallery Ready Ready Preview Feb 3, 2026 8:50pm

@FloppyDisk-OSC
Copy link
Contributor Author

plz

@the-can-of-soup
Copy link

bump ig
please merge for @FloppyDisk-OSC's sake

@the-can-of-soup
Copy link

or give me merge perms

@FloppyDisk-OSC
Copy link
Contributor Author

:3

@JeremyGamer13 JeremyGamer13 added the extension update This updates an already existing extension label Feb 6, 2026
@FloppyDisk-OSC
Copy link
Contributor Author

MERGE PLEASEEEEEEEE

@FloppyDisk-OSC
Copy link
Contributor Author

PLEASE PENGUINMOD I NEED THIS
MY EXTENSION IS KINDA UPDATELESS

Copy link
Member

@Ianyourgod Ianyourgod left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

small code review. note that this is just a quality of code review - i have not verified that the extension works

noteNumberToName(args) {
const noteNumber = args.NOTE;
if (!Number.isInteger(noteNumber) || noteNumber < 0 || noteNumber > 127) return '';
const names = ['C','C#','D','D#','E','F','F#','G','G#','A','A#','B'];
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i am being a hater, but use " not '
not really necessary but whatever

const channel = args.CHANNEL;
const arr = [];
if(this.activeNotes.has(channel)) arr.push(...this.activeNotes.get(channel).keys());
if(this.activePads.has(channel)) arr.push(...this.activePads.get(channel).keys());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is personal preference, but i find it a lot more readable when the condition and the body are on separate lines

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

agreed
unless it's something extremely short like i++ in which case that's just unnecessarily taking up space

return;
}
/* ======= MIDI Setup ======= */
_onMIDISuccess(access) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you dont need underscores in front of function names. dont listen to the lies by big javascript!!!!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can confirm

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

but its pretty

/* ======= MIDI Setup ======= */
_onMIDISuccess(access) {
this.inputs = Array.from(access.inputs.values());
this.inputs.forEach(input => input.onmidimessage = e => this._onMIDIMessage(e));
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

just use the startlistening function

const channel = (status & 0x0f) + 1;
const isPad = (note >= 36 && note <= 51); // MPK Mini pads

if (command === 0x90 && velocity > 0) {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no magic numbers please. make constants that reflect what the numbers mean.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

THIS

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

que

}

_noteOn(channel, note, velocity) {
if (!this.activeNotes.has(channel)) this.activeNotes.set(channel, new Map());
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i find it more readable when conditions and bodies are on separate lines

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

didn't you already say that but yeah

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i can read my code :P

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the point is so others can read your code.

}
});
/* ======= Listeners ======= */
startListening() { this.inputs.forEach(input => input.onmidimessage = e => this._onMIDIMessage(e)); }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dont put an entire function on one line.
also, this is a big mess of closures. parentheses would be greatly appreciated.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:'(

if(!this.visualizerEl) return;
const arr = [];
for(const [ch, notes] of this.activeNotes.entries()){ for(const note of notes.keys()) arr.push(`N Ch${ch}:${note}`); }
for(const [ch, pads] of this.activePads.entries()){ for(const pad of pads.keys()) arr.push(`P Ch${ch}:${pad}`); }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

these are way too long and confusing. dont put a bunch of control flow on one line

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:(

notesPressed() {
const arr = [];
for(const notes of this.activeNotes.values()){ for(const note of notes.keys()) arr.push(note); }
for(const pads of this.activePads.values()){ for(const pad of pads.keys()) arr.push(pad); }
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same as a bit above. too much on one line. also the braces are unneccesary.
personal note. pretty please include a space between the brace and whatevers using it
like dont do if (blahblahblah){...
do if (blahblahblah) {... <-- notice the space

Copy link

@the-can-of-soup the-can-of-soup Feb 12, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes to the split it to multiple lines
yes to the space
no to the brace removal
i think braces make it more readable

@FloppyDisk-OSC
Copy link
Contributor Author

small code review. note that this is just a quality of code review - i have not verified that the extension works

ian do i realyyyyyyyy gotta change allat to get it accepted

@Ianyourgod
Copy link
Member

yes. its not that much.

@FloppyDisk-OSC
Copy link
Contributor Author

yes. its not that much.

awwwwwwwwwww ok :(

@FloppyDisk-OSC
Copy link
Contributor Author

i edited it

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

extension update This updates an already existing extension

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants