GithubHelp home page GithubHelp logo

bintracker / bintracker Goto Github PK

View Code? Open in Web Editor NEW
385.0 385.0 9.0 3.78 MB

A hackable Chiptune Audio Workstation. https://bintracker.org

License: MIT License

Scheme 89.37% Makefile 0.97% Lua 0.80% Assembly 8.07% HTML 0.79%

bintracker's Introduction

Bintracker

A hackable Chiptune Audio Workstation for the 21st Century

Bintracker Screenshot

About

Bintracker is an advanced, cross-platform chiptune music editor that supports many different sound routines on a wide range of 8-bit and 16-bit target systems. It is also an interactive programming environment running on top of Chicken Scheme.

At a basic level, Bintracker looks and feels like a music tracker, and can perfectly well be used as such. However, it also incorporates a range of features normally found in digital audio workstations and audio programming languages.

Both the editor itself, as well as the range of supported chiptune drivers and target platforms can be extended through plugins.

Current State

Bintracker is at alpha stage. While the basics are implemented, most of the advanced features are still in the making. Also, there are many bugs and missing bits and pieces here and there, so expect frequent crashes.

Things you can do at this point include:

  • Compose music for various sound engines on a limited range of target systems
  • Export music modules for target hardware
  • Assemble code and control external emulators
  • Control the application through the Scheme language shell (REPL)
  • Add your own sound engines and plug-ins

Target Systems

Currently, the following target systems are supported with one or more sound engines:

  • Atari 2600/VCS
  • Dragon 32
  • Fairchild Channel F
  • Exidy Sorcerer 4 Voice Music System
  • Sinclair ZX Spectrum (beeper)
  • Tandy Color Computer 3
  • TRS-80 MC-10

Eventually, Bintracker will feature sound engines on a wide range of target platforms, with a focus on lesser known systems.

Setup

Windows users can grab the latest alpha build on the Release page. A bit of manual configuration is required, see the instructions here.

Users on other operating systems need to compile Bintracker from source. Only Linux builds have been tested so far. macOS builds should be possible with some minor adjustments, though this is currently unsupported. Please get in touch if you manage to get a macOS build running.

Contributing

Contributions are most welcome! Besides working on the Bintracker source itself, there are a lot of different tasks that need help, from designing icons, testing, writing demo tunes, creating tutorials and documentation, to running infrastructure, writing plugins, and adding support for new sound drivers.

Check out the Contributor's Guide for more information on how to get started contributing to Bintracker. If you need help or have any questions, feel free to open an issue here on Github, or send us a message.

bintracker's People

Contributors

lokitoon avatar nyanpasu64 avatar utz82 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bintracker's Issues

Possible to use sql-de-lite egg instead of sqlite3 egg?

I'm having problems installing the sqlite3 egg on my machine but found another egg that embeds sqlite3 in an egg instead of using the sqlite3 that it finds on the system.

This egg is called sql-de-lite

https://wiki.call-cc.org/eggref/5/sql-de-lite

Would it be possible to make bintracker use sql-de-lite instead of the sqlite3 egg? Or is the sql-de-lite missing some features etc that would make that not feasible? Am not a Scheme programmer myself, so am not able to judge the quality of this egg. All I know is that installing the sql-de-lite egg was very easy while sqlite3 egg seems a bit more difficult to install for me because the version of sqlite3 on my machine has some differences from what the sqlite3 egg wants.

slow and jaggy sound rendering

When using default settings, mame opens in a big window, using filters, altering the whole experience of using bintracker because the sound renders badly, with some slowdown and jaggy sound.

I've noticed lowering the mame window makes the sound better.

I've also put those options in emulators.scm:

"-nomax" "-video" "opengl" "-nofilter"

it seems to help a bit.

fast scrolling with arrow crashes bintracker

when scrolling with arrow it sometimes (rather often) crashes the tracker, leaving this message in the console:

too many nested evaluations (infinite loop?)
while executing
"autoName"
(procedure "callToScm" line 3)
invoked from within
"callToScm g251 Up"
(command bound to event)

Zero rows crash Bintracker

