Je tente de porter une application qui lit les fichiers musicaux de chiptunes (NSF, SPC, etc.) de Java SE vers Android. L'API Android semble manquer des classes multimédias javax que cette application utilise pour produire du son PCM brut. L'analogue le plus proche que j'ai trouvé dans l'API est AudioTrack et j'ai donc lutté avec ça. Cependant, lorsque j'essaie d'exécuter un de mes fichiers musicaux sur mon port en cours, tout ce que je récupère est statique. Mon soupçon est que c'est l'AudioTrack que j'ai configuré qui est en faute. J'ai essayé plusieurs constructeurs différents, mais tout produit simplement statique à la fin.Difficulté à porter le code de sortie PCM brut de Java vers Android AudioTrack API
La configuration Dataline dans le code original est quelque chose comme:
AudioFormat audioFormat = new AudioFormat(AudioFormat.Encoding.PCM_SIGNED,
44100, 16, 2, 4, 44100, true);
DataLine.Info lineInfo = new DataLine.Info(SourceDataLine.class, audioFormat);
DataLine line = (SourceDataLine)AudioSystem.getLine(lineInfo);
Le constructeur J'utilise est en ce moment:
AudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
44100,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
AudioTrack.getMinBufferSize(44100,
AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT),
AudioTrack.MODE_STREAM);
J'ai remplacé les constantes et les variables dans les afin qu'ils J'ai l'intention de donner un sens aussi concis que possible, mais ma question fondamentale est de savoir s'il y a des problèmes évidents dans les hypothèses que j'ai faites lorsque je passe d'un format à l'autre.
Même si vous devenez statique, avez-vous vérifié si la longueur de la piste est correcte? – nvuono
Les fichiers musicaux en question n'ont pas vraiment de longueur de piste définitive. C'est-à-dire, ils sont sous la forme de code pour un DSP qui continue à jouer une boucle jusqu'à ce qu'on leur dise d'arrêter. – alexanderfb