Songs can give the player's strumline its own note style #7

Merged
khyretos merged 1 commit from feat/player-note-style into main 2026-10-26 08:13:04 +01:00
Owner

Requested by Kees

Songs can give the player's strumline its own note style: optional playData.playerNoteStyle in the song metadata. The player's strums, notes, holds and splashes use it, and the opponent keeps noteStyle. Without the field nothing changes.

Psych mods often reskin only BF's notes at the start of a song (noteskinchangeBF). The converter (in the mods PR) writes this field for them. It's a small isolated change (3 files) and stays easy to merge upstream.

Tested: Arcade Showdown's Nyaw with playerNoteStyle (player BFNOTES, opponent default), and base songs without the field.

🤖 Generated with Claude Code

<!-- claude-projects-attribution: {"github_login":"Khyretos"} --> _Requested by **Kees**_ Songs can give the player's strumline its own note style: optional `playData.playerNoteStyle` in the song metadata. The player's strums, notes, holds and splashes use it, and the opponent keeps `noteStyle`. Without the field nothing changes. Psych mods often reskin only BF's notes at the start of a song (`noteskinchangeBF`). The converter (in the mods PR) writes this field for them. It's a small isolated change (3 files) and stays easy to merge upstream. Tested: Arcade Showdown's Nyaw with `playerNoteStyle` (player BFNOTES, opponent default), and base songs without the field. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Songs can give the player's strumline its own note style
All checks were successful
CI / all-checks (pull_request) Successful in 24m24s
25c3f2f396
playData.playerNoteStyle (optional): the player's strums, notes, holds and
splashes use that note style, the opponent keeps noteStyle. Converted Psych mods
that reskin only BF's notes (noteskinchangeBF) use it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
First-time contributor

Title

Songs can give the player's strumline its own note style


User description

Requested by Kees

Songs can give the player's strumline its own note style: optional playData.playerNoteStyle in the song metadata. The player's strums, notes, holds and splashes use it, and the opponent keeps noteStyle. Without the field nothing changes.

Psych mods often reskin only BF's notes at the start of a song (noteskinchangeBF). The converter (in the mods PR) writes this field for them. It's a small isolated change (3 files) and stays easy to merge upstream.

Tested: Arcade Showdown's Nyaw with playerNoteStyle (player BFNOTES, opponent default), and base songs without the field.

🤖 Generated with Claude Code


PR Type

Enhancement


Description

  • Adds optional playerNoteStyle to song metadata for custom player strumlines.

  • Allows mods to reskin only the player's notes while keeping opponent style default.

  • Updates PlayState and Song classes to support per-player note styling logic.


Diagram Walkthrough

flowchart LR
  A["Song Metadata"] -->|"playerNoteStyle"| B["SongDifficulty"]
  B -->|"playerNoteStyle"| C["PlayState"]
  C -->|"playerNoteStyle"| D["Player Strumline"]

File Walkthrough

Relevant files
Enhancement
SongData.hx
Add optional playerNoteStyle field to SongPlayData             

source/funkin/data/song/SongData.hx

  • Added optional playerNoteStyle field to SongPlayData.
  • Updated clone() method to copy the new field.
+8/-0     
PlayState.hx
Implement player-specific note style logic in PlayState   

source/funkin/play/PlayState.hx

  • Introduced playerNoteStyle variable to store player-specific note
    style.
  • Modified initialization to fetch player style from chart or fallback
    to default.
  • Updated player strumline creation and positioning to use
    playerNoteStyle.
+9/-2     
Song.hx
Propagate playerNoteStyle through Song and SongDifficulty classes

source/funkin/play/song/Song.hx

  • Added playerNoteStyle assignment when loading song metadata.
  • Included playerNoteStyle in both standard and variation difficulty
    loading.
  • Declared playerNoteStyle property in SongDifficulty class.
+8/-0     

