Skip to content

Instantly share code, notes, and snippets.

View allquixotic's full-sized avatar
🎯
Focusing

Sean McNamara allquixotic

🎯
Focusing
View GitHub Profile
@allquixotic
allquixotic / run.vbs
Created December 25, 2019 18:13
Super easy librespot gstreamer
'Download https://drive.google.com/file/d/1f8mKh1V2n936aIAM-iWConYUtmkuCmPQ/view?usp=sharing and put this in the toplevel dir
Dim w
Set w = WScript.CreateObject("WScript.Shell")
w.Run "bin\librespot -u <username> -p <password> -n kitchensink -b 320 --backend gstreamer --device ""! audioconvert ! directsoundsink""", 0, False
Set w = Nothing
@allquixotic
allquixotic / README.md
Last active December 11, 2022 02:33
High Quality Pitch Shifting for Spotify on Windows using MSYS-MinGW64

The goal of this exercise is to get pitch shifting (changing the pitch of music up or down) working with Spotify on Windows 10 using native-compiled open source software. This solution does not require any VMs or Linux at all.

For this solution, the actual sound playback will be occurring on your Windows PC using your soundcard, but there are other components of the solution that do some audio processing. I'll explain each.

Requirements

  1. A Spotify Premium account
  2. The 64-bit build of MSYS2 from https://www.msys2.org/ -- get the default installer and install with default options.

Overview of the Working Solution

@allquixotic
allquixotic / README.md
Last active January 5, 2021 06:33
High Quality Pitch Shifting for Spotify on Windows with WSL2

The goal of this exercise is to get pitch shifting (changing the pitch of music up or down) working with Spotify on Windows 10 using WSL2. Technically this solution is really not dependent on WSL2 at all, but it does require you to have a Linux system running somewhere, whether virtual or physical, with extremely low latency and high throughput networking available to your Windows box.

For this solution, the actual sound playback will be occurring on your Windows PC using your soundcard, but there are other components of the solution that do some audio processing. I'll explain each.

Requirements

  1. A Spotify Premium account
  2. Windows build supporting WSL2; as of December 2019 that'd be the Insider Preview Slow or Fast Ring. This can also be done with Linux in VirtualBox, VMware, or Hyper-V, but I've not tested it.
  3. (Windows PulseAudio From Source method only) A recent Fedora-based distribution of Linux
  4. A modern distribution of Linux that can run a recent Rust toolchain; e.g. Debian Testing, l
@allquixotic
allquixotic / gunzip-cbbitmaps.rb
Created November 11, 2019 15:30
gunzip-cbbitmaps.rb for CloudBerry Backup from certain cloud providers
=begin
gunzip-cbbitmaps.rb, Copyright (c) 2019 Sean McNamara <smcnam@gmail.com>
License: The 3-Clause BSD License
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
(1) Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
@allquixotic
allquixotic / javadyn.rb
Created July 4, 2019 18:31
javadyn - invoke different Java based on command line argument
#!/usr/bin/env ruby
JAVA8BIN = "/usr/lib/jvm/zulu-8-amd64/bin/java"
JAVA12BIN = "/usr/lib/jvm/zulu-12-amd64/bin/java"
#puts ARGV
if ARGV.include?("--javaver") then
i1 = ARGV.index("--javaver")
i2 = i1+1
if ARGV[i2] == "8" then
# puts "Using Java 8"
arr = ARGV.select { |e| ARGV.index(e) != i1 && ARGV.index(e) != i2 }
@allquixotic
allquixotic / Agent.java
Created June 6, 2019 21:36
ByteBuddy Java Agent to force Raritan VKC to fullscreen on macOS
package agent;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.InputEvent;
import java.beans.PropertyChangeListener;
import java.lang.instrument.Instrumentation;
import javax.swing.Action;
import javax.swing.JFrame;
@allquixotic
allquixotic / index.html
Last active February 19, 2019 21:59
EsoLogFormatter created by SeanMcNamara1 - https://repl.it/@SeanMcNamara1/EsoLogFormatter
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>ESO Log Formatter</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootswatch/4.3.1/united/bootstrap.min.css" crossorigin="anonymous"/>
<link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css" crossorigin="anonymous"/>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use script";
var R = require('url-parse');
},{"url-parse":4}],2:[function(require,module,exports){
'use strict';
var has = Object.prototype.hasOwnProperty;
/**
* Decode a URI encoded string.
if(typeof jQuery=='undefined') {
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l="1.11.1",m=function(a,b){return new m.fn.init(a,b)},n=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,o=/^-ms-/,p=/-([\da-z])/gi,q=function(a,b){return b.toUpperCase()};m.fn=m.prototype={jquery:l,constructor:m,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=m.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return m.each(this,a,b)},map:function(a){return this.pushStack(m.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,a
@allquixotic
allquixotic / !README.md
Last active August 17, 2018 01:17
Hide collapsed and muted channel categories in Discord

First, mute and collapse every channel category you don't care about. You only have to do this once, even if you restart Discord.

Second, click on the "Raw" button next to the file in this Gist named "COPY-THIS.js" (it's right below this readme). Then, press Ctrl+A followed by Ctrl+C. The code is now on your clipboard. We'll use this later. You must do this every time you restart Discord.

Developer Tools Sequence

Step 1 below varies. The remaining steps are the same for Discord Web App and Discord Desktop.

DO ONLY ONE OF THESE vvvvvvv

Discord Web App