OBS_Recording_03-07.mp4
Warning (#<thread: thread1723>): in thread: (list-tail) bad argument type: #f

	Call history:

	../bt-gui.scm:3745: ui-blockview-get-active-zone	  
	../bt-gui.scm:1834: ui-blockview-get-current-row	  
	../bt-gui.scm:1759: ui-blockview-get-cursor-position	  
	../bt-gui.scm:1754: ui-blockview-mark->position	  
	../bt-gui.scm:1738: coops#slot-value	  
	../bt-gui.scm:1738: g4243	  
	../bt-gui.scm:1740: chicken.string#string-split	  
	../bt-gui.scm:1740: g4254	  
	../bt-gui.scm:1740: g4254	  
	../bt-gui.scm:1835: ui-blockview-start+end-positions	  
	../bt-gui.scm:1823: coops#slot-value	  
	../bt-gui.scm:1823: get-positions	  
	../bt-gui.scm:1817: srfi-1#null-list?	  
	../bt-gui.scm:1821: get-positions	  
	../bt-gui.scm:1817: srfi-1#null-list?	  

mame starts and capture the mouse

if mame could start without capturing the mouse, it would provide a better bintracker experience.

At the moment, after opening a song, when mame starts, it captures the mouse (the pointer will disappear) and I have to use "alt" + "tab" to get my mouse again.

I've looked at the man pages, and this option doesn't seems to be possible.

.asm output for a2600 fails to build with DASM 2.20.14.

Below is the error output by dasm when trying to assemble a .asm file output by the latest version of bintracker. This used the tiatune engine.

--- Unresolved Symbol List
x80                      0000 ????         (R )
continue_ch1             ffffffffffffff90 ????             
wait_ch1                 ffffffffffffff90 ????             
x81                      0000 ????         (R )
continue_ch2             ffffffffffffff90 ????             
wait_ch2                 ffffffffffffff90 ????             
SUM1L                    ffffffffffffff90 ????             
SUM2L                    ffffffffffffff90 ????             
current                  0000 ????         (R )
WAVEP1                   ffffffffffffff90 ????             
WAVEP2                   ffffffffffffff90 ????             
symbol                   0000 ????         (R )
FREQ1H                   ffffffffffffff90 ????             
wait_ch1x                ffffffffffffff90 ????             
layercode                0000 ????         (R )
origin                   0000 ????         (R )
FREQ2H                   ffffffffffffff90 ????             
wait_ch2x                ffffffffffffff90 ????             
FREQ1L                   ffffffffffffff90 ????             
FREQ2L                   ffffffffffffff90 ????             
ref                      0000 ????         (R )
SUM1H                    ffffffffffffff90 ????             
SUM2H                    ffffffffffffff90 ????             
--- 23 Unresolved Symbols


loop2.asm (50): error: Unknown Mnemonic 'ldx'.
loop2.asm (51): error: Unknown Mnemonic 'txa'.
loop2.asm (52): error: Label mismatch...
 --> _l1 f200                  
loop2.asm (53): error: Unknown Mnemonic 'dex'.
loop2.asm (54): error: Unknown Mnemonic 'txs'.
loop2.asm (55): error: Unknown Mnemonic 'pha'.
loop2.asm (56): error: Unknown Mnemonic 'bne'.
loop2.asm (59): error: Unknown Mnemonic 'ldx'.
loop2.asm (61): error: Unknown Mnemonic 'lda'.
loop2.asm (62): error: Unknown Mnemonic 'sta'.
loop2.asm (63): error: Unknown Mnemonic 'inx'.
loop2.asm (64): error: Unknown Mnemonic 'cpx'.
loop2.asm (65): error: Unknown Mnemonic 'bne'.
loop2.asm (67): error: Unknown Mnemonic 'lda'.
loop2.asm (68): error: Unknown Mnemonic 'sta'.
loop2.asm (69): error: Unknown Mnemonic 'sta'.
loop2.asm (70): error: Unknown Mnemonic 'lda'.
loop2.asm (71): error: Unknown Mnemonic 'sta'.
loop2.asm (72): error: Unknown Mnemonic 'sta'.
loop2.asm (73): error: Unknown Mnemonic 'sta'.
loop2.asm (74): error: Unknown Mnemonic 'lda'.
loop2.asm (75): error: Unknown Mnemonic 'sta'.
loop2.asm (76): error: Unknown Mnemonic 'sta'.
loop2.asm (77): error: Unknown Mnemonic 'lda'.
loop2.asm (78): error: Unknown Mnemonic 'sta'.
loop2.asm (79): error: Unknown Mnemonic 'sta'.
loop2.asm (80): error: Unknown Mnemonic 'sta'.
loop2.asm (81): error: Unknown Mnemonic 'sta'.
loop2.asm (82): error: Unknown Mnemonic 'sta'.
loop2.asm (83): error: Unknown Mnemonic 'sta'.
loop2.asm (84): error: Unknown Mnemonic 'lda'.
loop2.asm (85): error: Unknown Mnemonic 'sta'.
loop2.asm (86): error: Unknown Mnemonic 'sta'.
loop2.asm (87): error: Unknown Mnemonic 'sta'.
loop2.asm (90): error: Unknown Mnemonic 'ldx'.
loop2.asm (91): error: Unknown Mnemonic 'lda'.
loop2.asm (92): error: Unknown Mnemonic 'beq'.
loop2.asm (94): error: Unknown Mnemonic 'sta'.
loop2.asm (95): error: Unknown Mnemonic 'lda'.
loop2.asm (96): error: Unknown Mnemonic 'sta'.
loop2.asm (97): error: Unknown Mnemonic 'inx'.
loop2.asm (98): error: Unknown Mnemonic 'stx'.
loop2.asm (99): error: Unknown Mnemonic 'ldy'.
loop2.asm (102): error: Unknown Mnemonic 'lda'.
loop2.asm (103): error: Unknown Mnemonic 'beq'.
loop2.asm (105): error: Unknown Mnemonic 'sta'.
loop2.asm (106): error: Unknown Mnemonic 'bmi'.
loop2.asm (108): error: Unknown Mnemonic 'iny'.
loop2.asm (109): error: Unknown Mnemonic 'lda'.
loop2.asm (110): error: Unknown Mnemonic 'tax'.
loop2.asm (111): error: Unknown Mnemonic 'lsr'.
loop2.asm (112): error: Unknown Mnemonic 'lsr'.
loop2.asm (113): error: Unknown Mnemonic 'lsr'.
loop2.asm (114): error: Unknown Mnemonic 'sta'.
loop2.asm (115): error: Unknown Mnemonic 'txa'.
loop2.asm (116): error: Unknown Mnemonic 'and'.
loop2.asm (117): error: Unknown Mnemonic 'tax'.
loop2.asm (118): error: Unknown Mnemonic 'lda'.
loop2.asm (119): error: Unknown Mnemonic 'sta'.
loop2.asm (121): error: Unknown Mnemonic 'iny'.
loop2.asm (122): error: Unknown Mnemonic 'txa'.
loop2.asm (123): error: Unknown Mnemonic 'cmp'.
loop2.asm (124): error: Unknown Mnemonic 'bcs'.
loop2.asm (125): error: Unknown Mnemonic 'lda'.
loop2.asm (126): error: Unknown Mnemonic 'tax'.
loop2.asm (127): error: Unknown Mnemonic 'lda'.
loop2.asm (128): error: Unknown Mnemonic 'sta'.
loop2.asm (129): error: Unknown Mnemonic 'lda'.
loop2.asm (130): error: Unknown Mnemonic 'sta'.
loop2.asm (131): error: Unknown Mnemonic 'jmp'.
loop2.asm (133): error: Unknown Mnemonic 'bne'.
loop2.asm (134): error: Unknown Mnemonic 'lda'.
loop2.asm (135): error: Unknown Mnemonic 'tax'.
loop2.asm (136): error: Unknown Mnemonic 'lda'.
loop2.asm (137): error: Unknown Mnemonic 'sta'.
loop2.asm (138): error: Unknown Mnemonic 'lda'.
loop2.asm (139): error: Unknown Mnemonic 'sta'.
loop2.asm (140): error: Unknown Mnemonic 'jmp'.
loop2.asm (142): error: Unknown Mnemonic 'lda'.
loop2.asm (143): error: Unknown Mnemonic 'tax'.
loop2.asm (144): error: Unknown Mnemonic 'lda'.
loop2.asm (145): error: Unknown Mnemonic 'sta'.
loop2.asm (146): error: Unknown Mnemonic 'lda'.
loop2.asm (147): error: Unknown Mnemonic 'sta'.
loop2.asm (150): error: Unknown Mnemonic 'bit'.
loop2.asm (151): error: Unknown Mnemonic 'bvs'.
loop2.asm (153): error: Unknown Mnemonic 'iny'.
loop2.asm (154): error: Unknown Mnemonic 'lda'.
loop2.asm (155): error: Unknown Mnemonic 'tax'.
loop2.asm (156): error: Unknown Mnemonic 'lsr'.
loop2.asm (157): error: Unknown Mnemonic 'lsr'.
loop2.asm (158): error: Unknown Mnemonic 'lsr'.
loop2.asm (159): error: Unknown Mnemonic 'sta'.
loop2.asm (160): error: Unknown Mnemonic 'txa'.
loop2.asm (161): error: Unknown Mnemonic 'and'.
loop2.asm (162): error: Unknown Mnemonic 'tax'.
loop2.asm (163): error: Unknown Mnemonic 'lda'.
loop2.asm (164): error: Unknown Mnemonic 'sta'.
loop2.asm (166): error: Unknown Mnemonic 'iny'.
loop2.asm (167): error: Unknown Mnemonic 'txa'.
loop2.asm (168): error: Unknown Mnemonic 'cmp'.
loop2.asm (169): error: Unknown Mnemonic 'bcs'.
loop2.asm (170): error: Unknown Mnemonic 'lda'.
loop2.asm (171): error: Unknown Mnemonic 'tax'.
loop2.asm (172): error: Unknown Mnemonic 'lda'.
loop2.asm (173): error: Unknown Mnemonic 'sta'.
loop2.asm (174): error: Unknown Mnemonic 'lda'.
loop2.asm (175): error: Unknown Mnemonic 'sta'.
loop2.asm (176): error: Unknown Mnemonic 'jmp'.
loop2.asm (178): error: Unknown Mnemonic 'bne'.
loop2.asm (179): error: Unknown Mnemonic 'lda'.
loop2.asm (180): error: Unknown Mnemonic 'tax'.
loop2.asm (181): error: Unknown Mnemonic 'lda'.
loop2.asm (182): error: Unknown Mnemonic 'sta'.
loop2.asm (183): error: Unknown Mnemonic 'lda'.
loop2.asm (184): error: Unknown Mnemonic 'sta'.
loop2.asm (185): error: Unknown Mnemonic 'jmp'.
loop2.asm (187): error: Unknown Mnemonic 'lda'.
loop2.asm (188): error: Unknown Mnemonic 'tax'.
loop2.asm (189): error: Unknown Mnemonic 'lda'.
loop2.asm (190): error: Unknown Mnemonic 'sta'.
loop2.asm (191): error: Unknown Mnemonic 'lda'.
loop2.asm (192): error: Unknown Mnemonic 'sta'.
loop2.asm (195): error: Unknown Mnemonic 'iny'.
loop2.asm (197): error: Unknown Mnemonic 'lda'.
loop2.asm (198): error: Unknown Mnemonic 'and'.
loop2.asm (199): error: Unknown Mnemonic 'sta'.
loop2.asm (200): error: Unknown Mnemonic 'jmp'.
loop2.asm (207): error: Unknown Mnemonic 'clc'.
loop2.asm (208): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (209): error: Unknown Mnemonic 'lda'.
loop2.asm (210): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (211): error: Unknown Mnemonic 'adc'.
loop2.asm (212): error: Unknown Mnemonic 'sta'.
loop2.asm (213): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (214): error: Unknown Mnemonic 'lda'.
loop2.asm (215): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (216): error: Unknown Mnemonic 'adc'.
loop2.asm (217): error: Unknown Mnemonic 'sta'.
loop2.asm (219): error: Unknown Mnemonic 'bcc'.
loop2.asm (220): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (221): error: Unknown Mnemonic 'jmp'.
loop2.asm (223): error: Syntax Error '.(+ #x80 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (224): error: Unknown Mnemonic 'clc'.
loop2.asm (225): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (226): error: Unknown Mnemonic 'lda'.
loop2.asm (227): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (228): error: Unknown Mnemonic 'adc'.
loop2.asm (229): error: Unknown Mnemonic 'sta'.
loop2.asm (230): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (231): error: Unknown Mnemonic 'lda'.
loop2.asm (232): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (233): error: Unknown Mnemonic 'adc'.
loop2.asm (234): error: Unknown Mnemonic 'sta'.
loop2.asm (236): error: Unknown Mnemonic 'bcc'.
loop2.asm (237): error: Syntax Error '.(+ #x81 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (238): error: Unknown Mnemonic 'jmp'.
loop2.asm (240): error: Syntax Error '.(+ #x80 (- current-origin (symbol-ref 'playercode)))'.
loop2.asm (241): error: Unknown Mnemonic 'dec'.
loop2.asm (243): error: Unknown Mnemonic 'bne'.
loop2.asm (245): error: Unknown Mnemonic 'dec'.
loop2.asm (246): error: Unknown Mnemonic 'bne'.
loop2.asm (249): error: Unknown Mnemonic '.(if'.
loop2.asm (250): error: Unknown Mnemonic '" hlt"'.
loop2.asm (251): error: Unknown Mnemonic '" jmp rdPtn")'.
loop2.asm (254): error: Syntax Error '.(- current-origin (+ #x80 (symbol-ref 'playercode)))'.
loop2.asm (255): error: Unknown Mnemonic 'lda'.
loop2.asm (256): error: Unknown Mnemonic 'lda'.
loop2.asm (257): error: Unknown Mnemonic 'lda'.
loop2.asm (258): error: Syntax Error '.(- current-origin (+ #x80 (symbol-ref 'playercode)))'.
loop2.asm (259): error: Unknown Mnemonic 'lda'.
loop2.asm (260): error: Unknown Mnemonic 'lda'.
loop2.asm (261): error: Unknown Mnemonic 'nop'.
loop2.asm (262): error: Unknown Mnemonic 'nop'.
loop2.asm (263): error: Unknown Mnemonic 'jmp'.
loop2.asm (266): error: Syntax Error '.(- current-origin (+ #x80 (symbol-ref 'playercode)))'.
loop2.asm (267): error: Unknown Mnemonic 'lda'.
loop2.asm (268): error: Unknown Mnemonic 'lda'.
loop2.asm (269): error: Unknown Mnemonic 'lda'.
loop2.asm (270): error: Syntax Error '.(- current-origin (+ #x80 (symbol-ref 'playercode)))'.
loop2.asm (271): error: Unknown Mnemonic 'lda'.
loop2.asm (272): error: Unknown Mnemonic 'lda'.
loop2.asm (273): error: Unknown Mnemonic 'nop'.
loop2.asm (274): error: Unknown Mnemonic 'nop'.
loop2.asm (275): error: Unknown Mnemonic 'jmp'.
loop2.asm (281): error: Unknown Mnemonic '.db'.
loop2.asm (282): error: Unknown Mnemonic '.db'.
loop2.asm (283): error: Unknown Mnemonic '.db'.
loop2.asm (284): error: Unknown Mnemonic '.db'.
loop2.asm (285): error: Unknown Mnemonic '.db'.
loop2.asm (286): error: Unknown Mnemonic '.db'.
loop2.asm (289): error: Unknown Mnemonic '.db'.
loop2.asm (290): error: Unknown Mnemonic '.db'.
loop2.asm (291): error: Unknown Mnemonic '.db'.
loop2.asm (292): error: Unknown Mnemonic '.db'.
loop2.asm (293): error: Unknown Mnemonic '.db'.
loop2.asm (294): error: Unknown Mnemonic '.db'.
loop2.asm (297): error: Unknown Mnemonic '.db'.
loop2.asm (298): error: Unknown Mnemonic '.db'.
loop2.asm (299): error: Unknown Mnemonic '.db'.
loop2.asm (300): error: Unknown Mnemonic '.db'.
loop2.asm (301): error: Unknown Mnemonic '.db'.
loop2.asm (310): error: Unknown Mnemonic 'lda'.
loop2.asm (311): error: Unknown Mnemonic 'lda'.
loop2.asm (312): error: Unknown Mnemonic 'lda'.
loop2.asm (313): error: Unknown Mnemonic 'lda'.
loop2.asm (314): error: Unknown Mnemonic 'eor'.
loop2.asm (315): error: Unknown Mnemonic 'sta'.
loop2.asm (316): error: Unknown Mnemonic 'and'.
loop2.asm (317): error: Unknown Mnemonic 'sta'.
loop2.asm (318): error: Unknown Mnemonic 'jmp'.
loop2.asm (323): error: Unknown Mnemonic 'dec'.
loop2.asm (324): error: Unknown Mnemonic 'bne'.
loop2.asm (325): error: Unknown Mnemonic 'lda'.
loop2.asm (326): error: Unknown Mnemonic 'eor'.
loop2.asm (327): error: Unknown Mnemonic 'sta'.
loop2.asm (328): error: Unknown Mnemonic 'beq'.
loop2.asm (329): error: Unknown Mnemonic 'and'.
loop2.asm (330): error: Unknown Mnemonic 'sta'.
loop2.asm (331): error: Unknown Mnemonic 'lda'.
loop2.asm (332): error: Unknown Mnemonic 'sta'.
loop2.asm (333): error: Unknown Mnemonic 'jmp'.
loop2.asm (335): error: Label mismatch...
 --> _l1 f000                  
