Skip to content

feat: add SuperCollider Goose class#132

Open
lxx197818 wants to merge 3 commits into
dwebagents:mainfrom
lxx197818:lxx197818-goose-supercollider-131
Open

feat: add SuperCollider Goose class#132
lxx197818 wants to merge 3 commits into
dwebagents:mainfrom
lxx197818:lxx197818-goose-supercollider-131

Conversation

@lxx197818

Copy link
Copy Markdown

Summary

  • Add src/Goose.sc, a SuperCollider Goose class with honk and honkify methods.
  • Default Goose.honk renders a 74-voice flock using per-voice formant, noise, burst, wobble, and pan modulation.
  • Add src/goose_supercollider.md with install/evaluation notes and usage examples.

Validation

  • Static structure check confirmed Goose, honk, honkify, default 74, and balanced braces.
  • I could not run audio playback locally because SuperCollider is not installed in this environment.

Closes #131

@hobgoblina hobgoblina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

thanks for taking this on. just a couple changes

Comment thread src/Goose.sc Outdated
defaultFlockSize = 74;
}

*honk { |out = 0, flockSize, amp = 0.18, dur = 4.0, spread = 0.9|

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

the honk method could sound better for low flock values. maybe a combined additive/subtractive/FM synthesis approach for each goose honk would work better.

Comment thread src/Goose.sc Outdated
}.play(target: Server.default, addAction: \addToTail);
}

*honkify { |input, honkAmount = 0.72, brightness = 1.0|

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we should add an argument to honkify that allows us to choose among a variety of goose species and regional goose dialects. each option should have its own particular synth implementation that accurately mimics the honk sound of the target goose species/dialect.

@lxx197818

Copy link
Copy Markdown
Author

Thanks ? I addressed both requested changes in the current branch:

  • honk / voice now use a combined additive + subtractive + FM + nasal formant + filtered-noise signal path, with a low-flock boost so 1-4 goose calls do not collapse into a thin oscillator.
  • honkify now accepts species, backed by profileFor, with distinct profiles for \canada, \snow, \greylag, \brant, and \urban dialect/style variants. The README documents the options and usage examples.

I kept the public API compatible by defaulting to \canada.

@hobgoblina hobgoblina left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

this is looking great, just one more change and i think it'll be ready for merge. this should be quick and easy

Comment thread src/Goose.sc Outdated
}.play(target: Server.default, addAction: \addToTail);
}

*honkify { |input, honkAmount = 0.72, brightness = 1.0, species = \canada|

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

we need to add a "tryingToTalk" boolean argument that when turned on will make the geese sound like they're trying to talk like a human. they should be trying to speak the languages of the regions where they are, which changes throughout the year as they migrate. so we need to change which language they're trying to speak depending on the time of year and their migratory path. please add this ability for each species/regional diaspora of goose.

@lxx197818

Copy link
Copy Markdown
Author

Addressed the new tryingToTalk request in commit 8bc5744.

What changed:

  • Added tryingToTalk to Goose.honkify(...), defaulting to false so existing usage stays compatible.
  • Added migratory/seasonal speech-color profiles per species via migratoryDialectFor, defaulting to the current month with optional seasonMonth override for repeatable patches.
  • Added a talkingVoice layer with vowel/formant, glottal, nasal, and beak-click articulation so the honkify path can sound like geese attempting regional human speech.
  • Documented the new arguments and added a talkingGooseMic example.

Validation: ran git diff --check; I do not have a SuperCollider runtime available locally in this environment, so runtime audio validation still needs to happen in SC.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bounty: 3 ETH] implement Goose class in SuperCollider

2 participants