bytes.cat

La wiki d'FP d'informàtica

Eines de l'usuari

Eines del lloc


libgdx_jsyn

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Següent revisió
Revisió prèvia
libgdx_jsyn [2025/03/02 23:25]
enric_mieza_sanchez creat
libgdx_jsyn [2025/03/03 00:24] (actual)
enric_mieza_sanchez [Projecte libGDX amb JSyn]
Línia 13: Línia 13:
 ===== Projecte libGDX amb JSyn ===== ===== Projecte libGDX amb JSyn =====
  
-A la [[https://www.softsynth.com/jsyn/beta/jsyn_on_android.php|doc de JSyn es donen directrius per integrar-se a un projecte Android]] (a Març de 2025 funciona), però no directament en un libGDX.+Referències: 
 +  * Integrar [[https://github.com/philburk/jsyn|JSyn amb Gradle]]. 
 +  * Integrar [[https://www.softsynth.com/jsyn/beta/jsyn_on_android.php|JSyn amb Android]] (a Març de 2025 funciona). No funciona directament en un libGDX.
  
-Per aconseguir posar en marxa un projecte libGDX i emprar JSyn per al sonses pot seguir aquesta guia.+Per aconseguir posar en marxa un projecte libGDX i emprar JSyn per al sons cal crear un objecte personalitzat segons la plataforma. Mentre en Java estàndard es fa: 
 +  Synthesizer synth = JSyn.createSynthesizer(); 
 + 
 +En Android cal fer: 
 +  Synthesizer synth = JSyn.createSynthesizer(new AndroidAudioForJSyn()); 
 + 
 +La resta del codi és igual. Per tant, caldrà fer una modificació dels //launchers// de cada plataforma i personalitzar la creació del //synth// amb el //device// concret de la versió Android.
  
   - Crear un [[jocs_libGDX|projecte libGDX]] amb el gdx-liftoff.   - Crear un [[jocs_libGDX|projecte libGDX]] amb el gdx-liftoff.
-  - Afegir el repositori maven a Gradle:<file groovy gradle.settings>+  - Afegir el repositori maven a Gradle (arxiu general):<file groovy gradle.settings> 
 +repositories { 
 +    maven { url  "https://jitpack.io"
 +
 +</file> 
 +  - Afegir biblioteques als mòduls ''core'', ''lwjgl3'' (desktop) i ''android'':<file groovy gradle.settings> 
 +dependencies { 
 +    implementation "com.github.philburk:jsyn:latest.release" 
 +
 +</file> 
 +  - Modificar constructor del joc libGDX:<file java Main.java> 
 +import com.jsyn.Synthesizer; 
 +import com.jsyn.devices.AudioDeviceManager; 
 + 
 +public class Main extends ApplicationAdapter { 
 +    private Synthesizer synth; 
 +    public Main(AudioDeviceManager device) { 
 +        if( device==null ) { 
 +            synth = JSyn.createSynthesizer(); 
 +        } else { 
 +            synth = JSyn.createSynthesizer(device); 
 +        } 
 +    } 
 +</file> 
 +  - Modificar el //launcher// de la versió //desktop//:<file java Lwjgl3Launcher.java> 
 +/** Launches the desktop (LWJGL3) application. */ 
 +public class Lwjgl3Launcher { 
 +    // ... 
 +    private static Lwjgl3Application createApplication() { 
 +        return new Lwjgl3Application(new Main(null), getDefaultConfiguration()); 
 +    } 
 +    //... 
 +</file> 
 +  - Modificar el //launcher// de la versió Anrdoid:<file java AndroidLauncher.java> 
 +/** Launches the Android application. */ 
 +public class AndroidLauncher extends AndroidApplication { 
 +    @Override 
 +    protected void onCreate(Bundle savedInstanceState) { 
 +        // ... 
 +        AndroidAudioForJSyn device = new AndroidAudioForJSyn(); 
 +        initialize(new Main(device), configuration); 
 +        // ...
 </file> </file>
   - Descarregar l'[[https://github.com/philburk/jsyn/blob/master/android/com/jsyn/devices/android/AndroidAudioForJSyn.java|arxiu AndroidAudioForJSyn.java]] a la carpeta android/src/main/java/com/...   - Descarregar l'[[https://github.com/philburk/jsyn/blob/master/android/com/jsyn/devices/android/AndroidAudioForJSyn.java|arxiu AndroidAudioForJSyn.java]] a la carpeta android/src/main/java/com/...
-  -  +  - Implementa el codi comú al mòdul ''core'':<file java Main.java> 
 +public class Main extends ApplicationAdapter { 
 +    //... 
 +    LineOut lineOut; 
 +    SineOscillator sineOsc; 
 +     
 +    @Override 
 +    public void create() { 
 +        // engeguem el sintetizador 
 +        synth.start();
  
 +        // Afegir un oscil·lador sinusoïdal
 +        sineOsc = new SineOscillator();
 +        sineOsc.frequency.set(440); // Freqüència de 440 Hz (La4)
 +        sineOsc.amplitude.set(0.5); // Volum
  
 +        // Connexió a la sortida d'àudio
 +        lineOut = new LineOut();
 +        synth.add(sineOsc);
 +        synth.add(lineOut);
 +        sineOsc.output.connect(0, lineOut.input, 0);
 +        sineOsc.output.connect(0, lineOut.input, 1);
 +    }
 +    
 +    @Override
 +    public void render() {
 +        // al detectar un touch engeguem o apaguem
 +        if( Gdx.input.isTouched() ) {
 +            lineOut.start();
 +        } else {
 +            lineOut.stop();
 +        }
 +    }
 +</file>
 +  - Comprova que funciona tant en Desktop (LWJGL3) com en Android.
  
libgdx_jsyn.1740957936.txt.gz · Darrera modificació: 2025/03/02 23:25 per enric_mieza_sanchez