Skip to content

Conversation

Copy link

Copilot AI commented Nov 15, 2025

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.

Original prompt

Create a new Aliucord plugin named RealTimeVoiceChanger that provides a real-time voice changer skeleton with a working local audio processing pipeline and in-plugin UI to enable/disable effects and adjust pitch. This PR should add a new directory plugins/RealTimeVoiceChanger with the following files and contents (implementations may be best-effort and include TODOs for integration points with Discord's internal voice pipeline):

Files to add (include full source where possible):

  1. plugins/RealTimeVoiceChanger/plugin.json
  • Standard Aliucord plugin metadata (id, name, version, author, description, repository, main="com.juby.realtimevoicechanger.RealTimeVoiceChanger").
  1. plugins/RealTimeVoiceChanger/build.gradle
  • Gradle config for a Kotlin JVM/Android module compatible with Aliucord plugins.
  • Add dependency on TarsosDSP (for pitch shifting) and Aliucord plugin SDK if appropriate.
  1. plugins/RealTimeVoiceChanger/src/main/kotlin/com/juby/realtimevoicechanger/RealTimeVoiceChanger.kt
  • Main plugin class extending Aliucord's Plugin base (com.aliucord.Plugin).
  • On start, register a settings fragment and a simple service that demonstrates audio capture -> TarsosDSP pitch shift -> output to a local AudioTrack for monitoring.
  • Provide settings to change pitchSemitones (float) and enable/disable processing.
  • Include clear TODO comments where integration is required to route processed audio into Discord's voice sending pipeline (this requires private APIs and native interfaces; do not attempt to modify Discord internals beyond registering hooks).
  • Keep code defensive and non-blocking; start audio processing on a background thread and stop on plugin unload.
  1. plugins/RealTimeVoiceChanger/src/main/kotlin/com/juby/realtimevoicechanger/SettingsFragment.kt
  • A simple settings fragment using Aliucord's UI helpers to expose a toggle "Enable Voice Changer" and a slider or text field for "Pitch (semitones)".
  1. plugins/RealTimeVoiceChanger/README.md
  • Explain what the plugin does, how to build/install, limitations (can't inject into Discord's audio pipeline without additional hooking on libvoice or native layers), and next steps for full integration (native audio capture hooking, permissions, and potential use of SoundTouch native library).

Implementation notes (must be included in problem statement):

  • Use TarsosDSP (groupId: be.tarsos, artifactId: TarsosDSP, version: 2.4) for pitch-shifting in pure Java to avoid native dependency here.
  • The plugin will implement an AudioRecord -> TarsosDSP AudioEvent -> PitchShifter -> AudioPlayer (AudioTrack) pipeline that allows local monitoring of the altered microphone audio. This demonstrates the core DSP and UI interactions.
  • Add clear warnings in README and code that forwarding modified audio to Discord requires additional hooking into Discord's native voice send pipeline and is out of scope for this PR.
  • Ensure code uses proper permissions checks and handles lifecycle (start/stop) to avoid leaving AudioRecord running.

Testing instructions in README:

  • How to build with Gradle (include example gradlew commands)
  • How to install into Aliucord's plugins folder
  • How to enable plugin and monitor audio locally

Make the PR title concise and descriptive and include a detailed description in the PR body summarizing what's added and limitations. The PR should not attempt to change existing repo files outside adding the new plugin directory.

Be thorough and create actual Kotlin source for the plugin skeleton (implementation of audio processing pipeline and settings UI) so reviewers can build and test the local monitoring functionality. Add TODO comments where deeper Discord integration is required.

This pull request was created as a result of the following prompt from Copilot chat.

Create a new Aliucord plugin named RealTimeVoiceChanger that provides a real-time voice changer skeleton with a working local audio processing pipeline and in-plugin UI to enable/disable effects and adjust pitch. This PR should add a new directory plugins/RealTimeVoiceChanger with the following files and contents (implementations may be best-effort and include TODOs for integration points with Discord's internal voice pipeline):

Files to add (include full source where possible):

  1. plugins/RealTimeVoiceChanger/plugin.json
  • Standard Aliucord plugin metadata (id, name, version, author, description, repository, main="com.juby.realtimevoicechanger.RealTimeVoiceChanger").
  1. plugins/RealTimeVoiceChanger/build.gradle
  • Gradle config for a Kotlin JVM/Android module compatible with Aliucord plugins.
  • Add dependency on TarsosDSP (for pitch shifting) and Aliucord plugin SDK if appropriate.
  1. plugins/RealTimeVoiceChanger/src/main/kotlin/com/juby/realtimevoicechanger/RealTimeVoiceChanger.kt
  • Main plugin class extending Aliucord's Plugin base (com.aliucord.Plugin).
  • On start, register a settings fragment and a simple service that demonstrates audio capture -> TarsosDSP pitch shift -> output to a local AudioTrack for monitoring.
  • Provide settings to change pitchSemitones (float) and enable/disable processing.
  • Include clear TODO comments where integration is required to route processed audio into Discord's voice sending pipeline (this requires private APIs and native interfaces; do not attempt to modify Discord internals beyond registering hooks).
  • Keep code defensive and non-blocking; start audio processing on a background thread and stop on plugin unload.
  1. plugins/RealTimeVoiceChanger/src/main/kotlin/com/juby/realtimevoicechanger/SettingsFragment.kt
  • A simple settings fragment using Aliucord's UI helpers to expose a toggle "Enable Voice Changer" and a slider or text field for "Pitch (semitones)".
  1. plugins/RealTimeVoiceChanger/README.md
  • Explain what the plugin does, how to build/install, limitations (can't inject into Discord's audio pipeline without additional hooking on libvoice or native layers), and next steps for full integration (native audio capture hooking, permissions, and potential use of SoundTouch native library).

Implementation notes (must be included in problem statement):

  • Use TarsosDSP (groupId: be.tarsos, artifactId: TarsosDSP, version: 2.4) for pitch-shifting in pure Java to avoid native dependency here.
  • The plugin will implement an AudioRecord -> TarsosDSP AudioEvent -> PitchShifter -> AudioPlayer (AudioTrack) pipeline that allows local monitoring of the altered microphone audio. This demonstrates the core DSP and UI interactions.
  • Add clear warnings in README and code that forwarding modified audio to Discord requires additional hooking into Discord's native voice send pipeline and is out of scope for this PR.
  • Ensure code uses proper permissions checks and handles lifecycle (start/stop) to avoid leaving AudioRecord running.

Testing instructions in README:

  • How to build with Gradle (include example gradlew commands)
  • How to install into Aliucord's plugins folder
  • How to enable plugin and monitor audio locally

Make the PR title concise and descriptive and include a detailed description in the PR body summarizing what's added and limitations. The PR should not attempt to change existing repo files outside adding the new plugin directory.

Be thorough and create actual Kotlin source for the plugin skeleton (implementation of audio processing pipeline and settings UI) so reviewers can build and test the local monitoring functionality. Add TODO comments where deeper Discord integration is required.


💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI self-assigned this Nov 15, 2025
Copilot stopped work on behalf of Tanmayop9 due to an error November 15, 2025 05:43
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.

1 participant