-
Posts
267 -
Joined
-
Last visited
-
Days Won
61
Content Type
Profiles
Forums
Blogs
Events
Downloads
Gallery
Store
Everything posted by Michael Lee
-
FPGA design: Noise - activated musical square waves
Michael Lee commented on Michael Lee's blog entry in Michael's Portal Station
I do need to publish an ML version! It won't be plug & play like Spiricam, but it should be useable for the adventurous. -
FPGA design: Noise - activated musical square waves
Michael Lee commented on Michael Lee's blog entry in Michael's Portal Station
Two more quotes for today, using a different FPGA design, but same ML software. freq_ctr_400_the_transmitter.mp3 "the transmitter" they_clearly_spin_in_circles.mp3 "they clearly spin...circles" -
FPGA design: Noise - activated musical square waves
Michael Lee commented on Michael Lee's blog entry in Michael's Portal Station
Correct on the specifications. I'm using same "translator." I try to make my models as universal as possible and reuse the same ones for all of my experiments. My latest "musical tone" reverser uses as input the whole spectrogram, followed by sparsification (1 to 20 up to 1 to 80) and then reconstitutes the remaining "dots" as 60 ms tones. This provides a fast "tone-ification" of voice that I then train an ML model to reverse. This model can be used with either a tone-based signal (like the one in this thread) or a strong spectral subtraction of a noise signal. For fun, this is the one legible phrase from my 1-minute recording this morning: 16_26_42_this_is_divine_providence.mp3 I hear "This is divine providence." -
FPGA design: Noise - activated musical square waves
Michael Lee posted a blog entry in Michael's Portal Station
I've tried a variety of FPGA "designs." The one I'm sharing now produces musical tones similar to the white keys on a piano for six octaves. The tones are simple square waves which probably sound most like 8-bit video games from the 90's. The spacing of the tones use something called the just intonation temperament. Instead of powers of (1/12), just intonation uses simple fractions that are actually more in tune with each other. The downside of just intonation is that you can't easily change scales. Each tone is activated when a noise source running at 50 million bits per second sends out by chance 26 1's in a row. It sounds pretty unlikely, but given the number of bits per second and the number of tones (N = 42), it happens enough to produce music. Here's a sample: sample_16_26_36.mp3 Here's what the spectrogram of this sample looks like. Square waves produce a fundamental sine wave and odd harmonics (3x, 5x, 7x, etc.) The noise source is perhaps the most critical. In this particular project I'm using XOR'ed ring oscillators. These are described in the scientific literature. The big challenge is that no two ring oscillators are exactly alike. Despite having the same "length" of 101 delay gates, the idiosyncracies of chip transistors means the actual delay times will vary between each RO. Also, their susceptibility to noise will each be different. I can only hope that 16x RO's per tone is enough randomness to average out the variations so that each tone will trigger the same number of times. If you look carefully at the spectrogram, you will see certain tones are little more triggered than others. Here are some voice samples after the signal is translated via machine learning: "confident signal" 16_26_42_confident_signal.mp3 "it mirrors wonderful" 16_26_42_it_mirrors_wonderful.mp3 "given the opposite" 16_26_36_given_the_opposite.mp3 "now that we're talking" 16_26_36_i_like_were_talking.mp3 Finally, here's the Verilog code, for some future brave FPGA developer: // // Author: Michael S. Lee // Noise source-activate musical square wave tones // Started: 12/2021 // module XOR_loop_gate #(parameter N = 149) // Length of each RO (input wire clki, output wire gate0); wire [N:0] loop[M-1:0] /* synthesis keep */; reg [0:0] gate; reg [M-1:0] lpb; reg [L-1:0] buffer = 0; wire hit; reg [0:0] check; integer ctr; parameter period = 65536 * 48; // duration of tone (in 50 Mhz samples) parameter M = 16; // # of ring oscillators parameter L = 26; // length of seq. of 1s to turn on gate genvar i, k; integer j; generate for (i = 0; i < M; i = i + 1) begin: loopnum assign loop[i][N] = ~ (loop[i][0]); for (k = 0; k < N; k = k + 1) begin: loops assign loop[i][k] = loop[i][k+1]; end end endgenerate assign hit = ^(lpb); assign gate0 = gate; always @(posedge clki) begin for (j = 0 ; j < M; j = j + 1) begin lpb[j] <= loop[j][0]; end buffer = (buffer << 1) + hit; check = &(buffer); if (check == 1) begin ctr <= period; gate <= 1; end else if (ctr > 0) begin ctr <= ctr - 1; end else begin gate <= 0; end end endmodule module Direct_Voice(clk,out); input clk; output wire out; parameter N = 42; // # of musical tones parameter bits = 7; reg [bits+1:0] PWM = 0; genvar k; integer i; wire [N-1:0] outw /* synthesis keep */; reg[N-1:0] outr; reg[18:0] outp[N]; integer sum, suma[24]; reg[22:0] clk2 = 0, clk3 = 0, clk5 = 0, clk7 = 0, clk9 = 0, clk15 = 0; generate for (k = 0; k < N; k = k + 1) begin: prep XOR_loop_gate #(101) test(clk, outw[k]); end endgenerate assign out = PWM[bits+1]; always @(posedge clk) begin // Clocks for different musical tones clk2 = clk2 + 1; clk3 = clk3 + 3; clk5 = clk5 + 5; clk7 = clk7 + 7; clk9 = clk9 + 9; clk15 = clk15 + 15; // Convert wire gates to registers for (i = 0 ; i < N; i = i + 1) begin outr[i] <= outw[i]; end suma[0] = (outr[0] & clk2[19]) + (outr[1] & clk3[19]); suma[1] = (outr[2] & clk5[20]) + (outr[3] & clk7[20]); suma[2] = (outr[4] & clk9[21]) + (outr[5] & clk15[21]); suma[3] = (outr[6] & clk2[18]) + (outr[7] & clk3[18]); suma[4] = (outr[8] & clk5[19]) + (outr[9] & clk7[19]); suma[5] = (outr[10] & clk9[20]) + (outr[11] & clk15[20]); suma[6] = (outr[12] & clk2[17]) + (outr[13] & clk3[17]); suma[7] = (outr[14] & clk5[18]) + (outr[15] & clk7[18]); suma[8] = (outr[16] & clk9[19]) + (outr[17] & clk15[19]); suma[9] = (outr[18] & clk2[16]) + (outr[19] & clk3[16]); suma[10] = (outr[20] & clk5[17]) + (outr[21] & clk7[17]); suma[11] = (outr[22] & clk9[18]) + (outr[23] & clk15[18]); suma[12] = (outr[24] & clk2[15]) + (outr[25] & clk3[15]); suma[13] = (outr[26] & clk5[16]) + (outr[27] & clk7[16]); suma[14] = (outr[28] & clk9[17]) + (outr[29] & clk15[17]); suma[15] = (outr[30] & clk2[14]) + (outr[31] & clk3[14]); suma[16] = (outr[32] & clk5[15]) + (outr[33] & clk7[15]); suma[17] = (outr[34] & clk9[16]) + (outr[35] & clk15[16]); suma[18] = (outr[36] & clk2[13]) + (outr[37] & clk3[13]); suma[19] = (outr[38] & clk5[14]) + (outr[39] & clk7[14]); suma[20] = (outr[40] & clk9[15]) + (outr[41] & clk15[15]); // suma[21] = (outr[36] & clk2[20]) + (outr[37] & clk3[20]); // suma[22] = (outr[38] & clk5[21]) + (outr[39] & clk7[21]); // suma[23] = (outr[40] & clk9[22]) + (outr[41] & clk15[22]); sum = 0; for (i = 0 ; i < 21; i = i + 1) begin sum = sum + suma[i]; end PWM = PWM[bits:0] + sum; end endmodule 16_26_36_let_this_have_her_influence.mp3 16_26_36_with_portal_music.mp3 -
Some of them remind me a robot dog barking. The 0:06 remind me of a 60's sci-fi TV show.
-
resonance Cardboard tube working as variable resonator
Michael Lee commented on Andres Ramos's blog entry in Steampunk EVP's
Chicken Morse Code. What's the recipe? -
Going Steampunk: Fan Excited Guitar Strings
Michael Lee commented on Michael Lee's blog entry in Michael's Portal Station
That's a really good point, at best I have a linear space of 6 string waveforms for them to form sounds. One my earliest visions, showed I think 7 or 9 lines, so maybe it's enough, especially if you sprinkle some special ML sauce -
Try putting your hand over the tube, to get a "waah" sound, then if that works, figure out some sort of valve lid you could make, controlled by a second buzzer.
-
Going Steampunk: Fan Excited Guitar Strings
Michael Lee commented on Michael Lee's blog entry in Michael's Portal Station
I agree, we're trying to make artificial humans for spirits to affect. Woops did I say that? The electrical hum may have an additive effect since the guitar strings have a limited spectrum. I don't think there's high frequencies in the strings to make complete formants, or I need some careful EQ effects in the chain to bring out the HF. -
Going Steampunk: Fan Excited Guitar Strings
Michael Lee posted a blog entry in Michael's Portal Station
A lot of the ITC work I do, I try to keep it all electronic. I like to use microphone amps, analog-to-digital converters (ADCs), software defined radios (SDRs), and field-programmable gate arrays (FPGAs). However, I have explored a few mechanical noises sources in the past including dragging a microphone across a wood table and some plastic crumpling (following Andres Ramos' efforts). Let's just say I was recently inspired by the heavens to look at mechanic vibrations again. Also, some of my Here colleagues are exploring mechanical ITC too, so I thought I'd give it a try. Where to start? Well I know that spirits can form voices in air, and we can pick them up microphones, but as expected, the voices come out "wispy." If you think about them as exciting tones within the air, the tones aren't going to last very long with the way air is. Meanwhile, we know that metal has a very long "ring" or slow dampening coefficient. However, metal is heavy and it needs to be "excited" or struck to make a sound. In regular air, it should be just about silent, although I'm sure a very sensitive microphone could pick out the thermal vibrations of a metal guitar string. Therefore, I needed some form of excitation. One idea would be to periodically tap the strings of guitar and then listen to the slowly declining ring of tones. Another possibility is to blow a fan at the strings. Another is to use the vibration of the fan itself as an exciter. The positives of the fan include (1) simple to do, (2) somewhat random, possibly evenly distributed excitations. The negatives include 1) the fan's electrical interference to the guitar pickups and 2) The random and periodic signals of the fan itself which may or may not be perturbed by spirit. Here's the apparatus: Here is the best clean "excited" guitar string sound I could get today: raw_guitar_wind.mp3 Unfortunately, I can't reproduce this now, so I'll have to endure a higher proportion of electrical noise. noisy_guitar.mp3 Here are some machine-learning-translated words or phrases. There are not the best I've observed, but fun nonetheless. guitar_fan_music.mp3 "music" guitar_fan_just_amazing.mp3 "just amazing"? guitar_fan_that_is_beautiful.mp3 "that is beautiful" guitar_yes_all_the_runs_are_beautiful.mp3 "yes all the runs are beautiful" -
Yes. Ill need to write a full post, to explain how I came up with the idea. I know, Im becoming so steampunk!
-
Ive been on a similar track lately. Have no clue why
-
diaphragm Rotating steel ball and diaphragm
Michael Lee commented on Andres Ramos's blog entry in Steampunk EVP's
It definitely takes some tweaking. Also, I have "denoiser" ML model now that while still produces phonetic fragments, it sounds like the original voice that I trained it with. So everything will start to sound like a US General.- 12 comments
-
1
-
- itc
- vibrations
-
(and 1 more)
Tagged with:
-
-
Direct Voices - George W. Meek
Michael Lee replied to Michael Brandel's topic in Audio - Electronic Voice Phenomena (EVP)
This reminds me of my tone vocoders. One of the challenges is ensuring that each tone has the same statistics (fluctuations in volume). I also can develop machine learning models for whatever set of tone frequencies you choose that will "translate" to clearer voice. -
Hi Robert! The quantum selection effect could be a mechanism of how spirit influences things (electronics and our physical bodies). If so, one would want to prepare as many metastable states as possible for the spirits to influence. An analogy is the spirit knocking over bowling pins. One could count the number of pins falling over per unit time or the measure direction they fell. One of the biggest problems I've noticed, and I've explored not just audio, but images, and digital ITC, is how weak the spirit signal actually is. This means that we need sort of a paradoxical situation. Quietness from the physical environment but also metastability/ease of knocking over. Typically, sensitive sensors pick up everything around them.
-
Spiricam software: Call for Alpha Testers
Michael Lee replied to Michael Lee's topic in Visual - Faces in Software
The new version v0.81 automatically pauses the recording, if a new camera is selected during recording. -
Spiricam software: Call for Alpha Testers
Michael Lee replied to Michael Lee's topic in Visual - Faces in Software
Some malware detectors don't like Python executables and all of the libraries. From what I've Googled, HEUR=heuristic - it's guessing that one of the libraries might be evil. But people say it shouldn't be a problem. Sincerely, the Malware on Michael's computer. -
Version 0.81
103 downloads
Use your webcam as a portal into other dimensions! This program supersedes Spiricam v0.74. Among fixes: - Color should work better. (Bug fix) - Arrow keys can control frame index - Brightness/Contrast/Gamma slides for lighting adjustments - Device selection pauses recording - Exit button removed: use top right "x" button to close program or the keys "x" or "X". - Magnitude clipping for suppressing bright pixels - Camera resolution can now be changed in "config.ini". Instructions Unzip the ZIP. Navigate to EXE file in the folder and double-click it to start program. There's also a README.txt and config.ini you can edit. If you any questions/comments, you can post on the Varanormal forum. -
received_1022895621869503~2.jpg
Michael Lee commented on Deb Costello Booth's gallery image in Member Albums
This image is intriguing. Were you asleep or just very relaxed? Were you intending to separate for the camera to pick up? The reason I'm intrigued, is because the lighting is "positive" in both copies of you. Here's an example of me just moving my head really quick. Notice how one of me is positive lighting, the other is inverse or negative lighting. -
-
-