Skip to content

Instantly share code, notes, and snippets.

View willwade's full-sized avatar
🌏
Working on dasher and a lot of Ace hardware projects

will wade willwade

🌏
Working on dasher and a lot of Ace hardware projects
View GitHub Profile
@willwade
willwade / toggleYT.sh
Created February 19, 2025 22:00
Toggle NextDNS deny domain
#!/bin/bash
# Configuration - Replace with your actual API key and Profile ID
API_KEY="apikey"
PROFILE_ID="id"
DOMAIN="youtube.com"
# Function to get current block status
get_status() {
curl -s -X GET "https://api.nextdns.io/profiles/$PROFILE_ID/denylist" \
@willwade
willwade / 1Instructions.md
Last active February 17, 2025 14:14
Make installing elevenlabs button with bridgingvoice easier. youll need https://github.com/willwade/AACProcessors
To use

1. Install python 
2. open a cmd line 
3. run pip install aacprocessors
4. Copy and paste this text below into a notepad file. Edit your xml as you wish. 
5. run it like python replaceSpeakButtonGridset.py 
@willwade
willwade / FindSapi4CLSID.py
Created December 1, 2024 08:24
Seek out the clsid for sapi4
import winreg
def find_sapi4_clsid() -> str:
"""
Search the Windows registry for the SAPI 4 CLSID.
Returns:
str: The CLSID for SAPI 4 if found, else raises an exception.
"""
sapi4_key_path = r"SOFTWARE\WOW6432Node\Microsoft\Speech\Voices\Tokens"
@willwade
willwade / comsapi4test.py
Created November 30, 2024 19:05
Com surrogate technique
import comtypes.client
# SAPI 4 CLSID for the voice
SAPI4_CLSID = "{EEE78591-FE22-11D0-8BEF-0060081841DE}"
def list_sapi4_voices():
"""List available SAPI 4 voices."""
try:
sapi4 = comtypes.client.CreateObject(SAPI4_CLSID)
voices = sapi4.GetVoices()

Idea is to bridge to 32 bit stuff with 64 bit python

Compile the DLL

1.	Use a 32-bit version of Visual Studio to compile the code as a 32-bit DLL.
2.	Set the project to build a DLL:
•	Open Project Properties > Configuration Properties > General.
•	Set Configuration Type to Dynamic Library (.dll).
3.	Specify the output architecture:
•	Under Configuration Properties > Linker > Advanced, set Target Machine to MachineX86 for 32-bit.
@willwade
willwade / midcontroller-demo.swift
Last active November 25, 2024 16:50
Midi-Switch controller
import UIKit
class ViewController: UIViewController {
var midiController: MIDIController?
override func viewDidLoad() {
super.viewDidLoad()
// Initialize the MIDI controller
midiController = MIDIController()
@willwade
willwade / DotNetSpeech.py
Last active November 6, 2024 12:56
A very rough untested attempt at a .net driver for speech synth
import clr
import threading
import queue
import time
from System.Speech.Synthesis import SpeechSynthesizer, SpeakCompletedEventArgs
clr.AddReference("System.Speech")
class DotNetSpeech:
def __init__(self, proxy):
@willwade
willwade / build.bat
Created November 6, 2024 00:08
test nukita and mediapipe
@echo off
setlocal
rem Capture the Poetry environment path
for /f "delims=" %%i in ('poetry env info --path') do set venv_path=%%i
rem Construct the site-packages path
set site_packages=%venv_path%\Lib\site-packages
rem Convert the path to forward slashes for Nuitka compatibility
import comtypes.client
import winreg
class SAPI4Driver:
def __init__(self, proxy):
# Initialize the SAPI 4 VoiceText COM object
self._tts = comtypes.client.CreateObject("Speech.VoiceText")
self._proxy = proxy
self._speaking = False
self._stopping = False
import objc
from AVFoundation import AVSpeechSynthesizer, AVSpeechUtterance, AVSpeechSynthesisVoice, AVAudioEngine, AVAudioFile, AVAudioSession
from Foundation import NSURL, NSObject
class AVSpeechDriver(NSObject):
def __init__(self):
self._proxy = None
self._tts = None
self._audio_engine = AVAudioEngine.alloc().init()
self._audio_file = None