Python - Oscilloscope2019 Community Moderator ElectionCalling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonDifference between append vs. extend list methods in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?
Why is there so much iron?
What is the reasoning behind standardization (dividing by standard deviation)?
Imaginary part of expression too difficult to calculate
Asserting that Atheism and Theism are both faith based positions
Unable to get newly inserted Product's Id using After Plugin for Catalog Product save controller method
Recursively updating the MLE as new observations stream in
Is there any common country to visit for uk and schengen visa?
How do researchers send unsolicited emails asking for feedback on their works?
How can an organ that provides biological immortality be unable to regenerate?
Hackerrank All Women's Codesprint 2019: Name the Product
Why is "la Gestapo" feminine?
Animating wave motion in water
label a part of commutative diagram
Why do I have a large white artefact on the rendered image?
Do native speakers use "ultima" and "proxima" frequently in spoken English?
Did Nintendo change its mind about 68000 SNES?
Was World War I a war of liberals against authoritarians?
is this saw blade faulty?
Help with identifying unique aircraft over NE Pennsylvania
What (if any) is the reason to buy in small local stores?
Why doesn't the fusion process of the sun speed up?
Weird lines in Microsoft Word
The English Debate
Fair way to split coins
Python - Oscilloscope
2019 Community Moderator ElectionCalling an external command in PythonWhat are metaclasses in Python?Finding the index of an item given a list containing it in PythonDifference between append vs. extend list methods in PythonHow can I safely create a nested directory in Python?Does Python have a ternary conditional operator?How to get the current time in PythonHow can I make a time delay in Python?Does Python have a string 'contains' substring method?Why is “1000000000000000 in range(1000000000000001)” so fast in Python 3?
I am trying to create a program in python which can create an oscilloscope from live audio (through a microphone)
The difference to a normal oscilloscope is that this will only show one wave length, for example (desired output):
This shows three different wavelengths, and how they will each show on the program.
My progress so far:
- I've created a program to show a graph and clear and redraw it
- I've then created a program which will display the sound live (Although it's very slow, which would ideally be fixed if possible)
Code #1:
import matplotlib.pyplot as plt
import time
plt.ion()
#y1 is the data
y1 = [0,0.309,0.587,0.809,0.951,1,0.951,0.809,0.587,0.309,0, -0.309, -0.587, -0.809, -0.951, -1, -0.951, -0.809, -0.587, -0.309, 0]
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
while True:
#Update data to new data
#y1 = new data
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
plt.draw()
plt.pause(0.5) #Time for one wave? Need some way to find this...
plt.clf()
Code #2:
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
import time
RATE = 44100
CHUNK = int(RATE/20) # RATE / number of updates per second
def soundplot(stream):
t1=time.time()
data = np.fromstring(stream.read(CHUNK),dtype=np.int16)
plt.pause(0.1) #To draw graph!
plt.clf()
plt.plot(data)
plt.draw()
plt.axis([0,len(data),-2**16/2,2**16/2])
print("took %.02f ms"%((time.time()-t1)*1000))
if __name__=="__main__":
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,
frames_per_buffer=CHUNK)
for i in range(int(20*RATE/CHUNK)): #do this for 10 seconds
soundplot(stream)
stream.stop_stream()
stream.close()
p.terminate()
Edit: To make it clear, my desired outcome is to show one single wave length as seen in the picture, instead of multiple which is what the second code produces
python python-3.x audio microphone oscilloscope
add a comment |
I am trying to create a program in python which can create an oscilloscope from live audio (through a microphone)
The difference to a normal oscilloscope is that this will only show one wave length, for example (desired output):
This shows three different wavelengths, and how they will each show on the program.
My progress so far:
- I've created a program to show a graph and clear and redraw it
- I've then created a program which will display the sound live (Although it's very slow, which would ideally be fixed if possible)
Code #1:
import matplotlib.pyplot as plt
import time
plt.ion()
#y1 is the data
y1 = [0,0.309,0.587,0.809,0.951,1,0.951,0.809,0.587,0.309,0, -0.309, -0.587, -0.809, -0.951, -1, -0.951, -0.809, -0.587, -0.309, 0]
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
while True:
#Update data to new data
#y1 = new data
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
plt.draw()
plt.pause(0.5) #Time for one wave? Need some way to find this...
plt.clf()
Code #2:
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
import time
RATE = 44100
CHUNK = int(RATE/20) # RATE / number of updates per second
def soundplot(stream):
t1=time.time()
data = np.fromstring(stream.read(CHUNK),dtype=np.int16)
plt.pause(0.1) #To draw graph!
plt.clf()
plt.plot(data)
plt.draw()
plt.axis([0,len(data),-2**16/2,2**16/2])
print("took %.02f ms"%((time.time()-t1)*1000))
if __name__=="__main__":
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,
frames_per_buffer=CHUNK)
for i in range(int(20*RATE/CHUNK)): #do this for 10 seconds
soundplot(stream)
stream.stop_stream()
stream.close()
p.terminate()
Edit: To make it clear, my desired outcome is to show one single wave length as seen in the picture, instead of multiple which is what the second code produces
python python-3.x audio microphone oscilloscope
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02
add a comment |
I am trying to create a program in python which can create an oscilloscope from live audio (through a microphone)
The difference to a normal oscilloscope is that this will only show one wave length, for example (desired output):
This shows three different wavelengths, and how they will each show on the program.
My progress so far:
- I've created a program to show a graph and clear and redraw it
- I've then created a program which will display the sound live (Although it's very slow, which would ideally be fixed if possible)
Code #1:
import matplotlib.pyplot as plt
import time
plt.ion()
#y1 is the data
y1 = [0,0.309,0.587,0.809,0.951,1,0.951,0.809,0.587,0.309,0, -0.309, -0.587, -0.809, -0.951, -1, -0.951, -0.809, -0.587, -0.309, 0]
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
while True:
#Update data to new data
#y1 = new data
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
plt.draw()
plt.pause(0.5) #Time for one wave? Need some way to find this...
plt.clf()
Code #2:
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
import time
RATE = 44100
CHUNK = int(RATE/20) # RATE / number of updates per second
def soundplot(stream):
t1=time.time()
data = np.fromstring(stream.read(CHUNK),dtype=np.int16)
plt.pause(0.1) #To draw graph!
plt.clf()
plt.plot(data)
plt.draw()
plt.axis([0,len(data),-2**16/2,2**16/2])
print("took %.02f ms"%((time.time()-t1)*1000))
if __name__=="__main__":
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,
frames_per_buffer=CHUNK)
for i in range(int(20*RATE/CHUNK)): #do this for 10 seconds
soundplot(stream)
stream.stop_stream()
stream.close()
p.terminate()
Edit: To make it clear, my desired outcome is to show one single wave length as seen in the picture, instead of multiple which is what the second code produces
python python-3.x audio microphone oscilloscope
I am trying to create a program in python which can create an oscilloscope from live audio (through a microphone)
The difference to a normal oscilloscope is that this will only show one wave length, for example (desired output):
This shows three different wavelengths, and how they will each show on the program.
My progress so far:
- I've created a program to show a graph and clear and redraw it
- I've then created a program which will display the sound live (Although it's very slow, which would ideally be fixed if possible)
Code #1:
import matplotlib.pyplot as plt
import time
plt.ion()
#y1 is the data
y1 = [0,0.309,0.587,0.809,0.951,1,0.951,0.809,0.587,0.309,0, -0.309, -0.587, -0.809, -0.951, -1, -0.951, -0.809, -0.587, -0.309, 0]
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
while True:
#Update data to new data
#y1 = new data
plt.plot(y1, 'r.-') #Graph with data
plt.plot([0 for _ in y1]) #Straight line at y=0
plt.draw()
plt.pause(0.5) #Time for one wave? Need some way to find this...
plt.clf()
Code #2:
import pyaudio
import numpy as np
import matplotlib.pyplot as plt
import time
RATE = 44100
CHUNK = int(RATE/20) # RATE / number of updates per second
def soundplot(stream):
t1=time.time()
data = np.fromstring(stream.read(CHUNK),dtype=np.int16)
plt.pause(0.1) #To draw graph!
plt.clf()
plt.plot(data)
plt.draw()
plt.axis([0,len(data),-2**16/2,2**16/2])
print("took %.02f ms"%((time.time()-t1)*1000))
if __name__=="__main__":
p=pyaudio.PyAudio()
stream=p.open(format=pyaudio.paInt16,channels=1,rate=RATE,input=True,
frames_per_buffer=CHUNK)
for i in range(int(20*RATE/CHUNK)): #do this for 10 seconds
soundplot(stream)
stream.stop_stream()
stream.close()
p.terminate()
Edit: To make it clear, my desired outcome is to show one single wave length as seen in the picture, instead of multiple which is what the second code produces
python python-3.x audio microphone oscilloscope
python python-3.x audio microphone oscilloscope
edited Mar 7 at 19:02
Ruler Of The World
asked Mar 7 at 18:57
Ruler Of The WorldRuler Of The World
551323
551323
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02
add a comment |
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02
add a comment |
1 Answer
1
active
oldest
votes
To show a single wavelength, first scan forward in time until you find a non-negative data point. (This would happen at once, with the very first entry, with the data in Code #1.)
Then continue scanning forward in time, and maintain a delta between successive samples. Initially the delta (or discrete derivative) will be positive as the curve approaches its max, then will turn negative till hitting a min, then will turn positive again.
Stop scanning forward in time when you encounter a non-negative data point and the delta is positive. At that point you have a full wavelength.
EDIT:
If you have lots of data then it's OK to skip some preamble data samples. The key here is we want to find a zero crossing with positive derivative, and then keep going until we find another zero crossing with positive derivative. So that first decision should both look for a non-negative data point and insist on positive delta.
In the presence of noise, we might see sign changes on delta more often than the period of the waveform. So an initial step might be to find min and max values for a bunch of samples (implying a range), then pick arbitrary thresholds like min + .25 * range and min + .75 * range, record the first positive zero crossing, wait for signal to exceed the high threshold, wait for it to go below the low threshold (after a negative zero crossing), then record the next positive zero crossing. That gives you an estimate of wavelength. Make repeated estimates if you find that helpful, and take some convenient aggregate like the mean or (better) the median.
Armed with a wavelength estimate, you're in a better position to evaluate whether a pair of positive zero crossings appear to be "correct" or due to noise. Reject pairs that are much closer together than your estimate would suggest. You may also find it convenient to compute a smoothed derivative, so instead of delta of last two points seen (K=2), you are averaging over the last K points, perhaps half a dozen of them. The average function is a low pass filter which rejects high frequency noise.
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
add a comment |
Your Answer
StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050976%2fpython-oscilloscope%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
To show a single wavelength, first scan forward in time until you find a non-negative data point. (This would happen at once, with the very first entry, with the data in Code #1.)
Then continue scanning forward in time, and maintain a delta between successive samples. Initially the delta (or discrete derivative) will be positive as the curve approaches its max, then will turn negative till hitting a min, then will turn positive again.
Stop scanning forward in time when you encounter a non-negative data point and the delta is positive. At that point you have a full wavelength.
EDIT:
If you have lots of data then it's OK to skip some preamble data samples. The key here is we want to find a zero crossing with positive derivative, and then keep going until we find another zero crossing with positive derivative. So that first decision should both look for a non-negative data point and insist on positive delta.
In the presence of noise, we might see sign changes on delta more often than the period of the waveform. So an initial step might be to find min and max values for a bunch of samples (implying a range), then pick arbitrary thresholds like min + .25 * range and min + .75 * range, record the first positive zero crossing, wait for signal to exceed the high threshold, wait for it to go below the low threshold (after a negative zero crossing), then record the next positive zero crossing. That gives you an estimate of wavelength. Make repeated estimates if you find that helpful, and take some convenient aggregate like the mean or (better) the median.
Armed with a wavelength estimate, you're in a better position to evaluate whether a pair of positive zero crossings appear to be "correct" or due to noise. Reject pairs that are much closer together than your estimate would suggest. You may also find it convenient to compute a smoothed derivative, so instead of delta of last two points seen (K=2), you are averaging over the last K points, perhaps half a dozen of them. The average function is a low pass filter which rejects high frequency noise.
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
add a comment |
To show a single wavelength, first scan forward in time until you find a non-negative data point. (This would happen at once, with the very first entry, with the data in Code #1.)
Then continue scanning forward in time, and maintain a delta between successive samples. Initially the delta (or discrete derivative) will be positive as the curve approaches its max, then will turn negative till hitting a min, then will turn positive again.
Stop scanning forward in time when you encounter a non-negative data point and the delta is positive. At that point you have a full wavelength.
EDIT:
If you have lots of data then it's OK to skip some preamble data samples. The key here is we want to find a zero crossing with positive derivative, and then keep going until we find another zero crossing with positive derivative. So that first decision should both look for a non-negative data point and insist on positive delta.
In the presence of noise, we might see sign changes on delta more often than the period of the waveform. So an initial step might be to find min and max values for a bunch of samples (implying a range), then pick arbitrary thresholds like min + .25 * range and min + .75 * range, record the first positive zero crossing, wait for signal to exceed the high threshold, wait for it to go below the low threshold (after a negative zero crossing), then record the next positive zero crossing. That gives you an estimate of wavelength. Make repeated estimates if you find that helpful, and take some convenient aggregate like the mean or (better) the median.
Armed with a wavelength estimate, you're in a better position to evaluate whether a pair of positive zero crossings appear to be "correct" or due to noise. Reject pairs that are much closer together than your estimate would suggest. You may also find it convenient to compute a smoothed derivative, so instead of delta of last two points seen (K=2), you are averaging over the last K points, perhaps half a dozen of them. The average function is a low pass filter which rejects high frequency noise.
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
add a comment |
To show a single wavelength, first scan forward in time until you find a non-negative data point. (This would happen at once, with the very first entry, with the data in Code #1.)
Then continue scanning forward in time, and maintain a delta between successive samples. Initially the delta (or discrete derivative) will be positive as the curve approaches its max, then will turn negative till hitting a min, then will turn positive again.
Stop scanning forward in time when you encounter a non-negative data point and the delta is positive. At that point you have a full wavelength.
EDIT:
If you have lots of data then it's OK to skip some preamble data samples. The key here is we want to find a zero crossing with positive derivative, and then keep going until we find another zero crossing with positive derivative. So that first decision should both look for a non-negative data point and insist on positive delta.
In the presence of noise, we might see sign changes on delta more often than the period of the waveform. So an initial step might be to find min and max values for a bunch of samples (implying a range), then pick arbitrary thresholds like min + .25 * range and min + .75 * range, record the first positive zero crossing, wait for signal to exceed the high threshold, wait for it to go below the low threshold (after a negative zero crossing), then record the next positive zero crossing. That gives you an estimate of wavelength. Make repeated estimates if you find that helpful, and take some convenient aggregate like the mean or (better) the median.
Armed with a wavelength estimate, you're in a better position to evaluate whether a pair of positive zero crossings appear to be "correct" or due to noise. Reject pairs that are much closer together than your estimate would suggest. You may also find it convenient to compute a smoothed derivative, so instead of delta of last two points seen (K=2), you are averaging over the last K points, perhaps half a dozen of them. The average function is a low pass filter which rejects high frequency noise.
To show a single wavelength, first scan forward in time until you find a non-negative data point. (This would happen at once, with the very first entry, with the data in Code #1.)
Then continue scanning forward in time, and maintain a delta between successive samples. Initially the delta (or discrete derivative) will be positive as the curve approaches its max, then will turn negative till hitting a min, then will turn positive again.
Stop scanning forward in time when you encounter a non-negative data point and the delta is positive. At that point you have a full wavelength.
EDIT:
If you have lots of data then it's OK to skip some preamble data samples. The key here is we want to find a zero crossing with positive derivative, and then keep going until we find another zero crossing with positive derivative. So that first decision should both look for a non-negative data point and insist on positive delta.
In the presence of noise, we might see sign changes on delta more often than the period of the waveform. So an initial step might be to find min and max values for a bunch of samples (implying a range), then pick arbitrary thresholds like min + .25 * range and min + .75 * range, record the first positive zero crossing, wait for signal to exceed the high threshold, wait for it to go below the low threshold (after a negative zero crossing), then record the next positive zero crossing. That gives you an estimate of wavelength. Make repeated estimates if you find that helpful, and take some convenient aggregate like the mean or (better) the median.
Armed with a wavelength estimate, you're in a better position to evaluate whether a pair of positive zero crossings appear to be "correct" or due to noise. Reject pairs that are much closer together than your estimate would suggest. You may also find it convenient to compute a smoothed derivative, so instead of delta of last two points seen (K=2), you are averaging over the last K points, perhaps half a dozen of them. The average function is a low pass filter which rejects high frequency noise.
edited Mar 7 at 21:38
answered Mar 7 at 19:08
J_HJ_H
3,9401821
3,9401821
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
add a comment |
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
Great answer! Is there any way for me to speed up the graphing process so it doesn't take as long, because I have to wait around 0.2 seconds which means there will only be 5 updates a second
– Ruler Of The World
Mar 7 at 19:17
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
You might be interested in the high speed graphing accomplished by ondras.github.io/oscope or by various web assembly projects that render Jerobeam Fenderson waveforms.
– J_H
Mar 7 at 21:42
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
This is amazing, thank you so much!
– Ruler Of The World
Mar 7 at 22:06
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55050976%2fpython-oscilloscope%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
That's cool, but do you have a question or need help with something? If so you should update your post to include what you need.
– Random Davis
Mar 7 at 19:00
Thanks! And yes, I need to show only one wave length as shown in the picture, instead of multiple at once @RandomDavis
– Ruler Of The World
Mar 7 at 19:00
@RandomDavis I made an edit to make it clearer
– Ruler Of The World
Mar 7 at 19:02