loop2.asm (336): error: Unknown Mnemonic 'lda'.
loop2.asm (337): error: Unknown Mnemonic 'sta'.
loop2.asm (338): error: Unknown Mnemonic 'lda'.
loop2.asm (339): error: Unknown Mnemonic 'sta'.
loop2.asm (340): error: Unknown Mnemonic 'jmp'.
loop2.asm (343): error: Label mismatch...
 --> _noupd f300                  
loop2.asm (344): error: Unknown Mnemonic 'lda'.
loop2.asm (345): error: Unknown Mnemonic 'nop'.
loop2.asm (346): error: Unknown Mnemonic 'jmp'.
loop2.asm (350): error: Unknown Mnemonic 'nop'.
loop2.asm (351): error: Unknown Mnemonic 'lda'.
loop2.asm (352): error: Unknown Mnemonic 'lsr'.
loop2.asm (353): error: Unknown Mnemonic 'tax'.
loop2.asm (354): error: Unknown Mnemonic 'eor'.
loop2.asm (355): error: Unknown Mnemonic 'lsr'.
loop2.asm (356): error: Unknown Mnemonic 'txa'.
loop2.asm (357): error: Unknown Mnemonic 'bcc'.
loop2.asm (358): error: Unknown Mnemonic 'ora'.
loop2.asm (359): error: Unknown Mnemonic 'sta'.
loop2.asm (360): error: Unknown Mnemonic 'lda'.
loop2.asm (361): error: Unknown Mnemonic 'sta'.
loop2.asm (362): error: Unknown Mnemonic 'jmp'.
loop2.asm (365): error: Label mismatch...
 --> _noc f300                  
