musysim

所属分类:硬件设计
开发工具:Python
文件大小:0KB
下载次数:0
上传日期:2022-08-18 00:17:55
上 传 者sh-1993
说明:  早期音乐合成编程语言的模拟器:MUSYS。,
(Simulator for the early music synthesis programming language: MUSYS.,)

文件列表:
COPYING (35149, 2022-08-17)
devices.py (2732, 2022-08-17)
examples/ (0, 2022-08-17)
examples/IO-test.musys (55, 2022-08-17)
examples/collatz.musys (119, 2022-08-17)
examples/div-precision.musys (180, 2022-08-17)
examples/hello-world-macro.musys (37, 2022-08-17)
examples/hello-world.musys (19, 2022-08-17)
examples/note.musys (87, 2022-08-17)
examples/output-exp-register.musys (10, 2022-08-17)
examples/output-test.musys (44, 2022-08-17)
examples/random-composition001.musys (432, 2022-08-17)
examples/random-tone-rows.musys (330, 2022-08-17)
examples/random-tone-rows2.musys (420, 2022-08-17)
examples/test-env001.musys (257, 2022-08-17)
examples/test-env002.musys (234, 2022-08-17)
examples/test-env003.musys (136, 2022-08-17)
examples/truth-machine.musys (40, 2022-08-17)
examples/tune.musys (274, 2022-08-17)
examples/tune2.musys (364, 2022-08-17)
musysim.py (13565, 2022-08-17)
sofkasim.py (4998, 2022-08-17)
tests/ (0, 2022-08-17)
tests/__init__.py (0, 2022-08-17)
tests/test_musys.py (1120, 2022-08-17)

# MUSYSim Simulator for the early music synthesis programming language: MUSYS. MUSYS was an early music synthesis language designed by Peter Grogono for EMS in London in the early 1970s for composing and performing electronic music. More information and links to primary sources are available at https://esolangs.org/wiki/MUSYS This is an attempt to create a MUSYS simulator to produce text and audio output from MUSYS source code as faithfully as possible to the original EMS software and hardware. The most detailed source of technical information is the article "MUSYS: Software for an Electronic Music Studio" by Peter Grogono, in _Software — Practice and Experience, 3_, 1973. pp.369-383. [doi:10.1002/spe.4380030410](https://doi.org/10.1002/spe.4380030410) Additionally, [Peter Grogono's blog](http://users.encs.concordia.ca/~grogono/Bio/ems.html) [(Now archived)](https://web.archive.org/web/20200806234505/https://users.encs.concordia.ca/~grogono/Bio/ems.html) provides good context and history. The related non-audio language, [Mouse](https://esolangs.org/wiki/Mouse), has a relatively 'active' and enthusiastic hobbyist community and new code and interpreters exist for it. I am not aware of any other attempts to resurrect MUSYS. ### Plan: 1. Basic parser, operations and flow control - **DONE** 2. Output to STDOUT - **DONE** 3. Test and fix bugs - **ONGOING** 4. Output compiled device/data pairs for audio (text octal format) **DONE** 5. Converter that takes device instruction output and produces [Nyquist](https://www.cs.cmu.edu/~music/nyquist/) code to synthesise audio **DONE** ### Conversion to Nyquist The given MUSYS example (from the blog) of a note with envelope: O1 56 A1 12 E1 13 T1 14 E1 7 T1 1 converts (roughly) to Nyquist: (play (mult (osc 84 0.35) (pwl-list '(0 0 0.13 1 0.27 1 0.34 0)))) Using my guess of _Nyquist (MIDI) tone_ = _MUSYS tone_ + 28, and interpreting `E1` as an [EMS Synthi style Envelope Shaper](https://djjondent.blogspot.com/2015/03/ems-synthi-envelope-generator.html). MUSYS tones range from 0-63. 0 is oscillator off. 32 would be middle C. The scale is apparently 8 octave chromatic, which leaves the highest and lowest notes unreachable. It sounds like there may have been a way to 'tune' an oscillator to reach these though. To compile and play this example: ./musysim.py <(echo -e "O1.56. A1.12. E1.13. T1.14. E1.7. T1.1.\n$"); ./sofkasim.py | ny ### Example Usage: ./musysim.py examples/note.musys; ./sofkasim.py Output: ['0170', '1414', '3015', '7416', '3007', '7401'] [Writing all data lists to musys.out...] (set-control-srate 16000)(play (mult (seq (osc 84 0.35 *table* 0)) (seq (pwl-list '(0 0 0.13 1 0.27 1 0.34 0))))) And with [Nyquist](https://www.cs.cmu.edu/~music/nyquist/) installed (`sudo apt-get install nyquist` will work under Ubuntu): ./musysim.py examples/note.musys; ./sofkasim.py | ny Should play a shaped note though your sound device lasting for 0.35 seconds. Currently the code is in a proof-of-concept state, but is slowly being developed to add more of the original features as can be established from the available documents.

近期下载者

相关文件


收藏者