aboutsummaryrefslogtreecommitdiff

csound-curl : simple HTTP GET and POST requests from Csound

Overview

csound-curl provides opcodes to perform basic HTTP GET and POST requests at init time and k-rate. SSL hosts are supported. It can be used with the csound-json plugin opcodes in order to effectively communicate with web services and such.

Requirements

  • Cmake >= 2.8.12
  • Csound with development headers >= 6.14.0
  • libCURL >= 7.26.0

Installation

Create a build directory at the top of the source tree, execute cmake .., make and optionally make install as root. If the latter is not used/possible then the resulting library can be used with the --opcode-lib flag in Csound. eg:

mkdir build && cd build
cmake ..
make && sudo make install

Cmake should find Csound and any other required libraries using the modules in the cmake/Modules directory and installation should be as simple as above.

Examples

Some examples are provided in the examples directory.

Opcode reference

Due to possible delays incurred by network processes, the init-time opcodes may interrupt any current activity in Csound. For example, audio may be subject to dropouts. As a result it may be ideal only to use the init time opcodes at performance initialisation, and use the k-rate opcodes if requests are required during performance.

ires, Sres curlget Surl

Perform a GET request at init time.

  • ires : HTTP response code
  • Sres : response body

  • Surl : URL to request

ires, Sres curlpost Surl, SpostData

Perform a POST request at init time.

  • ires : HTTP response code
  • Sres : response body

  • Surl : URL to request

  • SpostData : data to post, should be URL encoded if required

kdone, kres, Sres curlgetk Surl

Perform a GET request at k-rate.

  • kdone : trigger to specify if the request has completed (1 if so, 0 at all other times)
  • kres : HTTP response code
  • Sres : response body

  • Surl : URL to request

kdone, kres, Sres curlpostk Surl, SpostData

Perform a POST request at k-rate.

  • kdone : trigger to specify if the request has completed (1 if so, 0 at all other times)
  • kres : HTTP response code
  • Sres : response body

  • Surl : URL to request

  • SpostData : data to post, should be URL encoded if required

Sencoded curlurlencode Sinput

URL encode a string at init time.

  • Sinput : the string to be encoded

  • Sencoded : the encoded string

Sencoded curlurlencodek Sinput, ktrigger

URL encode a string at k-rate upon receipt of a trigger.

  • Sinput : the string to be encoded
  • ktrigger : encode the string when this is set to 1

  • Sencoded : the encoded string