loop2.asm (366): error: Unknown Mnemonic 'and'.
loop2.asm (367): error: Unknown Mnemonic 'sta'.
loop2.asm (368): error: Unknown Mnemonic 'lda'.
loop2.asm (369): error: Unknown Mnemonic 'sta'.
loop2.asm (370): error: Unknown Mnemonic 'jmp'.
loop2.asm (374): error: Unknown Mnemonic 'lda'.
loop2.asm (375): error: Unknown Mnemonic 'lsr'.
loop2.asm (376): error: Unknown Mnemonic 'tax'.
loop2.asm (377): error: Unknown Mnemonic 'lsr'.
loop2.asm (378): error: Unknown Mnemonic 'eor'.
loop2.asm (379): error: Unknown Mnemonic 'lsr'.
loop2.asm (380): error: Unknown Mnemonic 'txa'.
loop2.asm (381): error: Unknown Mnemonic 'bcc'.
loop2.asm (382): error: Unknown Mnemonic 'ora'.
loop2.asm (383): error: Unknown Mnemonic 'sta'.
loop2.asm (384): error: Unknown Mnemonic 'lda'.
loop2.asm (385): error: Unknown Mnemonic 'sta'.
loop2.asm (386): error: Unknown Mnemonic 'jmp'.
loop2.asm (389): error: Unknown Mnemonic 'and'.
loop2.asm (390): error: Unknown Mnemonic 'sta'.
loop2.asm (391): error: Unknown Mnemonic 'lda'.
loop2.asm (392): error: Unknown Mnemonic 'sta'.
loop2.asm (393): error: Unknown Mnemonic 'jmp'.
loop2.asm (397): error: Unknown Mnemonic 'lda'.
loop2.asm (398): error: Unknown Mnemonic 'lsr'.
loop2.asm (399): error: Unknown Mnemonic 'ora'.
loop2.asm (400): error: Unknown Mnemonic 'sta'.
loop2.asm (401): error: Unknown Mnemonic 'and'.
loop2.asm (402): error: Unknown Mnemonic 'bcc'.
loop2.asm (403): error: Unknown Mnemonic 'beq'.
loop2.asm (404): error: Unknown Mnemonic 'lda'.
loop2.asm (405): error: Unknown Mnemonic 'sta'.
loop2.asm (406): error: Unknown Mnemonic 'lda'.
loop2.asm (407): error: Unknown Mnemonic 'sta'.
loop2.asm (408): error: Unknown Mnemonic 'jmp'.
loop2.asm (411): error: Label mismatch...
 --> _cz f300                  
