Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); Update to rustfft 6.0 and Rust 2018 edition by sunsided · Pull Request #6 · snd/stft · GitHub
Skip to content

Update to rustfft 6.0 and Rust 2018 edition - #6

Open
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang
Open

Update to rustfft 6.0 and Rust 2018 edition#6
sunsided wants to merge 13 commits into
snd:masterfrom
sunsided:feature/integrate-YoshieraHuang

Conversation

@sunsided

@sunsidedsunsided commented Oct 13, 2021

Copy link
Copy Markdown

Heya! When I tried to use stft from crates.io it failed with an error related to nalgebra-0.5. I poked around in the forks and found YoshieraHuang/stft which adds some modernizations on which this PR is based:

The latter commit allows cargo bench and cargo criterion to be run with stable Rust.

From there, I updated the Cargo.toml to use edition = "2018" and updated the dependencies to rustfft = "6.0", num = "0.4" and apodize = "1.0". I made sure to sanitize the code using rustfmt and Clippy.

The newer rustfft version appears to do FFT in-place now, but has support for an externally allocated scratch buffer. I added this to the STFT struct - the benchmarks indicate a slight performance increase with that change.

The existing integration tests were lacking an assertion to actually ensure the correct results are calculated. I added a dev dependency on approx = "0.5" to do perform said comparisons; the calculations are now also performed twice to ensure that a call to compute_column() does not
corrupt the internal state.

@sunsided
sunsidedforce-pushed the feature/integrate-YoshieraHuang branch from 2542bda to bc09103CompareOctober 20, 2021 17:31
@rohansatapathy

Copy link
Copy Markdown

It seems like the author has abandoned this project, @sunsided would you be able to release your version under a new name on crates.io to ensure that it has a working build? Maybe it could be called ruststft to match the naming convention of rustfft.

@sunsided

Copy link
Copy Markdown
Author

@rohansatapathy Will do. I've reached out to @snd by mail first to see if he can add me as a maintainer, too. In that case we don't require the parallel crates.

@sunsided

Copy link
Copy Markdown
Author

Okay, I published it as ruststft version 0.3.0. If @snd gets back to me regarding maintainership on crates.io and/or merges the changes himself, I'll see to yank my version to not create confusion.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@sunsided@rohansatapathy@YoshieraHuang