Papagayo to Vixen Plug-in

ebrady

New member
Papagayo Vixen Addin v1.3

I plan on adding some lip sync elements to my show this year for both Halloween and Christmas. I have played with Papagayo and it is a useful tool to work out the timing of the lip syncs, however it is somewhat tedious to import a completed Papagayo file into a Vixen sequence as it must be completed by hand.

Over the last week, I decided to write a plug-in for Vixen 2.1 and 2.5 to automate this process and am posting it. At this point I consider the software Beta, but figured I would go ahead and share it now to get feedback and to debug issues. Since it is Beta, it could crash or screw up your prized sequence, so make backups accordingly.

To use:
  • Unzip the attached file and copy the dll to your Vixen Addin directory
  • Create a Papagayo Sequence, work out the lip sync and save the file.
  • Create a Vixen Sequence, it works best to make the frame rate match the fps rate in the Papagayo sequence, however it is not required.
  • Open the Add-In "Papagayo Converter", from the Vixen AddIn Menu
  • Select the "..." button to load the completed Papagayo file.
  • Select the Voice you wish to map
  • For each Phoneme in the left listbox select which Vixen Channels you wish for it to map to. It is possible to map each Phoneme to multiple channels.
  • Select the offset in the sequence were you wish for the mapping to begin.
  • Press convert
  • The vixen sequence will show correctly once you close the Add-In box.

I have tested the following variations of Papagayo fps and Vixen Event Periods.

