{"action":"created","comment":{"url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/comments/193224524","pull_request_review_id":126155855,"id":193224524,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDE5MzIyNDUyNA==","diff_hunk":"@@ -237,6 +237,12 @@ int main(int argc, char **argv)\n \n     std::fprintf(stdout, \" - %s Emulator in use\\n\", opn2_chipEmulatorName(myDevice));\n \n+#if defined(OPNMIDI_ENABLE_HQ_RESAMPLER)\n+    std::fprintf(stdout, \" - Resampling by the high quality method\\n\");\n+#else\n+    std::fprintf(stdout, \" - Resampling by the simple method\\n\");\n+#endif","path":"utils/midiplay/opnplay.cpp","position":8,"original_position":8,"commit_id":"a83122ce6982ad5ea78a2095a2fef1caee47237d","original_commit_id":"a83122ce6982ad5ea78a2095a2fef1caee47237d","user":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"body":"Yeah you're right, but I don't like too much to set it in stone, because for me this it's experimental purpose like a/b testing, and practical usefulness of elaborate resampling must yet be shown.\r\n\r\nWhile linear resampling vs better methods make night and day in some contexts, like in sample-based tracker software, I have not heard stellar differences out of ADLMIDI software in a few situations I have tried.","created_at":"2018-06-05T21:14:36Z","updated_at":"2018-06-05T21:14:36Z","html_url":"https://github.com/Wohlstand/libOPNMIDI/pull/30#discussion_r193224524","pull_request_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30","author_association":"CONTRIBUTOR","_links":{"self":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/comments/193224524"},"html":{"href":"https://github.com/Wohlstand/libOPNMIDI/pull/30#discussion_r193224524"},"pull_request":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30"}},"in_reply_to_id":193151998},"pull_request":{"url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30","id":192589056,"node_id":"MDExOlB1bGxSZXF1ZXN0MTkyNTg5MDU2","html_url":"https://github.com/Wohlstand/libOPNMIDI/pull/30","diff_url":"https://github.com/Wohlstand/libOPNMIDI/pull/30.diff","patch_url":"https://github.com/Wohlstand/libOPNMIDI/pull/30.patch","issue_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/30","number":30,"state":"open","locked":false,"title":"Hq resampler","user":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"body":"This is a continuation of `OPNChipBase` work which now permits all chips to generate under the same interface, and have both methods of resampling!\r\n(the drum can be checked on the GENS emulator)\r\n\r\nThere is a lot of things here, but let me try to summarize my best.\r\n\r\nFrom this commit, each chip's implementation is greatly simplified, and the implementation details which had duplication were moved up into the chip base. It will still provide the same method set as before, except implemented in the base.\r\n\r\nA chip implementation needs only to implement the set of 3 methods we have talked about in MAME: `nativePreGenerate`, `nativePostGenerate`, `nativeGenerate`\r\nIf an emulator is not directly compatible with this method set (ie: GENS), instead it can choose to implement `OPNChipBaseBufferedT` which will implement `nativeGenerate` with an implied buffering, but it will be more latent to respond to fast commands.\r\n\r\nIn the chip base, I also moved both resamplers: HQ and Nuked.\r\nOn top of native generation methods, these 2 are implemented, without the virtual calls in order to be fast.\r\nAlso, the Nuked emulator requires to have different scale factors in and out of the resampler, and the compile time constants take care of this.\r\n\r\nThe static polymorphic has effect of duplicating code for each existing chip type, but make a faster frame loop without branching.","created_at":"2018-06-05T04:38:40Z","updated_at":"2018-06-05T21:14:36Z","closed_at":null,"merged_at":null,"merge_commit_sha":"b5134059a9abc02ea6362c0079449f3e2f6d7446","assignee":null,"assignees":[],"requested_reviewers":[],"requested_teams":[],"labels":[],"milestone":null,"commits_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30/commits","review_comments_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30/comments","review_comment_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/30/comments","statuses_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/statuses/a83122ce6982ad5ea78a2095a2fef1caee47237d","head":{"label":"jpcima:hq-resampler","ref":"hq-resampler","sha":"a83122ce6982ad5ea78a2095a2fef1caee47237d","user":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"repo":{"id":129143226,"node_id":"MDEwOlJlcG9zaXRvcnkxMjkxNDMyMjY=","name":"libOPNMIDI","full_name":"jpcima/libOPNMIDI","owner":{"login":"jpcima","id":17614485,"node_id":"MDQ6VXNlcjE3NjE0NDg1","avatar_url":"https://avatars0.githubusercontent.com/u/17614485?v=4","gravatar_id":"","url":"https://api.github.com/users/jpcima","html_url":"https://github.com/jpcima","followers_url":"https://api.github.com/users/jpcima/followers","following_url":"https://api.github.com/users/jpcima/following{/other_user}","gists_url":"https://api.github.com/users/jpcima/gists{/gist_id}","starred_url":"https://api.github.com/users/jpcima/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jpcima/subscriptions","organizations_url":"https://api.github.com/users/jpcima/orgs","repos_url":"https://api.github.com/users/jpcima/repos","events_url":"https://api.github.com/users/jpcima/events{/privacy}","received_events_url":"https://api.github.com/users/jpcima/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/jpcima/libOPNMIDI","description":"A MIDI play library with OPN2 (YM2612) emulator","fork":true,"url":"https://api.github.com/repos/jpcima/libOPNMIDI","forks_url":"https://api.github.com/repos/jpcima/libOPNMIDI/forks","keys_url":"https://api.github.com/repos/jpcima/libOPNMIDI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/jpcima/libOPNMIDI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/jpcima/libOPNMIDI/teams","hooks_url":"https://api.github.com/repos/jpcima/libOPNMIDI/hooks","issue_events_url":"https://api.github.com/repos/jpcima/libOPNMIDI/issues/events{/number}","events_url":"https://api.github.com/repos/jpcima/libOPNMIDI/events","assignees_url":"https://api.github.com/repos/jpcima/libOPNMIDI/assignees{/user}","branches_url":"https://api.github.com/repos/jpcima/libOPNMIDI/branches{/branch}","tags_url":"https://api.github.com/repos/jpcima/libOPNMIDI/tags","blobs_url":"https://api.github.com/repos/jpcima/libOPNMIDI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/jpcima/libOPNMIDI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/jpcima/libOPNMIDI/git/refs{/sha}","trees_url":"https://api.github.com/repos/jpcima/libOPNMIDI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/jpcima/libOPNMIDI/statuses/{sha}","languages_url":"https://api.github.com/repos/jpcima/libOPNMIDI/languages","stargazers_url":"https://api.github.com/repos/jpcima/libOPNMIDI/stargazers","contributors_url":"https://api.github.com/repos/jpcima/libOPNMIDI/contributors","subscribers_url":"https://api.github.com/repos/jpcima/libOPNMIDI/subscribers","subscription_url":"https://api.github.com/repos/jpcima/libOPNMIDI/subscription","commits_url":"https://api.github.com/repos/jpcima/libOPNMIDI/commits{/sha}","git_commits_url":"https://api.github.com/repos/jpcima/libOPNMIDI/git/commits{/sha}","comments_url":"https://api.github.com/repos/jpcima/libOPNMIDI/comments{/number}","issue_comment_url":"https://api.github.com/repos/jpcima/libOPNMIDI/issues/comments{/number}","contents_url":"https://api.github.com/repos/jpcima/libOPNMIDI/contents/{+path}","compare_url":"https://api.github.com/repos/jpcima/libOPNMIDI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/jpcima/libOPNMIDI/merges","archive_url":"https://api.github.com/repos/jpcima/libOPNMIDI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/jpcima/libOPNMIDI/downloads","issues_url":"https://api.github.com/repos/jpcima/libOPNMIDI/issues{/number}","pulls_url":"https://api.github.com/repos/jpcima/libOPNMIDI/pulls{/number}","milestones_url":"https://api.github.com/repos/jpcima/libOPNMIDI/milestones{/number}","notifications_url":"https://api.github.com/repos/jpcima/libOPNMIDI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/jpcima/libOPNMIDI/labels{/name}","releases_url":"https://api.github.com/repos/jpcima/libOPNMIDI/releases{/id}","deployments_url":"https://api.github.com/repos/jpcima/libOPNMIDI/deployments","created_at":"2018-04-11T19:23:15Z","updated_at":"2018-06-05T01:29:22Z","pushed_at":"2018-06-05T04:55:10Z","git_url":"git://github.com/jpcima/libOPNMIDI.git","ssh_url":"git@github.com:jpcima/libOPNMIDI.git","clone_url":"https://github.com/jpcima/libOPNMIDI.git","svn_url":"https://github.com/jpcima/libOPNMIDI","homepage":"","size":594,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Wohlstand:master","ref":"master","sha":"263146e8aaa59b612b6b0b2f47f21782cf359ff5","user":{"login":"Wohlstand","id":6751442,"node_id":"MDQ6VXNlcjY3NTE0NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/6751442?v=4","gravatar_id":"","url":"https://api.github.com/users/Wohlstand","html_url":"https://github.com/Wohlstand","followers_url":"https://api.github.com/users/Wohlstand/followers","following_url":"https://api.github.com/users/Wohlstand/following{/other_user}","gists_url":"https://api.github.com/users/Wohlstand/gists{/gist_id}","starred_url":"https://api.github.com/users/Wohlstand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wohlstand/subscriptions","organizations_url":"https://api.github.com/users/Wohlstand/orgs","repos_url":"https://api.github.com/users/Wohlstand/repos","events_url":"https://api.github.com/users/Wohlstand/events{/privacy}","received_events_url":"https://api.github.com/users/Wohlstand/received_events","type":"User","site_admin":false},"repo":{"id":90355461,"node_id":"MDEwOlJlcG9zaXRvcnk5MDM1NTQ2MQ==","name":"libOPNMIDI","full_name":"Wohlstand/libOPNMIDI","owner":{"login":"Wohlstand","id":6751442,"node_id":"MDQ6VXNlcjY3NTE0NDI=","avatar_url":"https://avatars1.githubusercontent.com/u/6751442?v=4","gravatar_id":"","url":"https://api.github.com/users/Wohlstand","html_url":"https://github.com/Wohlstand","followers_url":"https://api.github.com/users/Wohlstand/followers","following_url":"https://api.github.com/users/Wohlstand/following{/other_user}","gists_url":"https://api.github.com/users/Wohlstand/gists{/gist_id}","starred_url":"https://api.github.com/users/Wohlstand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Wohlstand/subscriptions","organizations_url":"https://api.github.com/users/Wohlstand/orgs","repos_url":"https://api.github.com/users/Wohlstand/repos","events_url":"https://api.github.com/users/Wohlstand/events{/privacy}","received_events_url":"https://api.github.com/users/Wohlstand/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/Wohlstand/libOPNMIDI","description":"A MIDI play library with OPN2 (YM2612) emulator","fork":false,"url":"https://api.github.com/repos/Wohlstand/libOPNMIDI","forks_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/forks","keys_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/teams","hooks_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/hooks","issue_events_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/events{/number}","events_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/events","assignees_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/assignees{/user}","branches_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/branches{/branch}","tags_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/tags","blobs_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/git/refs{/sha}","trees_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/statuses/{sha}","languages_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/languages","stargazers_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/stargazers","contributors_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/contributors","subscribers_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/subscribers","subscription_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/subscription","commits_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/commits{/sha}","git_commits_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/git/commits{/sha}","comments_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/comments{/number}","issue_comment_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/comments{/number}","contents_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/contents/{+path}","compare_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/merges","archive_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/downloads","issues_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues{/number}","pulls_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls{/number}","milestones_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/milestones{/number}","notifications_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/labels{/name}","releases_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/releases{/id}","deployments_url":"https://api.github.com/repos/Wohlstand/libOPNMIDI/deployments","created_at":"2017-05-05T08:40:08Z","updated_at":"2018-06-05T00:12:29Z","pushed_at":"2018-06-05T04:55:11Z","git_url":"git://github.com/Wohlstand/libOPNMIDI.git","ssh_url":"git@github.com:Wohlstand/libOPNMIDI.git","clone_url":"https://github.com/Wohlstand/libOPNMIDI.git","svn_url":"https://github.com/Wohlstand/libOPNMIDI","homepage":"","size":618,"stargazers_count":12,"watchers_count":12,"language":"C++","has_issues":true,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":2,"mirror_url":null,"archived":false,"open_issues_count":4,"license":{"key":"lgpl-3.0","name":"GNU Lesser General Public License v3.0","spdx_id":"LGPL-3.0","url":"https://api.github.com/licenses/lgpl-3.0","node_id":"MDc6TGljZW5zZTEy"},"forks":2,"open_issues":4,"watchers":12,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30"},"html":{"href":"https://github.com/Wohlstand/libOPNMIDI/pull/30"},"issue":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/30"},"comments":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/issues/30/comments"},"review_comments":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30/comments"},"review_comment":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/pulls/30/commits"},"statuses":{"href":"https://api.github.com/repos/Wohlstand/libOPNMIDI/statuses/a83122ce6982ad5ea78a2095a2fef1caee47237d"}},"author_association":"CONTRIBUTOR"}}
{"actor":{"display_login":"jpcima"}}