Bonjour à tous,
je crée un topic dédié ce sera plus propre.
En jouant avec le tts je me suis rendu compte qu'il était assez facile de jouer des médias locaux (hébergés par le serveur) en bidouillant légèrement. Cela va surtout intéresser les éleveurs qui utilisent un serveur local mais qui sait, cela peut permettre aussi à des serveurs officiels de proposer une liste( ou des listes) de médias thématiques.
J'ai essayé juste des fichiers mp3 (pour l'instant je trouve que les fichiers en 22.05 Khz sont ceux qui rendent le mieux, j'attends vos avis
![yellownabzwink](/users/1714/33/94/82/smiles/290296.gif)
) et des fichiers midi (peu sont supportés, ils doivent être au format Standard MIDI format 0 visiblement d'après les specs de la puce ML2870A). Si vous en trouvez d'autres, je prends
![yellownabzsmile](/users/1714/33/94/82/smiles/27347.gif)
L'idée est d'avoir un répertoire média à la racine de http-wrapper contenant les fichiers à jouer.
Et voici la modification de code, dans le fichier server/lib/ttsmanager.cpp
- Code:
-
// Create TTS Song in /broadcast/tts/<name>/<voice>/[md5].mp3
QByteArray TTSManager::CreateNewSound(QString text, QString voice, QString name, bool forceOverwrite)
{
if (voice == "media")
{
return ("broadcast/media/" + text).toAscii();
}
TTSInterface * tts = Instance().GetTTSByName(name);
return tts->CreateNewSound(text, voice, forceOverwrite);
}
QByteArray TTSManager::CreateNewSound(QString text, QString voice, bool forceOverwrite)
{
if (voice == "media")
{
return ("broadcast/media/" + text).toAscii();
}
TTSInterface * tts = Instance().GetTTSByName(GlobalSettings::Get("Config/TTS", "acapela").toString());
return tts->CreateNewSound(text, voice, forceOverwrite);
}
Et après, on peut facilement jouer le média en indiquant son nom dans la chaîne tts et en précisant media comme voice, exemple pour jouer pirates.mid:
- Code:
-
http://terrier.local/ojn/FR/api.jsp?sn=XXXXXXXXXXXX&token=XXXXXXXXXXXXXXXXXXXXXX&tts=pirates.mid&voice=media
Voilà j'attends vos retours.
bretelles
PS: deux fichiers midi pour tester, je suis preneur si vous en avez qui fonctionnent !
Pirates des Caraïbes : http://cherche-heritier.com/nabaztag/pirates.mid
la marche impériale de Star Wars : http://cherche-heritier.com/nabaztag/imperial.mid
Edit: correction sur le format supporté, ci-joint, extrait des specs
- ml2870a specifications a écrit:
- FREQUENTLY ASKED QUESTIONS
Q1. What kind of musical score formats does the ML2870A support?
A1. ML2870A can play Standard MIDI files under given conditions and the Oki original musical score format
directly. If Standard MIDI file format 1/0 or Karaoke function need to be supported, Oki provides sample
software based on NDA for this purpose.
Q2. What is the condition for playing Standard MIDI file directly?
A2.
(1) Play format 0 only, do not play format 1.
(2) Eliminate text and MIDI events not supported by the ML2870A.
Q3. Which MIDI events does the ML2870A support?
A3.
- Note On/Off / Program change / Pitch bend / Channel pressure
- Control change [Modulation / Volume / Pan / Expression / Sustain / Reset all controller / All note off]
- RPN [Pitch bend sensitivity / Fine tuning / Coarse tuning]
Q4. Does the ML2870A support synchronization of LED with ADPCM playback ?
A4. Yes. LED and ADPCM functions are included in the musical score and are assigned as percussion to MIDI
channel 10. It is necessary to build a software routine for this synchronization.
Edit 2: Sur Windows, un super programme qui permet de convertir les midi format 1 en format 0, ça marche nickel : http://www.gnmidi.com/
Choisissez Freeware -> GN1:0 et convertissez
![yellownabzwink](/users/1714/33/94/82/smiles/290296.gif)