proglet InputSoundBit - demande de rajout de fonctionnalité

2 views
Skip to first unread message

Nils Richard

unread,
Feb 1, 2019, 8:51:05 AM2/1/19
to java...@googlegroups.com
Bonjour,

Je sui enseignant de la spécialité ISN en lycée.
J'utilise javascool depuis 5 ans, mais je ne suis pas totalement satisfait par la proglets syntheson car elle ne permet pas de manipuler des échantillons sonores d'un fichier son comme le fait la proglet codagepixel avec les pixels des images.

Je m'explique :
Dans la proglet syntheson, il est possible de faire l'acquisition d'un son via l'entrée microphone avec :
  InputSoundBit son= new InputSoundBit();
  son.reset(double duration);

Puis d'obtenir la valeur d'un échantillon avec la méthode get() selon : 
  double echantillon = son.get(char canal, int indice);

Hélas il est impossible de travailler sur l'échantillon obtenu,  c'est à dire de le modifier et le réinsérer dans le fichier son pour le jouer avec play() une fois modifié.

D'où ma question : Serait-il possible d'ajouter une méthode de type set() permettant cela, par exemple :
  son.set(double valeur, int indice);

en espérant une réponse de votre part.
Cordialement,

Nils Richard
professeur de physique et d'ISN au lycée français de Madrid

Thierry Vieville

unread,
Feb 1, 2019, 10:10:08 AM2/1/19
to java...@googlegroups.com, Nils Richard, Mathias Hiron

Cher Collègue, Bonjour Nils,


    La réponse officielle et que javascool n'est plus maintenu depuis maintenant plusieurs semaines même si bien sûr cela reste disponible ; cependant compte tenu de la modification mineure j'ai tenté quelque chose et joins à ce mail le lien vers le jar compilé ,  je n'ose pas publier la modification en ligne car cela pourrait induire des effets de bord négatifs.


 Et je me tourne vers Mathias   en copie de ce mail pour qu'il me dise comment faire pour passer de javascool le nouvel outil qu'il a déployé.


Bien Cordialement,



  public double get(char channel, long index) {
    int i = (int) index * 2;
    if((buffer == null) || (i < 0) || (i >= buffer.length)) {
      return 0;
    }
    int h = buffer[i + 1], l = buffer[i], v = ((128 + h) << 8) | (128 + l);
    return 1 * (v / 32767.0 - 1);
  }

  // Ajouter mais non verifié

  public void set(char channel, long index, double value) {
    int i = (int) index * 2;
    if((buffer == null) || (i < 0) || (i >= buffer.length)) {
      return;
    }
    int v = (int) (1 + 32767.0 * value), l = (v & 0xFF) - 128, h = ((v >> 8) & 0xFF) - 128;
    buffer[i + 1] = (byte) h; buffer[i] = (byte) l;
  }




I've linked 1 file to this email:
Mozilla Thunderbird makes it easy to share large files over email.
--

---
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes "Java's Cool".
Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse javascool+...@googlegroups.com.
Pour obtenir davantage d'options, consultez la page https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages