yaps
(yet another playout system) is a server that tries to implement the list
and mux
Bifrost
roles in one program.
Less technically, it handles playlists for n
playd servers.
Yet another playout system
License: MIT License
Eventually, much of the logic currently in list/controller.go
and list/bifrost.go
will be applicable to other bits of the server, such as the multiplexer. There's nothing particularly tying much of it to working with lists.
Obviously, we don't want to generalise too fast too soon, but it makes sense to think about doing so in the future.
Selection is how we tell the connected player which track to load. It makes no sense for a text item to be selectable, so we should disallow it.
This needs two changes:
When a new Bifrost
is spawned on a client, it should send OHAI
, IAMA
, and initial dump responses through the response channel.
Currently, when someone presses Ctrl-C
in the baps3d console, it exits the program's main function without waiting for the controller etc. to shut down gracefully. This is not ideal =p
We're using fmt.Errorf
for errors, which is bad for the following two reasons:
ACK WHAT
) or our internal state (ACK FAIL
);This is an open question, since there are eleventy zillion different ways to handle errors in Go. Does anyone have any suggestions?
At the least, I'm thinking of just having an error type, and maybe a Blameable
interface that lets us decide whether it's a what or a fail.
For baps3d to handle BAPS3 lists, it actually needs to support load requests in the list controller.
list.List
already has a method Add
that does most of the legwork---this is mostly just connecting it up to the controller logic.
floadl index hash path
list/requests.go
handleRequest
etc. in list/controller.go
using c.list
as the List
list/bifrost.go
tloadl index hash contents
list/requests.go
handleRequest
etc. in list/controller.go
using c.list
as the List
list/bifrost.go
The baps3 spec is incomplete with regards to file and text loads, so that could do with updating. Off the top of my head, what the server should do is:
ACK WHAT
response, just return the error inside the AckResponse
for now);0...len(list)
then return an error;FLOADL
(or TLOADL
) index hash contents
---these responses already exist for handling dump requests;COUNTL new-list-count
---this response also already exists.This is no longer the official URY BAPS3 project, though at the moment I still intend to work on it in my spare time.
A new name that doesn't refer to BAPS would be nice.
baps3d
currently only communicates to stdin through a console readline. Obviously, it'll need to talk to Bifrost clients on TCP, but we haven't implemented that yet.
Much of the same logic the console currently uses will help in making the TCP server. What will need to be worked out is the best way of handling multiple clients---the controller
has half-implemented support for multiple clients but this is more so that it can have the console, TCP server, and eventually downstream player attached.
TCP servers are the bread and butter of Go, so there should be some good examples in the wild of how to do them.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.