Skip to content

Instantly share code, notes, and snippets.

View allquixotic's full-sized avatar
🎯
Focusing

Sean McNamara allquixotic

🎯
Focusing
View GitHub Profile
7b6490dbdd40b9020aa2a981531d5c706873e077 eso0000.dat
e8765d6eedee582bfe87c07cc13f05c792bf8e2c eso0001.dat
d02c54827dce2684a0238869eb24e519f7a7770f eso0002.dat
cf7ea12768c1ed10170b3785a0120e6f1aeec868 eso0003.dat
f2d1b8b94af2f5b39096074befa7668a0a8c8300 eso0004.dat
e50d21f18e9de6e9f543f72c6056b0f445050c6f eso0005.dat
a01a8c934bd4d7bd79fb058efc79ab597b956858 eso0006.dat
c3554ea6b90b8366993f0876426179a8434dcd1b eso0007.dat
65258fb1fe49ed2f3234937df10fbd5f40c9d974 eso0008.dat
48ada6d985c41f7645d4578b051c298f2f7b21a3 eso0009.dat
@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