loop2.asm (412): error: Unknown Mnemonic 'lda'.
loop2.asm (413): error: Unknown Mnemonic 'sta'.
loop2.asm (414): error: Unknown Mnemonic 'lda'.
loop2.asm (415): error: Unknown Mnemonic 'sta'.
loop2.asm (416): error: Unknown Mnemonic 'jmp'.
loop2.asm (420): error: Unknown Mnemonic 'beq'.
loop2.asm (421): error: Unknown Mnemonic 'lda'.
loop2.asm (422): error: Unknown Mnemonic 'sta'.
loop2.asm (423): error: Unknown Mnemonic 'lda'.
loop2.asm (424): error: Unknown Mnemonic 'sta'.
loop2.asm (425): error: Unknown Mnemonic 'jmp'.
loop2.asm (428): error: Label mismatch...
 --> _nocz f300                  
loop2.asm (429): error: Unknown Mnemonic 'nop'.
loop2.asm (430): error: Unknown Mnemonic 'nop'.
loop2.asm (431): error: Unknown Mnemonic 'sta'.
loop2.asm (432): error: Unknown Mnemonic 'sta'.
loop2.asm (433): error: Unknown Mnemonic 'jmp'.
loop2.asm (437): error: Unknown Mnemonic '.db'.
loop2.asm (440): error: Unknown Mnemonic '.db'.
loop2.asm (443): error: Unknown Mnemonic '.db'.
loop2.asm (444): error: Unknown Mnemonic '.db'.
loop2.asm (445): error: Unknown Mnemonic '.db'.
loop2.asm (446): error: Unknown Mnemonic '.db'.
loop2.asm (447): error: Unknown Mnemonic '.db'.
loop2.asm (452): error: Unknown Mnemonic 'lda'.
loop2.asm (453): error: Unknown Mnemonic 'lda'.
loop2.asm (454): error: Unknown Mnemonic 'lda'.
loop2.asm (455): error: Unknown Mnemonic 'lda'.
loop2.asm (456): error: Unknown Mnemonic 'eor'.
loop2.asm (457): error: Unknown Mnemonic 'sta'.
loop2.asm (458): error: Unknown Mnemonic 'and'.
loop2.asm (459): error: Unknown Mnemonic 'sta'.
loop2.asm (460): error: Unknown Mnemonic 'jmp'.
loop2.asm (465): error: Unknown Mnemonic 'dec'.
loop2.asm (466): error: Unknown Mnemonic 'bne'.
loop2.asm (467): error: Unknown Mnemonic 'lda'.
loop2.asm (468): error: Unknown Mnemonic 'eor'.
loop2.asm (469): error: Unknown Mnemonic 'sta'.
loop2.asm (470): error: Unknown Mnemonic 'beq'.
loop2.asm (471): error: Unknown Mnemonic 'and'.
loop2.asm (472): error: Unknown Mnemonic 'sta'.
loop2.asm (473): error: Unknown Mnemonic 'lda'.
loop2.asm (474): error: Unknown Mnemonic 'sta'.
loop2.asm (475): error: Unknown Mnemonic 'jmp'.
loop2.asm (478): error: Unknown Mnemonic 'lda'.
loop2.asm (479): error: Unknown Mnemonic 'sta'.
loop2.asm (480): error: Unknown Mnemonic 'lda'.
loop2.asm (481): error: Unknown Mnemonic 'sta'.
loop2.asm (482): error: Unknown Mnemonic 'jmp'.
loop2.asm (484): error: Label mismatch...
 --> _noupd f200                  
