{"id":33058141,"url":"https://github.com/mdoege/PySynth","last_synced_at":"2025-11-18T23:01:43.885Z","repository":{"id":57444166,"uuid":"236706700","full_name":"mdoege/PySynth","owner":"mdoege","description":"Python 2/3 music synthesizer scripts (old but still functional project)","archived":false,"fork":false,"pushed_at":"2022-01-25T12:17:14.000Z","size":32725,"stargazers_count":69,"open_issues_count":0,"forks_count":23,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-09-07T02:22:03.453Z","etag":null,"topics":["additive-synthesis","fm-synthesis","midi","music","python","subtractive-synthesis","synthesis"],"latest_commit_sha":null,"homepage":"https://mdoege.github.io/PySynth/","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mdoege.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-01-28T10:13:17.000Z","updated_at":"2025-08-22T23:25:49.000Z","dependencies_parsed_at":"2022-09-26T16:51:06.036Z","dependency_job_id":null,"html_url":"https://github.com/mdoege/PySynth","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mdoege/PySynth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdoege%2FPySynth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdoege%2FPySynth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdoege%2FPySynth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdoege%2FPySynth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mdoege","download_url":"https://codeload.github.com/mdoege/PySynth/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mdoege%2FPySynth/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":285152380,"owners_count":27123462,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-11-18T02:00:05.759Z","response_time":61,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["additive-synthesis","fm-synthesis","midi","music","python","subtractive-synthesis","synthesis"],"created_at":"2025-11-14T05:00:26.589Z","updated_at":"2025-11-18T23:01:43.880Z","avatar_url":"https://github.com/mdoege.png","language":"Jupyter Notebook","funding_links":[],"categories":["Synthesis and Generation"],"sub_categories":["Music"],"readme":"## Current project status\n\nPySynth is no longer being actively developed by me and has therefore been removed from PyPI.\n\n**There is now a maintained fork of PySynth at [g4brielvs/PySynth](https://github.com/g4brielvs/PySynth).**\n\n---\n\n## Overview\n\nPySynth is a simple music synthesizer for Python 2 or 3. The goal is not to produce many different sounds, but to have scripts that can turn ABC notation or MIDI files into a WAV file without too much tinkering.\n\nThe current release of the synthesizer can only play one note at a time. (Although successive notes can overlap in PySynth B and S, but not A.) However, two output files can be mixed together to get stereo sound.\n\n## Synthesizer scripts\n\n| Synth | Synthesis method | Approximate timbre | Note decay | Needs NumPy? |\n| --- | --- | --- | --- | --- |\n| A | additive (3 sine waves) | flute, organ, piano | variable (depends on note length) | no\n| B | additive (5 sine waves) | acoustic piano | medium | yes\n| C | subtractive (sawtooth wave) | bowed string, analog synth pad | none | no\n| D | subtractive (square wave) | woodwind, analog synth lead | none | no\n| E | FM/phase modulation (6 sine waves) | DX7 Rhodes piano | medium | yes\n| P | subtractive (white noise) | untuned percussion hit | very fast | no\n| S | Karplus-Strong (physical modeling) | plucked string, guitar, koto | fast | yes\n| beeper | additive | Nokia phone ringtone | none | no\n| samp | sampler | [Salamander Grand Piano][3] | medium | yes\n\n## Installation\n\n### Linux\nClone the repository:\n\n`git clone git@github.com:mdoege/PySynth.git`\n\nor\n\n`git clone https://github.com/mdoege/PySynth.git`\n\nEnter the directory (`cd PySynth`) and run \n\n`python3 setup.py install`\n\n## Sample usage\n\nBasic usage:\n\n```python3\nimport pysynth as ps\ntest = (('c', 4), ('e', 4), ('g', 4),\n\t\t('c5', -2), ('e6', 8), ('d#6', 2))\nps.make_wav(test, fn = \"test.wav\")\n```\n\nMore advanced usage:\n\n```python3\nimport pysynth_b as psb # a, b, e, and s variants available\n\n''' (note, duration)\nNote name (a to g), then optionally a '#' for sharp or\n'b' for flat, then optionally the octave (defaults to 4).\nAn asterisk at the end means to play the note a little \nlouder.  Duration: 4 is a quarter note, -4 is a dotted \nquarter note, etc.'''\nsong = (\n  ('c', 4), ('c*', 4), ('eb', 4), \n  ('g#', 4),  ('g*', 2), ('g5', 4),\n  ('g5*', 4), ('r', 4), ('e5', 16),\n  ('f5', 16),  ('e5', 16),  ('d5', 16),\n  ('e5*', 4) \n)\n\n# Beats per minute (bpm) is really quarters per minute here\npsb.make_wav(song, fn = \"danube.wav\", leg_stac = .7, bpm = 180)\n```\n\nRead ABC file and output WAV:\n\n`python3 read_abc.py straw.abc`\n\n## Documentation\n\nMore documentation and examples at the [PySynth homepage][1].\n\n[1]: http://mdoege.github.io/PySynth/\n[2]: http://numpy.scipy.org/\n[3]: http://freepats.zenvoid.org/Piano/acoustic-grand-piano.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdoege%2FPySynth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmdoege%2FPySynth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmdoege%2FPySynth/lists"}