Giter VIP home page Giter VIP logo

tss's Introduction

Chiptune Sound Library - T'SoundSystem

What is this?

T'SoundSystem is a simple chiptune sound library. It consists of three parts, platform dependent audio stream libraries, chiptune device emulation libraries and music format playback libraries. Early version was written in C++, but now I'm rewriting everything in various languages including Java, JavaScript and C++. JavaScript version is mainly developed for now. It covers from embedded devices like an Android phone to web browsers supporting Audio Data API, or Web Audio API like latest Chrome, Firefox and Safari.

Status

Supported environment

  • Android (API Level 3 or later) / Java
  • J2SE (Java Sound API) / Java
  • Web Audio API / JavaScript
  • Audio Data API (Firefox) / JavaScript - will be deprecated soon
  • (POSIX / C++) - just a plan

Emulated devices

Device Java JavaScript C++
AY-3-8910 (PSG) OK OK -
YM2149 (PSG) OK OK -
SN76489 (PSG) OK OK -
pAPU - - -
SCC - OK -
YM2413 (OPLL) - - -
YM2203 (OPN) - - -
YM2608 (OPNA) - - -
YM2151 (OPM) - - -
ES5505 (PCM - Taito F3) - OK -
TSS - OK -
SoundFont 2 - - -
MOD - OK -

playable format

Format Java JavaScript ActionScript C++
VGM OK OK - -
AY - - - -
SND - - - -
GBS - - - -
KSS - - - -
S98 - OK - -
TSD - OK - -
TSS - OK - -
SMF - OK - -
MOD - OK - -

misc features

Features Java JavaScript ActionScript C++
LSFR seudo noise generator - OK - -
Biquad digital filter/equalizer - OK - -
Upsampling - OK - -
WebMidiLink - OK - -

Manual

MML Manul is available in English, but it is not completed. Here is very old document written in Japanese for ealier C++ version that may help.

Import as a Polymer component

<script src="../bower_components/platform/platform.js"></script>
<script src="../bower_components/polymer/polymer.js"></script>
<link ref="import" href="../bower_components/tss/js/polymer/tss.html">
<tss></tss>
<script>
window.addEventListener('WebComponentsReady', function () {
  var tss = document.getElementsByTagName('tss')[0];
  tss.createAudioLooper(); // or new tss.AudioLooper()
  ...
});
</script>

tss's People

Contributors

aike avatar sehugg avatar toyoshim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tss's Issues

Noise generator for SN76489 not working

Reported by Rasmus.Moustgaard, Feb 28, 2014

The noise generator for the Java implementation of the SN76489 doesn't seem to be working. To replicate problem run unit test 1.

TSS: ML command support

This command has been dropped from the official manual for a long time, but exists in the original TSS.

The spec-like information from the original source code follows.

compiler side:

                        case 'm':
                                if('l' == sort->peek()){        // multiple
                                        sort->get();
                                        if (!getOneParam(dt, 1, 0, 255, TSSC_ERR_MULTIPLE))
                                                goto error;
                                        data->put(0x93);
                                        data->put(dt);

driver side:

                                case 0x93:
                                        // multiple
                                        work->channel[i]->multiple = work->work[i].channelData[work->work[i].channelPos++];
                                        break;

docs directory

Now, I have a MML document as a separate Wiki page, but now that GitHub support hosting a web page through docs directory, it's nice to have the MML document and others inside docs.

TSS: reserve some characters for TSSCP, TSSCCjs, and so on

To make TSSCP works even in the feature, probably it's better to reserve some characters so that TSSCP can recognize its extended format and original format correctly. E.g., ';' should not be used in TSS's MML because it is used by TSSCP.

Also, if we want to use TSSCP on Twitter, '#' is a little troublesome because the character is used for hash tag. Probably, we should reserve another character to be an alternative, e.g., '!' could be a candidate.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.