loop2.asm (485): error: Unknown Mnemonic 'lda'.
loop2.asm (486): error: Unknown Mnemonic 'nop'.
loop2.asm (487): error: Unknown Mnemonic 'jmp'.
loop2.asm (491): error: Unknown Mnemonic 'nop'.
loop2.asm (492): error: Unknown Mnemonic 'lda'.
loop2.asm (493): error: Unknown Mnemonic 'lsr'.
loop2.asm (494): error: Unknown Mnemonic 'tax'.
loop2.asm (495): error: Unknown Mnemonic 'eor'.
loop2.asm (496): error: Unknown Mnemonic 'lsr'.
loop2.asm (497): error: Unknown Mnemonic 'txa'.
loop2.asm (498): error: Unknown Mnemonic 'bcc'.
loop2.asm (499): error: Unknown Mnemonic 'ora'.
loop2.asm (500): error: Unknown Mnemonic 'sta'.
loop2.asm (501): error: Unknown Mnemonic 'lda'.
loop2.asm (502): error: Unknown Mnemonic 'sta'.
loop2.asm (503): error: Unknown Mnemonic 'jmp'.
loop2.asm (506): error: Label mismatch...
 --> _noc f200                  
loop2.asm (507): error: Unknown Mnemonic 'and'.
loop2.asm (508): error: Unknown Mnemonic 'sta'.
loop2.asm (509): error: Unknown Mnemonic 'lda'.
loop2.asm (510): error: Unknown Mnemonic 'sta'.
loop2.asm (511): error: Unknown Mnemonic 'jmp'.
loop2.asm (515): error: Unknown Mnemonic 'lda'.
loop2.asm (516): error: Unknown Mnemonic 'lsr'.
loop2.asm (517): error: Unknown Mnemonic 'tax'.
loop2.asm (518): error: Unknown Mnemonic 'lsr'.
loop2.asm (519): error: Unknown Mnemonic 'eor'.
loop2.asm (520): error: Unknown Mnemonic 'lsr'.
loop2.asm (521): error: Unknown Mnemonic 'txa'.
loop2.asm (522): error: Unknown Mnemonic 'bcc'.
loop2.asm (523): error: Unknown Mnemonic 'ora'.
loop2.asm (524): error: Unknown Mnemonic 'sta'.
loop2.asm (525): error: Unknown Mnemonic 'lda'.
loop2.asm (526): error: Unknown Mnemonic 'sta'.
loop2.asm (527): error: Unknown Mnemonic 'jmp'.
loop2.asm (530): error: Unknown Mnemonic 'and'.
loop2.asm (531): error: Unknown Mnemonic 'sta'.
loop2.asm (532): error: Unknown Mnemonic 'lda'.
loop2.asm (533): error: Unknown Mnemonic 'sta'.
loop2.asm (534): error: Unknown Mnemonic 'jmp'.
loop2.asm (538): error: Unknown Mnemonic 'lda'.
loop2.asm (539): error: Unknown Mnemonic 'lsr'.
loop2.asm (540): error: Unknown Mnemonic 'ora'.
loop2.asm (541): error: Unknown Mnemonic 'sta'.
loop2.asm (542): error: Unknown Mnemonic 'and'.
loop2.asm (543): error: Unknown Mnemonic 'bcc'.
loop2.asm (544): error: Unknown Mnemonic 'beq'.
loop2.asm (545): error: Unknown Mnemonic 'lda'.
loop2.asm (546): error: Unknown Mnemonic 'sta'.
loop2.asm (547): error: Unknown Mnemonic 'lda'.
loop2.asm (548): error: Unknown Mnemonic 'sta'.
loop2.asm (549): error: Unknown Mnemonic 'jmp'.
loop2.asm (552): error: Label mismatch...
 --> _cz f200                  
loop2.asm (553): error: Unknown Mnemonic 'lda'.
loop2.asm (554): error: Unknown Mnemonic 'sta'.
loop2.asm (555): error: Unknown Mnemonic 'lda'.
loop2.asm (556): error: Unknown Mnemonic 'sta'.
loop2.asm (557): error: Unknown Mnemonic 'jmp'.
loop2.asm (561): error: Unknown Mnemonic 'beq'.
loop2.asm (562): error: Unknown Mnemonic 'lda'.
loop2.asm (563): error: Unknown Mnemonic 'sta'.
loop2.asm (564): error: Unknown Mnemonic 'lda'.
loop2.asm (565): error: Unknown Mnemonic 'sta'.
loop2.asm (566): error: Unknown Mnemonic 'jmp'.
loop2.asm (569): error: Label mismatch...
 --> _nocz f200                  
loop2.asm (570): error: Unknown Mnemonic 'nop'.
loop2.asm (571): error: Unknown Mnemonic 'nop'.
loop2.asm (572): error: Unknown Mnemonic 'sta'.
loop2.asm (573): error: Unknown Mnemonic 'sta'.
loop2.asm (574): error: Unknown Mnemonic 'jmp'.
loop2.asm (580): error: Unknown Mnemonic '.db'.
loop2.asm (581): error: Unknown Mnemonic '.db'.
loop2.asm (582): error: Unknown Mnemonic '.db'.
loop2.asm (583): error: Unknown Mnemonic '.db'.
loop2.asm (584): error: Unknown Mnemonic '.db'.
loop2.asm (585): error: Unknown Mnemonic '.db'.
loop2.asm (586): error: Unknown Mnemonic '.db'.
loop2.asm (587): error: Unknown Mnemonic '.db'.
loop2.asm (588): error: Unknown Mnemonic '.db'.
loop2.asm (591): error: Unknown Mnemonic '.db'.
loop2.asm (592): error: Unknown Mnemonic '.db'.
loop2.asm (593): error: Unknown Mnemonic '.db'.
loop2.asm (594): error: Unknown Mnemonic '.db'.
loop2.asm (595): error: Unknown Mnemonic '.db'.
loop2.asm (596): error: Unknown Mnemonic '.db'.
loop2.asm (597): error: Unknown Mnemonic '.db'.
loop2.asm (598): error: Unknown Mnemonic '.db'.
loop2.asm (599): error: Unknown Mnemonic '.db'.
loop2.asm (618): error: Unknown Mnemonic '.db'.
loop2.asm (619): error: Unknown Mnemonic '.db'.
loop2.asm (620): error: Unknown Mnemonic '.db'.
loop2.asm (621): error: Unknown Mnemonic '.db'.
loop2.asm (623): error: Unknown Mnemonic '.db'.
loop2.asm (627): error: Unknown Mnemonic '.db'.
loop2.asm (628): error: Unknown Mnemonic '.db'.
loop2.asm (629): error: Unknown Mnemonic '.db'.
loop2.asm (630): error: Unknown Mnemonic '.db'.
loop2.asm (633): error: Unknown Mnemonic '.db'.
loop2.asm (635): error: Unknown Mnemonic '.db'.
loop2.asm (637): error: Unknown Mnemonic '.db'.
loop2.asm (639): error: Unknown Mnemonic '.db'.

