1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//en">
<!--Converted with LaTeX2HTML 2021 (Released January 1, 2021) -->
<HTML lang="en">
<HEAD>
<TITLE>Returning Values</TITLE>
<META NAME="description" CONTENT="Returning Values">
<META NAME="keywords" CONTENT="mma-plugins">
<META NAME="resource-type" CONTENT="document">
<META NAME="distribution" CONTENT="global">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-2">
<META NAME="viewport" CONTENT="width=device-width, initial-scale=1.0">
<META NAME="Generator" CONTENT="LaTeX2HTML v2021">
<LINK REL="STYLESHEET" HREF="mma-plugins.css">
<LINK REL="next" HREF="node5.html">
<LINK REL="previous" HREF="node3.html">
<LINK REL="next" HREF="node5.html">
</HEAD>
<BODY bgcolor="#ffffff">
<DIV CLASS="navigation"><!--Navigation Panel-->
<A
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
<A
HREF="mma-plugins.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
<A
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A
HREF="node5.html">Standard Interface</A>
<B> Up:</B> <A
HREF="mma-plugins.html">Plugins</A>
<B> Previous:</B> <A
HREF="node3.html">Preset Values</A>
<BR>
<BR></DIV>
<!--End of Navigation Panel-->
<H1><A ID="SECTION00400000000000000000">
Returning Values</A>
</H1>
<P>
In order to be of any use, a plugin will need to make modifications to
your song or library file. You can, if you want, make these inside
your function. However, we don't suggest you do. The API can change in
the future. Plus, many settings rely on other basic
<FONT Face="Serif" Color="Navy"><I>MMA</I></FONT> settings
which are easy to miss. Much more robust is the method of creating
string(s) with native (or even other plugin) commands and returning
the to the main script.
<P>
This is easy to do.
<P>
Just create a list of commands and push them onto the programs input
stack. Examine the <SPAN CLASS="texttt"><SPAN CLASS="textbf">hello/plugin.py</SPAN></SPAN> module for actual code, but
as a summary you'll need to:
<P>
<OL>
<LI>Create lines for each line of code. In our example we use the
array “ret” and simply append each line to the array.
<P>
</LI>
<LI>Process each of the lines into an acceptable format. This is
easy, it's just a matter of converting the string to a list of
words. In our example we do:
<P>
<code> ret = [l.split() for l in ret] </code>
<P>
</LI>
<LI>Finally, return the value to the input queue.
<P>
<code> gbl.inpath.push(ret, [gbl.lineno] * len(ret)) </code>
<P>
here we set the line number of each returned line to be the same as
the current line being processed. Note: we're assuming that your
plugin has imported “gbl” as detailed above.
<P>
</LI>
</OL>
<P>
<DIV CLASS="navigation"><HR>
<!--Navigation Panel-->
<A
HREF="node5.html">
<IMG WIDTH="37" HEIGHT="24" ALT="next" SRC="next.png"></A>
<A
HREF="mma-plugins.html">
<IMG WIDTH="26" HEIGHT="24" ALT="up" SRC="up.png"></A>
<A
HREF="node3.html">
<IMG WIDTH="63" HEIGHT="24" ALT="previous" SRC="prev.png"></A>
<BR>
<B> Next:</B> <A
HREF="node5.html">Standard Interface</A>
<B> Up:</B> <A
HREF="mma-plugins.html">Plugins</A>
<B> Previous:</B> <A
HREF="node3.html">Preset Values</A></DIV>
<!--End of Navigation Panel-->
</BODY>
</HTML>
|