Milkdrop EEL2 Parser

0.0.4 · maintenance · verified Sun Apr 19

The `milkdrop-eel-parser` library provides a parser for the Nullsoft/Cockos EEL2 (Expression Evaluation Library 2) scripting language, primarily used in the Milkdrop music visualizer. It is designed to convert EEL2 equations into JavaScript, enabling their use in modern web-based visualizers like Butterchurn. Currently at version `0.0.4`, this project is predominantly written in ClojureScript and compiles to a JavaScript bundle. Its development appears to be in maintenance mode, with no significant updates in the last 7-8 years. Key differentiators include its niche focus on EEL2 parsing and its integration into the broader Butterchurn ecosystem, allowing developers to bring legacy Milkdrop preset logic to the browser environment.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to include the `milkdrop-eel-parser` in an HTML page via a `<script>` tag and use its global `MilkdropEELParser` object to parse and convert EEL2 expressions into executable JavaScript.

<!-- index.html -->
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Milkdrop EEL Parser Quickstart</title>
</head>
<body>
  <h1>Milkdrop EEL2 Parser Example</h1>
  <p>Original EEL2 Expression: <code>'x = x + 0.1;'</code></p>
  <p>Parsed Output (console): <code id="parsedOutput"></code></p>
  <p>Converted JavaScript (console): <code id="convertedOutput"></code></p>

  <!-- Load the library via CDN -->
  <script src="https://unpkg.com/milkdrop-eel-parser/release/md-parser.min.js"></script>

  <script>
    if (window.MilkdropEELParser) {
      const eelExpression = 'x = x + 0.1;';

      // Parse the EEL2 expression
      const parsedAst = window.MilkdropEELParser.parseExpression(eelExpression);
      document.getElementById('parsedOutput').textContent = 'Check console for AST';
      console.log('Parsed AST:', parsedAst);

      // Convert the EEL2 expression to JavaScript
      const jsFunctionString = window.MilkdropEELParser.convertExpression(eelExpression);
      document.getElementById('convertedOutput').textContent = jsFunctionString;
      console.log('Converted JavaScript function string:', jsFunctionString);

      // Example of executing the converted JS (for demonstration, be careful with eval in prod)
      // Note: `x` would typically be part of a larger state object in a real visualizer
      let x = 0;
      const fn = new Function('x', 'return (' + jsFunctionString + ');');
      console.log('Initial x:', x);
      for (let i = 0; i < 5; i++) {
        x = fn(x);
        console.log(`x after iteration ${i + 1}:`, x);
      }

    } else {
      console.error('MilkdropEELParser not found. Is the script loaded correctly?');
    }
  </script>
</body>
</html>

view raw JSON →