Papagayo 40fps, Vixen Period = 25ms ( Works good, but you can't do much at a time with the 500 frame limitation on papagayo)
Papagayo 24fps, Vixen Period = 25ms, ( These are the settings I used on the posted video ).
Pagagayo 24fps, Vixen Period = 50ms, ( Works, can't say I noticed much if any loss of resolution during the conversion process).
Papagayo 24fps, Vixen Period = 100ms ( Works, loss of resolution noticed on some syllables, depended upon the song ).

If you are unfamiliar with Papagayo, information and downloads can be found at http://www.lostmarble.com/papagayo/

A good discussion of lip sync information can also be found in the following thread: http://doityourselfchristmas.com/forums/showthread.php?12249-Singing-Pumpkin-Lip-Sync

The Papagayo Application (not the plugin), while it is a good tool definitely has a few bugs in it. If you are aware of what they are then it is not much of a problem, if you don't it will drive you literally CRAZY. Here are some of the things I found.... (These are bugs in the App itself, which I have no control of, not the plugin.)

1 - Papagayo does not like it when you load sound files of more then 500 frames. It does not warn you and will let you work as if everything is OK, when you go to save it will generate a corrupt pgo file and not warn you about it. This results in all of the work being wasted. I ended up downloading a copy of Audacity and broke the sequence into 15 or second less parts, worked on them individually and recombined them using the offset feature in the plugin on the final sequence.

2 - Papagayo does not like it when you put underscores in the pgo filenames. i.e. ToySack_1.mp3 will cause an error, once again, it will not warn you and act like it saved the file, but did not. I wasted about 45 minutes of work before I figured this out.

3 - Papagayo also has problems when you add phrases that have anything other then A-Z characters. If the phrase you are typing has anything other then that, then it will not save the file correctly.

The author of Papagayo is no longer working on the code, so these will likely not get fixed. However he has made the code open source so someone may one day.

a. To do the sequence, I did the following:
b. Create a vixen sequence mapped to the complete audio file.
c. Broke the mp3 file into workable segments and generated independent pgo files for them one by one
d. Mapped each of these pgo files one by one into the sequence made in "a".

I am open to suggestions for improvements to the plugin at this point, so all feedback is welcomed.

ChangeLog

v1.3
- Corrected issue were a word with no associated phoneme data would cause a plugin crash. This can happen when the app can not process one of the phrase words due to illegal characters or can determine proper pronunciation of the word.

v1.2
- Attempt to preserve voice phoneme->channel mappings when loading different pgo files.
The plugin will now save phoneme->channel mappings by voice name in each sequence. Once a mapping is defined in the sequence for a particular voice, the plugin will attempt to maintain this mapping when other pgo files are loaded that contain voices with the same name. This information is stored in the sequence and will be reloaded anytime that particular sequence is loaded.
- Made Filename text box readonly to prevent some undesired behavior.
- Removed extraneous whitespaces in all voice names.
- Added readme notes to zip file
 

Attachments

  • PapagayoAddIn_v1.3.zip
    12.2 KB · Views: 161
Last edited:
Must have missed that one, thanks for the link. I gave it a look, it is a decent plugin, but there are a few differences between it and the one I just posted. The differences may or may not be relevant to everyone depending upon what you are used to.

Specifically:
- Ability to set starting offset in the sequence
- Load .pgo file directly and convert all Voices at once. No intermediate step required to convert voices to independant .dat files
- Can use other than 40fps / 25ms sequence times

Ed
 
After some feedback and working through a trial sequence, I have made a few bug fixes to the plug-in and re-posted it to the beginning of this thread. Here is a link to a sequence I made over the weekend to debug and exercise the code.

https://vimeo.com/45486733

Enjoy!
Ed
 
Thanks for this Ed

I have been sequencing with the other Add-In but I had some old Vixen sequences that I wanted to ad Lip-sync to, I tried but it didn't work out with the 25ms timing so I am keen to try yours.

Love the sequence you did, I'm using this song as well this year.

Kev :)
 
Thanks kevr,

One thing I have been meaning to post to this thread is my experience creating the linked video.

The Papagayo Application (not the plugin), while it is a good tool definitely has a few bugs in it. If you are aware of what they are then it is not much of a problem, if you don't it will drive you literally CRAZY. Here are some of the things I found.... (These are bugs in the App itself, which I have no control of, not the plugin.)

1 - Papagayo does not like it when you load sound files of more then 500 frames. It does not warn you and will let you work as if everything is OK, when you go to save it will generate a corrupt pgo file and not warn you about it. This results in all of the work being wasted. I ended up downloading a copy of Audacity and broke the sequence into 15 or second less parts, worked on them individually and recombined them using the offset feature in the plugin on the final sequence.

2 - Papagayo does not like it when you put underscores in the pgo filenames. i.e. ToySack_1.mp3 will cause an error, once again, it will not warn you and act like it saved the file, but did not. I wasted about 45 minutes of work before I figured this out.

3 - Papagayo also has problems when you add phrases that have anything other then A-Z characters. If the phrase you are typing has anything other then that, then it will not save the file correctly.

The author of Papagayo is no longer working on the code, so these will likely not get fixed. However he has made the code open source so someone may one day.

a. To do the sequence, I did the following:
b. Create a vixen sequence mapped to the complete audio file.
c. Broke the mp3 file into workable segments and generated independent pgo files for them one by one
d. Mapped each of these pgo files one by one into the sequence made in "a".

I am open to suggestions for improvements to the plugin at this point, so all feedback is welcomed.
 
Last edited:
You can set the Vixen sequence to be whatever you like but 24fps comes out to be about 42ms.

Your Vixen sequence event period should be at least that or faster or else you could loose some resolution during the conversion.

I have tested the following variations of Papagayo fps and Vixen Event Periods.

Papagayo 40fps, Vixen Period = 25ms ( Works good, but you can't do much at a time with the 500 frame limitation on papagayo)
Papagayo 24fps, Vixen Period = 25ms, ( These are the settings I used on the posted video ).
Pagagayo 24fps, Vixen Period = 50ms, ( Works, can't say I noticed much if any loss of resolution during the conversion process).
Papagayo 24fps, Vixen Period = 100ms ( Works, loss of resolution noticed on some syllables, depended upon the song ).

I welcome all feedback let me know if you find any bugs or peculiarities.

What event period should we use to match the 24 fps that papagayo likes?
 
i'd use a different number. 24 fps is actually 41.6666666 ms (1000/24). Since it's a repeating decimal, you may end up with a bit of stack up error in your intervals. It will be more apparent towards the end of your sequence. Use something like 25 fps which will give you 40 ms (1000/25).
 
Those numbers should work also.

I implemented a scaling mechanism in the plugin so it will compensate for any stack up errors due to mismatches in fps and event period rates. So the user has some freedom both on the FPS rate and the Vixen event period.
 
Wow. When I posted that, I didn't read the rest of the thread and didn't realize that this was a new plug-in, different from the one I used last year. Sounds like this might be better at mapping the different phonemes to the proper channels. I'll be giving this a try here in a few weeks.
 
So far so good, the only issue I have is that after importing a papa file, it does not remember how the phonemes are mapped to the channels. That is going to get very old with the number of clips I had chopped my song into... Is there any way the addin can remember channel mapping??
 
So far so good, the only issue I have is that after importing a papa file, it does not remember how the phonemes are mapped to the channels. That is going to get very old with the number of clips I had chopped my song into... Is there any way the addin can remember channel mapping??

Possibly....
I realized that when I used it for the first time. At the time, I didn't have an elegant solution in code to save the channel mappings without changing a large portion of the plug-in, so I memorized the mappings. Since then, I have had a little time to think about it and have a couple of ideas that may not require as much re-write. I will take a look at the code tonight.
 
Last edited:
So far so good, the only issue I have is that after importing a papa file, it does not remember how the phonemes are mapped to the channels. That is going to get very old with the number of clips I had chopped my song into... Is there any way the addin can remember channel mapping??

I have uploaded a new version.

It hasn't been tested much yet, so you may break it, if so let me know. Once a voice is mapped in the sequence, loading other pgo files will inherit the same mapping . Be aware that this mapping is specific to each sequence.

Example - Sequence A:
1 - Define Voice Phoneme->Channel Mappings
2 - Load a new pgo file, the plugin will search for any mappings previously defined at one time or the other FOR SEQUENCE A.
3 - If one is found, it will attempt to use that mapping.
4 - If one is not found, you will have to map it manually
5 - When the sequence is saved, it will also save the database of voice name channel mappings defined for any pgo file previously loaded into that sequence. You can continue to use these mappings on subsequent loads of the sequence.

Ed
 
Hey, works great when there is a single voice. However, if there are multiples, it doesn't want to map correctly, or remember the channels assigned. I can send you a .pgo file if you like that is failing. I'm going to try to strip out the other voices on a copy of the file to see if I can get the main voice out...

Note: seems to be tied to a voice not named "Voice 1"
 
Last edited:
Hey, works great when there is a single voice. However, if there are multiples, it doesn't want to map correctly, or remember the channels assigned. I can send you a .pgo file if you like that is failing. I'm going to try to strip out the other voices on a copy of the file to see if I can get the main voice out...

Note: seems to be tied to a voice not named "Voice 1"

Send me the files and I will take a look, I will PM you the e-mail address. Multiple voices should work, keep in mind that it will only auto-map the channels if the voice names are identical to ones that you previously mapped at one point or another for that particular sequence.

Here is a hypothetical example
If you load pgo file A and it has Voice #1 and Voice #2, you will have to manually map both of these voices.

Then when you load pgo file B into the same sequence, and it has Voice #1, Voice #2, and Voice #3. It should automatically inherit the mappings for Voice #1 and Voice #2 and you will have to map Voice #3 because it has not been previously mapped.

If you then load pgo file C, into the sequence, and it has Voice #1 and Voice #3, it should automatically map both.

This was the easy scheme to implement without making a major change to how the plugin worked.

Shoot me a couple of the pgo files you are working with and the sequence and I will take a look at.
 
thank you for this- just ran my first singing pumpkin- had 20-ish papagayo chunks mapped out and dumped them into vixen 1-by-1 with very little fuss over timing, and am very pleased with the end result. 7 1/2 minute symphony orchestra version of Enter Sandman by Metallica looking great.
 
thank you for this- just ran my first singing pumpkin- had 20-ish papagayo chunks mapped out and dumped them into vixen 1-by-1 with very little fuss over timing, and am very pleased with the end result. 7 1/2 minute symphony orchestra version of Enter Sandman by Metallica looking great.

And the videos of your singing pumpkin can be found where????

LOL...
Lightman
 
Back
Top