コード例 #1
0
ファイル: elements.py プロジェクト: pmargani/sebastian
    def display(self, format="png"):
        """
        Return an object that can be used to display this sequence.
        This is used for IPython Notebook.

        :param format: "png" or "svg"
        """
        from sebastian.core.transforms import lilypond
        seq = HSeq(self) | lilypond()

        if format == "png":
            suffix = ".preview.png"
            args = ["lilypond", "--png", "-dno-print-pages", "-dpreview"]
        elif format == "svg":
            suffix = ".preview.svg"
            args = ["lilypond", "-dbackend=svg", "-dno-print-pages", "-dpreview"]

        f = tempfile.NamedTemporaryFile(suffix=suffix)
        basename = f.name[:-len(suffix)]
        args.extend(["-o"+basename, "-"])

        p = sp.Popen(args, stdin=sp.PIPE)
        p.communicate(write_lilypond.output(seq))
        if p.returncode != 0:
            # there was an error
            return None

        if not ipython:
            return f.read()
        if format == "png":
            return Image(data=f.read(), filename=f.name, format="png")
        else:
            return SVG(data=f.read(), filename=f.name)
コード例 #2
0
ファイル: elements.py プロジェクト: singingwolfboy/sebastian
    def display(self, format="png"):
        """
        Return an object that can be used to display this sequence.
        This is used for IPython Notebook.

        :param format: "png" or "svg"
        """
        from sebastian.core.transforms import lilypond
        seq = HSeq(self) | lilypond()

        if format == "png":
            suffix = ".preview.png"
            args = ["lilypond", "--png", "-dno-print-pages", "-dpreview"]
        elif format == "svg":
            suffix = ".preview.svg"
            args = ["lilypond", "-dbackend=svg", "-dno-print-pages", "-dpreview"]

        f = tempfile.NamedTemporaryFile(suffix=suffix)
        basename = f.name[:-len(suffix)]
        args.extend(["-o"+basename, "-"])

        #Pass shell=True so that if your $PATH contains ~ it will
        #get expanded. This also changes the way the arguments get
        #passed in. To work correctly, pass them as a string
        p = sp.Popen(" ".join(args), stdin=sp.PIPE, shell=True)
        stdout, stderr = p.communicate(write_lilypond.output(seq))
        if p.returncode != 0:
            # there was an error
            #raise IOError("Lilypond execution failed: %s%s" % (stdout, stderr))
            return None

        if not ipython:
            return f.read()
        if format == "png":
            return Image(data=f.read(), filename=f.name, format="png")
        else:
            return SVG(data=f.read(), filename=f.name)
コード例 #3
0
ファイル: test_lilypond.py プロジェクト: objcode/sebastian
 def test_output(self):
     pitches = HSeq({"pitch": n} for n in [-2, 0, 2, -3])
     seq = pitches | add({"octave": 5, DURATION_64: 16}) | lilypond()
     self.assertEqual(output(seq), "{ c'4 d'4 e'4 f'4 }")
コード例 #4
0
 def test_output(self):
     pitches = HSeq({"pitch": n} for n in [-2, 0, 2, -3])
     seq = pitches | add({"octave": 5, DURATION_64: 16}) | lilypond()
     self.assertEqual(output(seq), "{ c'4 d'4 e'4 f'4 }")