## Title Songs can give the player's strumline its own note style ___ ### **User description** <!-- claude-projects-attribution: {"github_login":"Khyretos"} --> _Requested by **Kees**_ Songs can give the player's strumline its own note style: optional `playData.playerNoteStyle` in the song metadata. The player's strums, notes, holds and splashes use it, and the opponent keeps `noteStyle`. Without the field nothing changes. Psych mods often reskin only BF's notes at the start of a song (`noteskinchangeBF`). The converter (in the mods PR) writes this field for them. It's a small isolated change (3 files) and stays easy to merge upstream. Tested: Arcade Showdown's Nyaw with `playerNoteStyle` (player BFNOTES, opponent default), and base songs without the field. 🤖 Generated with [Claude Code](https://claude.com/claude-code) ___ ### **PR Type** Enhancement ___ ### **Description** - Adds optional `playerNoteStyle` to song metadata for custom player strumlines. - Allows mods to reskin only the player's notes while keeping opponent style default. - Updates PlayState and Song classes to support per-player note styling logic. ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Song Metadata"] -->|"playerNoteStyle"| B["SongDifficulty"] B -->|"playerNoteStyle"| C["PlayState"] C -->|"playerNoteStyle"| D["Player Strumline"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>SongData.hx</strong><dd><code>Add optional playerNoteStyle field to SongPlayData</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary> <hr> source/funkin/data/song/SongData.hx <ul><li>Added optional <code>playerNoteStyle</code> field to <code>SongPlayData</code>.<br> <li> Updated <code>clone()</code> method to copy the new field.</ul> </details> </td> <td><a href="https://git.kreative-kompas.com/khyretos/funkin/src/branch/feat/player-note-style/source/funkin/data/song/SongData.hx">+8/-0</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>PlayState.hx</strong><dd><code>Implement player-specific note style logic in PlayState</code>&nbsp; &nbsp; </dd></summary> <hr> source/funkin/play/PlayState.hx <ul><li>Introduced <code>playerNoteStyle</code> variable to store player-specific note <br>style.<br> <li> Modified initialization to fetch player style from chart or fallback <br>to default.<br> <li> Updated player strumline creation and positioning to use <br><code>playerNoteStyle</code>.</ul> </details> </td> <td><a href="https://git.kreative-kompas.com/khyretos/funkin/src/branch/feat/player-note-style/source/funkin/play/PlayState.hx">+9/-2</a>&nbsp; &nbsp; &nbsp; </td> </tr> <tr> <td> <details> <summary><strong>Song.hx</strong><dd><code>Propagate playerNoteStyle through Song and SongDifficulty classes</code></dd></summary> <hr> source/funkin/play/song/Song.hx <ul><li>Added <code>playerNoteStyle</code> assignment when loading song metadata.<br> <li> Included <code>playerNoteStyle</code> in both standard and variation difficulty <br>loading.<br> <li> Declared <code>playerNoteStyle</code> property in <code>SongDifficulty</code> class.</ul> </details> </td> <td><a href="https://git.kreative-kompas.com/khyretos/funkin/src/branch/feat/player-note-style/source/funkin/play/song/Song.hx">+8/-0</a>&nbsp; &nbsp; &nbsp; </td> </tr> </table></td></tr></tr></tbody></table> </details> ___
First-time contributor

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected
## PR Reviewer Guide 🔍 <!-- pr-agent:review:full --> Here are some key observations to aid the review process: <table> <tr><td>⏱️&nbsp;<strong>Estimated effort to review</strong>: 2 🔵🔵⚪⚪⚪</td></tr> <tr><td>🧪&nbsp;<strong>PR contains tests</strong></td></tr> <tr><td>🔒&nbsp;<strong>No security concerns identified</strong></td></tr> <tr><td>⚡&nbsp;<strong>No major issues detected</strong></td></tr> </table>
First-time contributor

PR Code Suggestions ✨

No code suggestions found for the PR.

## PR Code Suggestions ✨ <!-- pr-agent:improve:no-suggestions --> No code suggestions found for the PR.
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
khyretos/funkin!7
No description provided.