{"action":"created","comment":{"url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/comments/46217475","id":46217475,"diff_hunk":"@@ -66,8 +66,13 @@ def __rubberband(y, sr, **kwargs):\n         subprocess.check_call(arguments)\n \n         # Load the processed audio.\n-        # Setting mono=False will ensure that the shape matches `y`\n-        y_out, _ = librosa.load(outfile, sr=sr, mono=False)\n+        y_out, _ = sf.read(outfile, always_2d=True)\n+\n+        # make sure that output dimensions matches input\n+        if y.ndim == 1:\n+            y_out = np.squeeze(y_out.T).T","path":"pyrubberband/pyrb.py","position":50,"original_position":50,"commit_id":"0b445c3742321706e68def2b693dd198231a660b","original_commit_id":"0b445c3742321706e68def2b693dd198231a660b","user":{"login":"bmcfee","id":1190540,"avatar_url":"https://avatars.githubusercontent.com/u/1190540?v=3","gravatar_id":"","url":"https://api.github.com/users/bmcfee","html_url":"https://github.com/bmcfee","followers_url":"https://api.github.com/users/bmcfee/followers","following_url":"https://api.github.com/users/bmcfee/following{/other_user}","gists_url":"https://api.github.com/users/bmcfee/gists{/gist_id}","starred_url":"https://api.github.com/users/bmcfee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmcfee/subscriptions","organizations_url":"https://api.github.com/users/bmcfee/orgs","repos_url":"https://api.github.com/users/bmcfee/repos","events_url":"https://api.github.com/users/bmcfee/events{/privacy}","received_events_url":"https://api.github.com/users/bmcfee/received_events","type":"User","site_admin":false},"body":"Is that last ``.T`` necessary?  If it's 1d (after squeeze) then a transpose should do nothing.","created_at":"2015-11-30T23:00:02Z","updated_at":"2015-11-30T23:00:02Z","html_url":"https://github.com/bmcfee/pyrubberband/pull/4#discussion_r46217475","pull_request_url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4","_links":{"self":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/comments/46217475"},"html":{"href":"https://github.com/bmcfee/pyrubberband/pull/4#discussion_r46217475"},"pull_request":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4"}}},"pull_request":{"url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4","id":51516129,"html_url":"https://github.com/bmcfee/pyrubberband/pull/4","diff_url":"https://github.com/bmcfee/pyrubberband/pull/4.diff","patch_url":"https://github.com/bmcfee/pyrubberband/pull/4.patch","issue_url":"https://api.github.com/repos/bmcfee/pyrubberband/issues/4","number":4,"state":"open","locked":false,"title":"replace librosa.load with pysoundfile.read","user":{"login":"faroit","id":72940,"avatar_url":"https://avatars.githubusercontent.com/u/72940?v=3","gravatar_id":"","url":"https://api.github.com/users/faroit","html_url":"https://github.com/faroit","followers_url":"https://api.github.com/users/faroit/followers","following_url":"https://api.github.com/users/faroit/following{/other_user}","gists_url":"https://api.github.com/users/faroit/gists{/gist_id}","starred_url":"https://api.github.com/users/faroit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/faroit/subscriptions","organizations_url":"https://api.github.com/users/faroit/orgs","repos_url":"https://api.github.com/users/faroit/repos","events_url":"https://api.github.com/users/faroit/events{/privacy}","received_events_url":"https://api.github.com/users/faroit/received_events","type":"User","site_admin":false},"body":"I really like librosa but importing it only for the read/write capability [can make things complicated](https://github.com/bmcfee/librosa/issues/281).  There are other libraries which only focus on audio I/O like [pysoundfile](https://github.com/bastibe/PySoundFile) and therefore have less dependencies and are more flexible. \r\n\r\nThis PR therefore removes librosa dependency and replace it with pysoundfile. I know that pysoundfile is not optimal because it not pure python but since timestretching/pitch shifting is often applied on general audio files a library which supports a large number of input and output formats like portaudio is beneficial. Also to my knowledge there are currently no better solutions for python.\r\n\r\nI've also added a note howto easily install rubberband cli on mac by providing a homebrew recipe ","created_at":"2015-11-23T12:15:38Z","updated_at":"2015-11-30T23:00:02Z","closed_at":null,"merged_at":null,"merge_commit_sha":"adb1941c0274ce4857a25f6e1688c0bc6f5f0672","assignee":{"login":"bmcfee","id":1190540,"avatar_url":"https://avatars.githubusercontent.com/u/1190540?v=3","gravatar_id":"","url":"https://api.github.com/users/bmcfee","html_url":"https://github.com/bmcfee","followers_url":"https://api.github.com/users/bmcfee/followers","following_url":"https://api.github.com/users/bmcfee/following{/other_user}","gists_url":"https://api.github.com/users/bmcfee/gists{/gist_id}","starred_url":"https://api.github.com/users/bmcfee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmcfee/subscriptions","organizations_url":"https://api.github.com/users/bmcfee/orgs","repos_url":"https://api.github.com/users/bmcfee/repos","events_url":"https://api.github.com/users/bmcfee/events{/privacy}","received_events_url":"https://api.github.com/users/bmcfee/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4/commits","review_comments_url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4/comments","review_comment_url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bmcfee/pyrubberband/issues/4/comments","statuses_url":"https://api.github.com/repos/bmcfee/pyrubberband/statuses/0b445c3742321706e68def2b693dd198231a660b","head":{"label":"faroit:master","ref":"master","sha":"0b445c3742321706e68def2b693dd198231a660b","user":{"login":"faroit","id":72940,"avatar_url":"https://avatars.githubusercontent.com/u/72940?v=3","gravatar_id":"","url":"https://api.github.com/users/faroit","html_url":"https://github.com/faroit","followers_url":"https://api.github.com/users/faroit/followers","following_url":"https://api.github.com/users/faroit/following{/other_user}","gists_url":"https://api.github.com/users/faroit/gists{/gist_id}","starred_url":"https://api.github.com/users/faroit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/faroit/subscriptions","organizations_url":"https://api.github.com/users/faroit/orgs","repos_url":"https://api.github.com/users/faroit/repos","events_url":"https://api.github.com/users/faroit/events{/privacy}","received_events_url":"https://api.github.com/users/faroit/received_events","type":"User","site_admin":false},"repo":{"id":46618014,"name":"pyrubberband","full_name":"faroit/pyrubberband","owner":{"login":"faroit","id":72940,"avatar_url":"https://avatars.githubusercontent.com/u/72940?v=3","gravatar_id":"","url":"https://api.github.com/users/faroit","html_url":"https://github.com/faroit","followers_url":"https://api.github.com/users/faroit/followers","following_url":"https://api.github.com/users/faroit/following{/other_user}","gists_url":"https://api.github.com/users/faroit/gists{/gist_id}","starred_url":"https://api.github.com/users/faroit/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/faroit/subscriptions","organizations_url":"https://api.github.com/users/faroit/orgs","repos_url":"https://api.github.com/users/faroit/repos","events_url":"https://api.github.com/users/faroit/events{/privacy}","received_events_url":"https://api.github.com/users/faroit/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/faroit/pyrubberband","description":"python wrapper for rubberband","fork":true,"url":"https://api.github.com/repos/faroit/pyrubberband","forks_url":"https://api.github.com/repos/faroit/pyrubberband/forks","keys_url":"https://api.github.com/repos/faroit/pyrubberband/keys{/key_id}","collaborators_url":"https://api.github.com/repos/faroit/pyrubberband/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/faroit/pyrubberband/teams","hooks_url":"https://api.github.com/repos/faroit/pyrubberband/hooks","issue_events_url":"https://api.github.com/repos/faroit/pyrubberband/issues/events{/number}","events_url":"https://api.github.com/repos/faroit/pyrubberband/events","assignees_url":"https://api.github.com/repos/faroit/pyrubberband/assignees{/user}","branches_url":"https://api.github.com/repos/faroit/pyrubberband/branches{/branch}","tags_url":"https://api.github.com/repos/faroit/pyrubberband/tags","blobs_url":"https://api.github.com/repos/faroit/pyrubberband/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/faroit/pyrubberband/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/faroit/pyrubberband/git/refs{/sha}","trees_url":"https://api.github.com/repos/faroit/pyrubberband/git/trees{/sha}","statuses_url":"https://api.github.com/repos/faroit/pyrubberband/statuses/{sha}","languages_url":"https://api.github.com/repos/faroit/pyrubberband/languages","stargazers_url":"https://api.github.com/repos/faroit/pyrubberband/stargazers","contributors_url":"https://api.github.com/repos/faroit/pyrubberband/contributors","subscribers_url":"https://api.github.com/repos/faroit/pyrubberband/subscribers","subscription_url":"https://api.github.com/repos/faroit/pyrubberband/subscription","commits_url":"https://api.github.com/repos/faroit/pyrubberband/commits{/sha}","git_commits_url":"https://api.github.com/repos/faroit/pyrubberband/git/commits{/sha}","comments_url":"https://api.github.com/repos/faroit/pyrubberband/comments{/number}","issue_comment_url":"https://api.github.com/repos/faroit/pyrubberband/issues/comments{/number}","contents_url":"https://api.github.com/repos/faroit/pyrubberband/contents/{+path}","compare_url":"https://api.github.com/repos/faroit/pyrubberband/compare/{base}...{head}","merges_url":"https://api.github.com/repos/faroit/pyrubberband/merges","archive_url":"https://api.github.com/repos/faroit/pyrubberband/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/faroit/pyrubberband/downloads","issues_url":"https://api.github.com/repos/faroit/pyrubberband/issues{/number}","pulls_url":"https://api.github.com/repos/faroit/pyrubberband/pulls{/number}","milestones_url":"https://api.github.com/repos/faroit/pyrubberband/milestones{/number}","notifications_url":"https://api.github.com/repos/faroit/pyrubberband/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/faroit/pyrubberband/labels{/name}","releases_url":"https://api.github.com/repos/faroit/pyrubberband/releases{/id}","created_at":"2015-11-21T14:12:10Z","updated_at":"2015-11-21T14:12:11Z","pushed_at":"2015-11-30T22:07:35Z","git_url":"git://github.com/faroit/pyrubberband.git","ssh_url":"git@github.com:faroit/pyrubberband.git","clone_url":"https://github.com/faroit/pyrubberband.git","svn_url":"https://github.com/faroit/pyrubberband","homepage":null,"size":23,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"bmcfee:master","ref":"master","sha":"864dece4ec9a5b64f30b2ca9a48f01350755ca33","user":{"login":"bmcfee","id":1190540,"avatar_url":"https://avatars.githubusercontent.com/u/1190540?v=3","gravatar_id":"","url":"https://api.github.com/users/bmcfee","html_url":"https://github.com/bmcfee","followers_url":"https://api.github.com/users/bmcfee/followers","following_url":"https://api.github.com/users/bmcfee/following{/other_user}","gists_url":"https://api.github.com/users/bmcfee/gists{/gist_id}","starred_url":"https://api.github.com/users/bmcfee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmcfee/subscriptions","organizations_url":"https://api.github.com/users/bmcfee/orgs","repos_url":"https://api.github.com/users/bmcfee/repos","events_url":"https://api.github.com/users/bmcfee/events{/privacy}","received_events_url":"https://api.github.com/users/bmcfee/received_events","type":"User","site_admin":false},"repo":{"id":31550153,"name":"pyrubberband","full_name":"bmcfee/pyrubberband","owner":{"login":"bmcfee","id":1190540,"avatar_url":"https://avatars.githubusercontent.com/u/1190540?v=3","gravatar_id":"","url":"https://api.github.com/users/bmcfee","html_url":"https://github.com/bmcfee","followers_url":"https://api.github.com/users/bmcfee/followers","following_url":"https://api.github.com/users/bmcfee/following{/other_user}","gists_url":"https://api.github.com/users/bmcfee/gists{/gist_id}","starred_url":"https://api.github.com/users/bmcfee/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmcfee/subscriptions","organizations_url":"https://api.github.com/users/bmcfee/orgs","repos_url":"https://api.github.com/users/bmcfee/repos","events_url":"https://api.github.com/users/bmcfee/events{/privacy}","received_events_url":"https://api.github.com/users/bmcfee/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bmcfee/pyrubberband","description":"python wrapper for rubberband","fork":false,"url":"https://api.github.com/repos/bmcfee/pyrubberband","forks_url":"https://api.github.com/repos/bmcfee/pyrubberband/forks","keys_url":"https://api.github.com/repos/bmcfee/pyrubberband/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bmcfee/pyrubberband/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bmcfee/pyrubberband/teams","hooks_url":"https://api.github.com/repos/bmcfee/pyrubberband/hooks","issue_events_url":"https://api.github.com/repos/bmcfee/pyrubberband/issues/events{/number}","events_url":"https://api.github.com/repos/bmcfee/pyrubberband/events","assignees_url":"https://api.github.com/repos/bmcfee/pyrubberband/assignees{/user}","branches_url":"https://api.github.com/repos/bmcfee/pyrubberband/branches{/branch}","tags_url":"https://api.github.com/repos/bmcfee/pyrubberband/tags","blobs_url":"https://api.github.com/repos/bmcfee/pyrubberband/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bmcfee/pyrubberband/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bmcfee/pyrubberband/git/refs{/sha}","trees_url":"https://api.github.com/repos/bmcfee/pyrubberband/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bmcfee/pyrubberband/statuses/{sha}","languages_url":"https://api.github.com/repos/bmcfee/pyrubberband/languages","stargazers_url":"https://api.github.com/repos/bmcfee/pyrubberband/stargazers","contributors_url":"https://api.github.com/repos/bmcfee/pyrubberband/contributors","subscribers_url":"https://api.github.com/repos/bmcfee/pyrubberband/subscribers","subscription_url":"https://api.github.com/repos/bmcfee/pyrubberband/subscription","commits_url":"https://api.github.com/repos/bmcfee/pyrubberband/commits{/sha}","git_commits_url":"https://api.github.com/repos/bmcfee/pyrubberband/git/commits{/sha}","comments_url":"https://api.github.com/repos/bmcfee/pyrubberband/comments{/number}","issue_comment_url":"https://api.github.com/repos/bmcfee/pyrubberband/issues/comments{/number}","contents_url":"https://api.github.com/repos/bmcfee/pyrubberband/contents/{+path}","compare_url":"https://api.github.com/repos/bmcfee/pyrubberband/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bmcfee/pyrubberband/merges","archive_url":"https://api.github.com/repos/bmcfee/pyrubberband/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bmcfee/pyrubberband/downloads","issues_url":"https://api.github.com/repos/bmcfee/pyrubberband/issues{/number}","pulls_url":"https://api.github.com/repos/bmcfee/pyrubberband/pulls{/number}","milestones_url":"https://api.github.com/repos/bmcfee/pyrubberband/milestones{/number}","notifications_url":"https://api.github.com/repos/bmcfee/pyrubberband/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bmcfee/pyrubberband/labels{/name}","releases_url":"https://api.github.com/repos/bmcfee/pyrubberband/releases{/id}","created_at":"2015-03-02T16:33:48Z","updated_at":"2015-11-24T16:07:33Z","pushed_at":"2015-11-30T22:07:35Z","git_url":"git://github.com/bmcfee/pyrubberband.git","ssh_url":"git@github.com:bmcfee/pyrubberband.git","clone_url":"https://github.com/bmcfee/pyrubberband.git","svn_url":"https://github.com/bmcfee/pyrubberband","homepage":null,"size":244,"stargazers_count":7,"watchers_count":7,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":1,"forks":1,"open_issues":1,"watchers":7,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4"},"html":{"href":"https://github.com/bmcfee/pyrubberband/pull/4"},"issue":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/issues/4"},"comments":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/issues/4/comments"},"review_comments":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4/comments"},"review_comment":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/pulls/4/commits"},"statuses":{"href":"https://api.github.com/repos/bmcfee/pyrubberband/statuses/0b445c3742321706e68def2b693dd198231a660b"}}}}