Skip to content

Instantly share code, notes, and snippets.

View hotpaw2's full-sized avatar

Ronald Nicholson hotpaw2

View GitHub Profile
@hotpaw2
hotpaw2 / RecordAudio.swift
Last active April 3, 2024 03:10
Swift Audio Recording class. Reads buffers of input samples from the microphone using the iOS RemoteIO Audio Unit API
//
// RecordAudio.swift
//
// This is a Swift class (updated for Swift 5)
// that uses the iOS RemoteIO Audio Unit
// to record audio input samples,
// (should be instantiated as a singleton object.)
//
// Created by Ronald Nicholson on 10/21/16.
// Copyright © 2017,2019 HotPaw Productions. All rights reserved.
//
// Example of Using AVAudioPlayer
// to play a buffer of (synthesized) audio samples from memory
// by converting a [Float] buffer into an in-memory WAV file
//
// Copyright © 2019 Ronald H Nicholson Jr. All rights reserved.
// (re)Distribution permitted under the 3-clause New BSD license.
//
import Foundation
//
// MyMetalWaterfall.swift
// version 0.1.105 (updated for Swift 5)
//
// Demonstrates using a MetalKit compute shader to render a live waterfall RGB bitmap
// into a UIView
//
// This is a single file iOS app
//
// It includes AppDelegate for a minimal demonstration app
@hotpaw2
hotpaw2 / hl2.emulator.c
Last active February 21, 2024 12:11
Hermes Lite 2 Emulator
// Hermes Lite 2 Basic Metis Protocol 1 Operation Emulator
// emulates Discovery and a 1 slice receiver (for IQ data from a file)
// uses UDP port 1024
//
// cc fhl2e.c -lpthread -lm -o fhl2
//
// ( "usage -n -f0 -g -sr -iq \n" )
// for add noise, add tone frequency & gain, set sample rate, IQ filename
#define FHL2EVERSION ("1.0.102") // 2024-02-05 rhn@hotpaw.com
@hotpaw2
hotpaw2 / ToneOutputUnit.swift
Last active October 29, 2023 13:13
Swift 3 Audio class that can play a simple tone on an iOS device
//
// ToneOutputUnit.swift
//
// This is a Swift 3 class (which should be instantiated as a singleton object)
// that can play a single tone of arbitrary tone and frequency on iOS devices
// using run-time sinewave synthesis and the Audio Unit v3 API with RemoteIO.
//
// Created by Ronald Nicholson rhn@nicholson.com on 2/20/2016.
// revised 2016-Sep-08 for Swift 3
// http://www.nicholson.com/rhn/
// MyURLStreamTask.swift
// Demonstrates using an NSURLSessionStreamTask to implement a bidirectional TCP socket connection
//
// by rhn@nicholson.com 2017-03-07
// distribution: BSD 2-clause
//
import Foundation
class MyURLStreamTask {
/* sieve.c */
/* An old small benchmark from Byte Magazine, circa 1983 and 1984, thus suitable for that vintage of computer. */
#include <stdio.h>
#define TIMES (100000L)
static unsigned char f[8192];
int main()
{
@hotpaw2
hotpaw2 / udp_receive.swift
Last active February 24, 2018 18:38 — forked from NeoTeo/UDPSendReceive.swift
A minimal implementation of a Posix UDP server in Swift.
//
// receive packets via UPD in Swift
// Original: https://gist.github.com/NeoTeo/b6195efb779d925fd7b8
// server only converted to Swift 4 2018-02-24 by rhn@nicholson.com
//
// swiftc udp_receive.swift -o udp_receive
//
import Foundation
rem Some tutorial DSP subroutines for Chipmunk Basic
rem
rem genstab() Generates a sine table for use by the fft() subroutine
rem fft() Implementation of a common in-place DIT FFT algorithm
rem *** genstab(m) - a subroutine to generate sine table of length 2^m ***
rem *** must be called before calling fft() for
rem the first time, and if the length 2^m changes
sub genstab(m)
100 rem SensorTag button press counter
102 rem This program will connect to and count TI SensorTag button presses.
104 rem It can count even in the background or with the iPhone display off.
106 rem Select a Sensor in the List and wait for connection success.
108 rem Tap the display to exit.
110 rem for HotPaw Basic 1.7.7 , rhn@hotpaw.com , 2017-12-08
112 rem
120 fn btle.init()
125 print "Initializing BLE ..."
130 fn sleep(5)