| Did you know ... | Search Documentation: |
| Packs (add-ons) for SWI-Prolog |
| Title: | OSC input/output via liblo |
|---|---|
| Rating: | Not rated. Create the first rating! |
| Latest version: | 0.5.0 |
| SHA1 sum: | 62937a7b7ef55c8cc516dd072b32bb7cb0a17d4c |
| Author: | Samer Abdallah <samer.abdallah.00@gmail.com> |
| Download URL: | https://github.com/samer--/plosc.git |
No reviews. Create the first review!.
| Version | SHA1 | #Downloads | URL |
|---|---|---|---|
| 0.5.0 | 62937a7b7ef55c8cc516dd072b32bb7cb0a17d4c | 3 | https://github.com/samer--/plosc.git |
| 0.4.6 | 2733aa8042ac7c054f533ac62dcbed6d44074457 | 24 | https://github.com/samer--/plosc.git |
| 0.4.5 | c25bcc975995c1f5f33efb2609306c360123a55d | 6 | https://github.com/samer--/plosc.git |
| 0.4.4 | bf4ef6875745d02f71a0e2324c171c11817c58b3 | 13 | https://code.soundsoftware.ac.uk/projects/plosc/repository/raw/release/plosc-0.4.4.tgz |
| 0.4.3 | bf3c8b80530d65c6b1afccdac243e346f03ede34 | 1 | https://code.soundsoftware.ac.uk/projects/plosc/repository/raw/release/plosc-0.4.3.tgz |
| 0.4.2 | 23c841f1352b7f4260efaddbddd29c728e90a7ed | 5 | http://code.soundsoftware.ac.uk/projects/plosc/repository/raw/release/plosc-0.4.2.tgz |
| 0.4.1 | 4e90038e345e588f426ddfb762e887c2cca2c8c5 | 1 | http://code.soundsoftware.ac.uk/projects/plosc/repository/raw/release/plosc-0.4.1.tgz |
| 0.4 | 214795f4233bca4d29532894a25f8aad582a7a09 | 5 | https://code.soundsoftware.ac.uk/projects/plosc/repository/raw/release/plosc-0.4.tgz |
OSC client and server for SWI Prolog
This module allows Prolog code to send and receive Open Sound Control (OSC) messages using liblo.
In SWI Prolog, do pack_install(plosc, []).
In the root directory of this package, type
$ make install-me
This example talks to a Supercollider server running on the local machine listening to port 57110. It sends a message to create a Synth from SynthDef 'Square' with some given parameters.
:- use_module(library(plosc)).
:- dynamic osc_addr/1.
init :-
osc_mk_address(localhost,57110, A),
assert(osc_addr(A)).
bing :-
osc_addr(A),
get_time(T),
osc_send(A,'/s_new',[string('Square'),int(-1),int(0),int(1),string('freq'),float(440)],T).
:- init, bing.
The following code shows how to make an OSC server.
:- use_module(library(plosc)).
dumposc(P,A) :- writeln(msg(P,A)).
forward(P,[string(Host),int(Port),string(Msg)|Args]) :-
osc_mk_address(Host,Port,Addr),
osc_send(Addr,Msg,Args).
:- osc_mk_server(7770,S),
osc_mk_address(localhost,7770,P),
osc_add_handler(S,'/fish',any,dumposc),
osc_add_handler(S,'/fwd',any,forward),
assert(server(S,P)).
% start and stop the asynchronous server
start :- server(S,_), osc_start_server(S).
stop :- server(S,_), osc_stop_server(S).
% run the server synchronously - send /plosc/stop to stop it
run :- server(S,_), osc_run_server(S).
% send a message to the current server
send(M,A) :- server(_,P), osc_send(P,M,A).
To run the code in the example directory, from the shell type
$ swipl -s example/testosc.pl
The message sending predicates are limited in the types of arguments they can use - currently, the following functors can be used:
Head functor OSC Type ------------ -------- int i - 32 bit integer float f - Single precision float double d - Double precision float string s - String symbol S - Symbol true T - True false F - False nil N - Nil inf I - Infinitum or Impuse
BLOBs, 64 bit integers, 8 bit integers, time tags and MIDI messages cannot be sent. However, all types can be received except BLOBs.
Pack contains 8 files holding a total of 72.1K bytes.