NEW (as of 2010): MAXMBROLA support is now continued here
MaxMBROLA~ external object: MBROLA inside Max/MSP
Max/MSP objects work as small servers. They are initialized when they are imported inside the workspace. They contain a set of dedicated functions (methods) which are activated when the object receive particular messages. These messages can be simple numbers, symbols or complex messages with a header and arguments. Considering that real-time request-based protocol of communication between objects, what we have to do is to define a particular set of messages (header and arguments).
Fig 1. Internal structure of the MaxMBROLA~ external object.
As shown in Figure 1, we can separate the possible requests in two main channels. On one side, there is parameter modification, which influence the internal state of the synthesizer. On the other side, there is the phonetic/prosodic stream, which generate speech instantaneously.
Available actions of the object
Fig 2. Supported messages of the MaxMBROLA~ external object.
Internal state modifications
Some particular modifications of the internal state of the MBROLA synthesizer can be applied with Max/MSP requests. Here is a description of that supported actions. The labels used to name inlets (from left to right: Messages, Fs, Time, Pitch and Voice and examples of the supported messages are illustrated on Figure 2.
Phonetic/prosodic stream processing
Here are the requests that generate speech in the Max environment. All following messages are sent into the Messages inlet.
The MaxMBROLA_NR~ external object: let Max/MSP resample!
Some sound exemples
Sound extracted from Max/MSP (sfrecord~ object). The MaxMBROLA_NR~ object, in a poly~ sub-patch, with the down 2 argument (with fr4 loaded, 22kHz voice) receive the phostream request loading the file trenet.pho.
Sound extracted from Max/MSP (sfrecord~ object). The MaxMBROLA~ object (with fr1 loaded, 16kHz voice) receive the phostream request loading the file trenet.pho.