Giter Club home page Giter Club logo

ecantorix's Introduction

eCantorix

(*)       (*)
 |         |
 |--=====--|
 |  |||||  |
 |  |||||  |
 ;  |||||  :
(   |||||   )
 \  |||||  /
  `-=====-'

eCantorix is a singing synthesis frontend for espeak. It works by using espeak to generate raw speech samples, then adjusting their pitch and length and finally creating a LMMS project file referencing the samples in sync to the input file.

Dependencies

  • espeak
  • sox
  • LMMS
  • Perl * Config::Tiny * MIDI::Opus * Math::FFT

Installation

Under Linux, do:

sudo apt-get install espeak sox libmidi-perl

sudo perl -MCPAN -e 'install Math::FFT'

To build the examples, also do:

sudo apt-get install abcmidi

Building the examples

Under Linux, do:

cd examples

make

cd ..

How to use

The input file for eCantorix is a slightly more strict MIDI karaoke (.kar) file.

Lyrics have to be stored as text events in the same track as the notes associated with them.

A lyrics event then covers all notes starting between itself and the next text event.

You can use an empty text event to end the range of notes covered by lyrics.

In case the range of a lyrics event covers multiple notes, the notes must be all connected (legato), as they will be performed as a single audio sample with pitch shifting. This feature however yields poor quality lyrics and is not recommended - it tends to sound better to rather use separate lyrics events and thus split a syllable into two, like "soft" -> "saw-oft".

For polyphony, you can either use multiple tracks (with each having their own instance of the lyrics), or a single track and have the notes placed on multiple MIDI channels (they then will share the lyrics).

Once you have such an input file, run:

perl ecantorix.pl -O mmp -o foo.mmp foo.mid

The result is a LMMS project file that can be processed to an audio file using:

lmms -o foo.wav --render foo.mmp

You can also render to a wave file directly:

perl ecantorix.pl -O wav -o foo.wav foo.mid

Also, there is now preliminary support for Vocaloid (VSQ) files. The phonemes are not used yet, though, as doing this would require an external mapping table that depends on the Vocaloid voice in use.

License

This software, as well as espeak, is licensed under the GPL version 3 (see the included file COPYING) or any later version, at your choice.

The author believes that the license of the program does not affect licensing or copyright of the output files; therefore you can use the output files for any purpose of your liking.

The example files are licensed as follows:

examples/entchen.abc
This is a wellknown German children's tune. Public domain (unknown author, but sure dead for more than 70 years).
examples/nacht-v.abc
This is from the Zauberflöte (Magic Flute). Public domain (Wolfgang Amadeus Mozart).
examples/sadi-moma.abc
This is the Free Software Song. No copyright is claimed on this song or its ABC typesetting by me, Richard Stallman, or the FSF.
examples/sadi-moma-pitchbend.abc
This is the Free Software Song. No copyright is claimed on this song or its ABC typesetting by me, Richard Stallman, or the FSF.
examples/sadi-moma-qon.abc
This is the Free Software Song. No copyright is claimed on this song or its ABC typesetting by me, Richard Stallman, or the FSF.
examples/sarastro.abc
This is from the Zauberflöte (Magic Flute). Public domain (Wolfgang Amadeus Mozart).

ecantorix's People

Contributors

divverent avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ecantorix's Issues

lmms: qUncompress: Z_DATA_ERROR: Input data is corrupted

I tried to build the entchen.wav following the README.md but I'm running into the error:

qUncompress: Z_DATA_ERROR: Input data is corrupted

when executing lmms -o entchen.wav --render entchen.mmp

  • I cloned the repository
  • created the entchen.mid make entchen.mid
  • build the mmp file ecantorix.pl -o mmp -o entchen.mmp entchen.mid
  • executing lmms -o entchen.wav --render entchen.mmp result in:
    Notice: could not set realtime priority.
    VST sync support disabled in your configuration
    loading project...
    qUncompress: Z_DATA_ERROR: Input data is corrupted
    at line 1 column "error occurred while parsing element"
    QWidget: Cannot create a QWidget when no GUI is being used
    Aborted

lmms version: lmms 1.0.0+stable-0ubuntu1 amd64 Linux Multimedia Studio

Any idea?

Provide working example?

This project is awesome but now that Perl has fallen out of fashion, the source has succumbed to bit rot. Though I'm sure I could install the proper dependencies if I devoted a significant amount of time to it, as of now, I'm having enough trouble that it's preventing me from getting up and running.

Would it be possible to do one or all of the following:

  • Provide a Docker image that has all the dependencies pre-built so people can use it 'out of the box'?
  • Provide documentation on what the overall process is so that we can recreate it in another language? Intent is much easier to understand from a document than reading code (imo)
  • Provide an updated version in some other language, like Python or Javascript, to make it more accessible/easier to use?

Use of uninitialized value $utautempo in division (/) at ust2mid.pl line 75.

[elonsatoshi@archlinux-desktop ecantorix]$ perl ust2mid.pl ~/UTAU/me\ rindo\ eng.ust > ~/UTAU/merindo.mid Use of uninitialized value $utautempo in division (/) at ust2mid.pl line 75. Illegal division by zero at ust2mid.pl line 75. [elonsatoshi@archlinux-desktop ecantorix]$

There's no documentation on how to use ust2mid.pl. Does it even work with the latest version of Perl?

How to install dependencies of eCantorix

I'm using a Debian derivate, and tried to install eCantorix one or two month ago. Trying to run, I got some error messages. How do I install eCantorix and its dependencies?

PS: Youtube GEMA censors your uploaded media, you can upload them to my MediaGoblin Instance (http://www.isengaara.de/) instead.

Cannot build examples

I am trying to build the examples but running make in the examples directory returns:

bc2midi entchen.abc 0 -o entchen.mid
4.84 January 20 2023 abc2midi
writing MIDI file entchen.mid
mkdir -p cache
../ecantorix.pl -C entchen.conf -c cache -O wav -o entchen.wav entchen.mid > entchen.ass
Can't locate Math/FFT.pm in @INC (you may need to install the Math::FFT module) (@INC contains: /home/$USER/Desktop/ecantorix /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.36.0 /usr/local/share/perl/5.36.0 /usr/lib/x86_64-linux-gnu/perl5/5.36 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl-base /usr/lib/x86_64-linux-gnu/perl/5.36 /usr/share/perl/5.36 /usr/local/lib/site_perl) at ../ecantorix.pl line 26.
BEGIN failed--compilation aborted at ../ecantorix.pl line 26.
make: *** [Makefile:30: entchen.wav] Error 2
rm entchen.mid

Is there a dependency I'm missing? I can't find a perl package matching math::fft

How to use the make targets including conf files?

I didn't find any documentation for the project, how to use make for generating music from .abc files. But as I want to render songs in German, I have to use .conf files. Without a config file defining German as the target language, the songs are rendered with english phonemes.

I tried to understand the targets in the Makefile, especially the three targets including .conf files, but tbh I'm also not a great Makefile expert. I don't know, how to read the rules in the Makefile and the make documentation failed to enlighten me as well... :-)

So could someone please explain to me, which arguments in which order make expects for the targets utilizing the .conf files?

%.mmp %.ass: %.mid %.conf espeak-data
	mkdir -p cache
	$(ECANTORIX) -C $*.conf -c cache -O mmp -o $*.mmp $< > $*.ass

%.wav %.ass: %.mid %.conf espeak-data
	mkdir -p cache
	$(ECANTORIX) -C $*.conf -c cache -O wav -o $*.wav $< > $*.ass

%-xon.mid %.ass: %.mid %.conf espeak-data
	mkdir -p cache
	$(ECANTORIX) -C $*.conf -c cache -O mid --output-mid-prefix=vocals: -o $*-xon.mid $< > $*.ass

GUI for creating scores

Hello there.
Is it there a way to create eCantorix input files with a GUI?
Even an external App, as long as it works.

Regards.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.