Fatal assembly error: Source is not resolvable.

Uzebox sound engine support

The Uzebox open source games console still lacks an easy way to compose music for it. There is, however, Uzebox patch studio which is an open source implementation of the Uzebox sound engine but it lacks MIDI input or any kind of tracker or sequencer

https://github.com/nebososo/uzebox-patch-studio

Might you consider adding Uzebox support to bintracker?

Thanks

Can't open demo module

I try to open a demo module in tunes/demotunes such as buzzplayer-test.mmod, then bintracker crashes with the following stdout error message

focus add (welcome1331 #<procedure (a46995)> #<procedure (a47001)> #<coops instance of `<ui-welcome-buffer>'>)
focus add (repl1332 #<procedure (a46469)> #<procedure (a46475)> #<coops instance of `<ui-repl>'>)

Warning (#<thread: thread1578>): in thread: (process-execute) cannot execute process - No such file or directory: "mame64"

	Call history:

	../bt-emulation.scm:74: scheme#call-with-current-continuation	  
	../bt-emulation.scm:74: chicken.condition#with-exception-handler	  
	../bt-emulation.scm:74: ##sys#call-with-values	  
	../bt-emulation.scm:74: k91	  
	../bt-emulation.scm:73: g94	  
	../bt-emulation.scm:77: launch-emul-process	  
	../bt-emulation.scm:46: scheme#call-with-values	  
	../bt-emulation.scm:47: chicken.process#process	  	<--
focus add (group-fields1575 #<procedure (a44269)> #<procedure (a44275)> #<coops instance of `<ui-group-fields>'>)
focus add (group-fields1575 #<procedure (a44269)> #<procedure (a44275)> #<coops instance of `<ui-group-fields>'>)

(get-property g274 (g0 #<procedure (end-tk133)>))

An error occurred inside Tcl/Tk
 pack .g58.g59.g94.g95.g217.g220.g221.g222.g223.g224.g225.g226.g229.g231 -expand 1 -fill both -side bottom
 --> .g58.g59.g94.g95.g195 already added

Warning (#<thread: thread1333>): in thread: (display) bad argument type - not a port: #f

	Call history:

	../bt-state.scm:33: scheme#string->symbol	  
	../bt-state.scm:33: scheme#eval	  
	../bt-state.scm:32: g281	  
	../bt-gui.scm:60: bt-gui-lolevel#multibuffer-delete	  
	../bt-gui-lolevel.scm:1324: ui-children	  
	../bt-gui-lolevel.scm:700: coops#slot-value	  
	../bt-gui-lolevel.scm:1324: chicken.base#alist-ref	  
	../bt-gui-lolevel.scm:1325: ui-children	  
	../bt-gui-lolevel.scm:700: coops#slot-value	  
	../bt-gui-lolevel.scm:1325: chicken.base#alist-ref	  
	../bt-gui-lolevel.scm:1325: ui-destroy	  
	../bt-gui.scm:4355: module-view-emulator	  
	../bt-gui.scm:3851: coops#slot-value	  
	../bt-gui.scm:4354: g15572	  
	../bt-emulation.scm:86: send-command	  
	../bt-emulation.scm:68: scheme#display	  	<--

And a log file with the following content

#<condition: (uncaught-exception)>
Error: <condition> (uncaught-exception)
OS: linux
Architecture: x86-64
Chicken version: Version 5.2.0 (rev 317468e4)
linux-unix-gnu-x86-64 [ 64bit dload ptables ]

Revision of bintracker is db1c0fc.

Setup doc is missing eggs

The setup.html page is listing the eggs which are needed to compile bintracker , e.g.:
$ chicken-install args base64 comparse coops git imlib2 list-utils matchable pstk simple-md5 sqlite3 srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 srfi-69 stack test typed-records web-colors
but 2 eggs, bitstring and simple-exceptions are missing in order to exectue "make" in the build directory successfully.

How far can this be taken?

This project seems quite ambitious (I am reminded of SOULlang), supporting as many sound chips as possible, as well as being 'hackable'. Definitely got my interest. So I'm wondering how far it can be taken. Also, obviously it is still in the early stages so I don't expect everything to work already.

Lets say I wanted to use specific existing sound drivers (and was willing to do the work necessary):

  1. Atari ST Chipmon2 sound driver and editor
  2. Atari ST Magic Synth v2.5 sound driver and editor
  3. ZX Spectrum Sound Tracker (STC) sound driver and editor
  4. C64 Rob Hubbard's sound driver and editor
  5. NES Super Mario Bros. sound driver and editor

Or create new sound drivers for systems without trackers, such as the Virtual Boy. Or some exotic Amiga sound drivers such as Art of Noise, Sonic Arranger and Musicline Editor.

Or create an environment with 'mix and match' capabilities, such as SID+OPL2 or even more exotic combinations such as Rob Hubbard driver + Siduzzit driver in a 2SID setup.

Or perhaps an MML editor/compiler, or custom DSP code for new sound engines ('fakebit')? Such as designing a PCEngine-like wavescanning synth for one channel and a custom 2-op FM with an additive/waveshaping oscillator for another.


What are some reasonable expectations for what might be achievable with this framework when it's stable?

Cheers, and best of luck on it!

Issues with `chicken-install`

When I tried running chicken install as per the build instructions, I ran into a few issues. I'm using chicken scheme 5.2.0 on arch linux. Here's how I got around the problems:

The packages extras and scm2wiki couldn't be found. I removed both from the list and manually installed scm2wiki from its repo.

Compiling bintracker also required that I add the packages byte-blob, base64, imlib2, web-colors.

In the end I couldn't get the docs to build (didn't try very hard though, maybe I will later), so I just removed doc related stuff from the makefile and then the executable generated fine and works :)

p.s. Thanks for all the amazing work on this project!! It's a really fantastic idea.

Where'd 'ya go?

Looks beautiful, nothing's happening visibly and nothing to download for Mac (hopefully will be someday), and no idea whether or not this thing has polyphonic channels/tracks. Please? Somebody? Anybody? :)

can't open a new module after closing one

  • after we load or open a song, if we request to open a new one with the icon (or control+o), it will close the previous one and we start at the intro screen. But we can't open a new song, the buttons don't react to click input. We can't close bintracker either (we must use xkill to kill the window)

  • if we open a song using the menu, bintracker will crash:

Warning (#<thread: thread472>): in thread: (-) bad argument type - not a number: #f

Call history:

../bt-state.scm:112: scheme#eval	  
../bt-state.scm:113: bt-types#settings	  
../bt-types.scm:150: chicken.base#alist-ref	  
../bt-state.scm:111: g393	  
../bt-state.scm:149: list-utils#alist-inverse-ref	  
../bt-state.scm:158: chicken.string#->string	  
../bt-state.scm:158: chicken.string#string-translate	  
../bt-state.scm:158: srfi-13#string-upcase	  
../bt-gui.scm:913: scheme#string-append	  
../bt-gui.scm:910: ui-modeline-set	  
../bt-gui.scm:732: coops#slot-value	  
../bt-gui.scm:732: chicken.base#alist-ref	  
../bt-gui.scm:733: scheme#string-append	  
../bt-gui.scm:733: label	  
../bt-gui.scm:1847: chicken.string#string-split	  
../bt-gui.scm:1846: g6616	  	<--

Error: uncaught exception: #<condition: (exn type)>

Call history:

../bt-state.scm:25: scheme#string-append	  
../bt-state.scm:25: scheme#string->symbol	  
../bt-state.scm:25: scheme#eval	  
../bt-state.scm:24: g277	  
../bt-gui.scm:4079: ui-ref	  
../bt-gui.scm:686: ui-children	  
../bt-gui.scm:642: coops#slot-value	  
../bt-gui.scm:687: ui-children	  
../bt-gui.scm:642: coops#slot-value	  
../bt-gui.scm:688: chicken.base#alist-ref	  
../bt-gui.scm:4088: ui-metastate	  
../bt-gui.scm:4039: coops#slot-value	  
../bt-gui.scm:3763: coops#slot-value	  
../bintracker.scm:44: g301	  
../bintracker.scm:45: pstk#tk-end	  
../bintracker.scm:46: simple-exceptions#raise	  	<--

Building on macOS

On my macbook, I can get a bintracker binary with

$ gh repo clone bintracker/bintracker
$ cd bintracker
$ brew install chicken sqlite3 mame tcl-tk  # (maybe other things)
$ env CHICKEN_C_LIBRARY_PATH=/opt/homebrew/opt/sqlite/lib CHICKEN_C_INCLUDE_PATH=/opt/homebrew/opt/sqlite/include chicken-install -v args base64 bitstring comparse coops list-utils matchable pstk s11n simple-md5 sqlite3 stb-image stb-image-write srfi-1 srfi-4 srfi-13 srfi-14 srfi-18 srfi-69 stack test typed-records web-colors
$ cd build
$ make -j4

Running ./bintracker then results in

Error: (open-input-file) cannot open file - No such file or directory: "config/keymaps/en.keymap"

	Call history:

	../bt-maths.scm:9: chicken.load#load-extension
	../bintracker-core.scm:9: chicken.load#load-extension
	../bt-state.scm:13: chicken.load#load-extension [repeated]
	../bt-types.scm:8: chicken.load#load-extension [repeated]
	../bt-types.scm:127: scheme#call-with-input-file

which is understandable (and promising).

cd'ing back to the project root and trying ./build/bintracker results in

Error: (import) during expansion of (import ...) - cannot import from undefined module: mdal

	Call history:

	<syntax>	  (##core#require library chicken.base)
	<syntax>	  (chicken.load#load-unit (##core#quote library) (##core#quote #f) (##core#quote #f))
	<syntax>	  (##core#quote library)
	<syntax>	  (##core#quote #f)
	<syntax>	  (##core#quote #f)
	<syntax>	  (##core#begin (##core#require expand chicken.syntax))
	<syntax>	  (##core#require expand chicken.syntax)
	<syntax>	  (chicken.load#load-unit (##core#quote expand) (##core#quote #f) (##core#quote #f))
	<syntax>	  (##core#quote expand)
	<syntax>	  (##core#quote #f)
	<syntax>	  (##core#quote #f)
	<eval>	  (chicken.load#load-unit (##core#quote library) (##core#quote #f) (##core#quote #f))
	<eval>	  (chicken.load#load-unit (##core#quote library) (##core#quote #f) (##core#quote #f))
	<eval>	  (chicken.load#load-unit (##core#quote expand) (##core#quote #f) (##core#quote #f))
	<syntax>	  (import-syntax scheme chicken.base chicken.bitwise chicken.blob chicken.condition chicken.fixnum chi...
	<syntax>	  (##core#undefined)	<--

which sounds like mdal.so (which is in build) can't be loaded.

I'll keep investigating...

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.