DirectSound Reading Data From Capture Buffer?
Jul 13, 2011
where I'm going wrong with my circular DirectSound Capture buffer here? If I just capture sound into a big non-circular buffer it works fine, but with a 1 second (44100 bytes) buffer and a 100ms timer to poll the read position it goes haywire. No error messages, just long blocks of zeros with short bursts of valid data. calculation of the number of bytes to read and/or the read position.
Here is the code. gBuffer is defined elsewhere as a big byte array. In this example I am just trying to copy the captured sound data from the small temporary byte array (tempBuffer) into the big gBuffer byte array. Obviously this must be done so that every byte is read and copied into the byte array with no gaps or duplication of values. Timer1 is set to 100mS:
Dim McaptureBuffer As CaptureBuffer
Dim MiLastReadPos As Integer
Dim MiBufferOffset As Integer
[Code].....
View 2 Replies
ADVERTISEMENT
Feb 8, 2012
I use the following code (with Imports Microsoft.DirectX.DirectSound and Microsoft.DirectX) to play sound using an 8 second static buffer:
Dim SD As Device = New Device
SD.SetCooperativeLevel(Me.Handle, CooperativeLevel.Priority)
Dim MS As New IO.MemoryStream(Gbuffer) ' Gbuffer is byte array with properly formatted WAV data
Dim waveFormat As New WaveFormat
waveFormat.SamplesPerSecond = 44100
[Code] .....
What I would like to do next is to change to a "circular" or "streaming" buffer so that I can write new data "on the fly". I've done a lot of Googling but can't quite see how to adapt my present code to use a circular buffer. I can get the current write and play positions using Msb.GetCurrentPosition(iPlayPos, iWritePos) but how do I actually insert new data into the buffer? I have tried "manually" writing new data into my Gbuffer byte array but that doesn't work - I guess once a sound has been played through once, the data is cached somewhere and the contents of Gbuffer are not used again.
View 7 Replies
Sep 29, 2009
I'm reading a file into a buffer using the Space function. Then I'm using blowfish dll's to encrypt it, and want to write the encrypted data to a txt file. (I realize you can use .NET cryptography classes, but I need to use these old blowfish dll's for this project.) Anyway, when when I encrypt the data in the buffer, I can see all encrypted data, but when I write it out to a file, I get a few lines of encrypted data and the rest of plain text.
HTML
' BLOCK_SIZE is a const which = 2048
sBlock = Space(BLOCK_SIZE)
Using sr As StreamReader = New StreamReader(FileToEncrypt)
sBlock = sr.ReadToEnd()
End Using[Code] ....
View 4 Replies
Nov 15, 2009
I'm currently working on a little software for my GPS and i havent touched VB in about 10 years so I'm trying to figure this out from scratch again pretty much. Anyway, I have this code to get the information from the GPS and parse it, the only problem is that It isn't getting all the code at once and then parsing, it is getting bits and pieces and only getting the RIGHT code from time to time..
Private Sub timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles timer1.Tick
[Code]....
View 6 Replies
Feb 22, 2009
Does reading the serial port empty the buffer?
View 2 Replies
Mar 3, 2009
i need to read a large file stream binary my code is Dim sr As New IO.FileStream(srcFile,
[Code]..
View 10 Replies
Aug 26, 2009
I am trying to write a thread safe application that contains 3 threads : -
1 - Data acquisition and decoding
2- Data graphing
3 - FFT and filtering
Thread 1 is collecting bytes from the serial port and converting them int integers (so taking two bytes) after is has captured 64 Bytes and converted into 32 integers, it then needs to pass the array to the graphing thread.
The graphing thread then plots the data and waits for more data.
Thread 3 also waits until thread one has collected 2023 integers and takes these and performs some FFT calculations (which take time).
My question is how do i share the arrays between the three threads without deadlocking the program? as the serial thread will be flying around reasonable fast (1000 bytes per second) so it will synclock onto the shared buffers for most of the time.
Originally i was going to use two synchronised queues, so when thread 1 has collected 32 bytes it queues the data into the graph queue, and once it has collected 2023 it queues the data into the FFT queue.
Then thread 2 and 3 can simple dequeue the data.
However using queues has the overhead of casting the data in and out, and as i know the data type i was planning on using two arrays :-
Dim GraphArray() as ushort
Dim FFTArray() as ushort
Then Thread 1 adds data to each thread, and thread 2 and 3 simple wait until the correct amount of data is available before removing the data. my question is there an array type that allows me to remove x amount of data from an array?
Because i cannot do this easily with the ararys defined as above (GraphArray, FFTArray), as i was planning on making them 1mByte and allowing thread 1 to fill them Knowing they should never overflow and then let thread 2 and 3 remove x amout of bytes at a time unless there is a better way of doing it
View 13 Replies
Jul 31, 2010
I am using VB.net sockets to send a music file from one instance to another. It currently saves the file, but I do not want to be caught up in file-sharing, so I want to "save" it to a buffer, and when it gets to a particular percentage transferred, I want another thread to play the music file, deleting it from the buffer as it plays. I have the code to send it over the network, but I need to know how to keep it in a buffer and not save it as a file.
View 1 Replies
Dec 15, 2011
[Code]...
This is my code for retrieving pictures, it was working before but then i accidentally deleted the table and i created it again with the same name and same fields. and now whenever i open the form with the picture, there was a message box error. it says Buffer cannot be null. Parameter name: buffer I don't know what i did wrong.
View 5 Replies
Jan 29, 2009
I'm looking for some help/examples on reading or updating the video capture filter properties in VB.NET. I am working with a USB video device that came on a Panasonic Toughbook. The camera has alot of functions that the user can set when running the software that came with the toughbook (zoom, bightness, contrast, etc)
[Code]...
View 1 Replies
Sep 6, 2011
i am new to directsound. I was wondering if someone could point to a resource that explains how to load wav files and play them using directsound. I found one webpage that explains how to load wavs and play them but you load them by clicking a button and searching a window for the file; what I need is programmatic loading. I can't use simpler methods to play the wavs because I need multiple sounds playing at once and very fast execution times. If it isn't too difficult, perhaps someone could post some code.
View 4 Replies
Dec 18, 2010
I'm currently trying to Capture through DirectSound, I've been trying toying around with WaveLib(Ported to VB) but this is very confusing. Anyway, I cant figure out how I am supposed to do this and would like some assistance. The end goal of this project is to: Record Microphone > Encode with Speex Codec > Send over UDP > Decode > Play on Speakers
View 3 Replies
Jun 18, 2011
I am trying to follow some tutorials on using DirectSound in VB.NET and I need a reference to Microsoft.DirectX.DirectSound in my project. I have downloaded and installed the Microsoft DirectX SDK (June 2010) but after a restart I have no additional .NET references available to add to my project. I must be doing something really dumb
View 2 Replies
Aug 6, 2011
I have used DirectSound to play a wave file in my application using the function CreateSoundBufferFromFile. It works perfectly.Now I want to play files from a resource dll file. I have created 1n2v32.dll file having nearly 100 small wave files named 1,2,3... I can play them using LoadLibraryEx, PlaySound & FreeLibrary.Now, I am trying to use CreateSoundBufferFromResource function from DirectSound api to play these files. I get Run-time error '432': File name or class name not found during Automation operation I used the following code to create the buffer.
Set LDSB = LDS.CreateSoundBufferFromResource(App.Path & "1n2v32.dll", "14", BufferDesc, gw)
View 6 Replies
Nov 17, 2011
how to capture audio output with directsound? i'd want to be able to save it as .wav, .mp3, or .wma file format.
View 9 Replies
Apr 29, 2012
how can i create a buffer with BufferCaps.ControlEffects set to false in order to clone it? Here's the documentation
Public AudioData(7, 15) As SecondaryBuffer
Dim dev As New Device
Public Sub LoadAllData(ByVal ph As IntP
[code]....
View 2 Replies
Sep 16, 2009
So I was working in the forums and on the side bar of some thread I saw this link: [URL]...It turned out to be almost entirely about MIDI, but it made me think that I really need to share some code I wrote a few months ago and see if perhaps there is reason to create what the above thread really asked for.Here's a little background on the following code:
Back in April or so of this year I was doing some spring cleaning and came across the old Yahama PSR-6 synthesizer keyboard I had received one year for Christmas when I was around eight. I remember I used to like the Bagpipe voice because at the low notes it made a good fart sound. For a Toys-R-Us/Radio Shack model keyboard, running on six D-Cell batteries, produced in the early to mid eighties, that was an impressive achievement. LOL Anyway, I always did want to learn to play piano (or keyboard) so I decided to literally dust the thing off, put batteries in it, and fiddle around a bit. A couple YouTube videos later and I was convinced that I wanted to do this. While I was waiting for the thing to ship and arrive, I thought that it really shouldn't be that hard to take a DirectSound SecondaryBuffer object and inject it with sound data which whas calculated based on the harmonic values of musical notes, thereby creating your own synthesizer.
First, I really had little idea what I was doing when I first set about doing this other than the general structure of calculating byte data for notes and stuffing them into a SecondaryBuffer object while it played. I had used direct sound a number of times in a number of ways, but always playing sound data that came from a source (file, stream, etc.). This would be my first attempt at generating sound data for the buffer.
Second, I'm a "code-as-you-learn-learn-as-you-code" kinda guy, so that means that I developed the initial project as I went. I would research a specific portion of the project (and there was a LOT of research to do! lol) and then code it and move on to the next. Of course, this eventually leads to a mess of a project in most cases where the foundation is a bit complex to begin with. So the code I'm posting is the second version of the concept. But even at that, I'm only going to post the primary user control at this point and hold back on the code for the test application I created with it (I will provide a download to the compiled app however). After getting the user control cleaned up (if not ideally redesigned), the second app became a "develop-as-you-go" project for the test application - so it is a bit of a mess now too; but mostly just to look at code-wise - it actually runs pretty well.
Third, there are still a few design issues that could be improved upon in the user control, and a few choices which were made for ease of coding that could be changed for performance. But because of this, other than for a couple of routines, most of the code should actually be pretty straight forward to anyone who's comfortable in VB already.
Ok, on to the example: we are going to create a MusicKeyboard control. This control will draw itself like a pinao keyboard and will render keys for the specified number of full octaves. Clicking a key will play the associated note in the specified voice. Voices will be created using a simple digital oscillator and optional even-noise generator on top of a sine wave form.
To get started, you'll first need to have the DirectX SDK installed. The latest one is available here:[URL]..displaylang=en however the example was created using the version from March 09. There should be no impact from using the newer version.
Once you have the SDK installed, create a new Windows Application and add a new User Control named MusicKeyboard to the project. Note that you could create a Windows Class Library project, but I personally like to develop in an Application for ease of testing and later convert to a class library.You'll need to drag a BackgoundWorker component from the toolbox onto the usercontrol and name it "SynthWorker". Set the worker's WorkerSupportsCancellation property to True.
Now you'll need to add the DirectX reference to the project. You can rightclick the project in the solution explorer and select Add Reference or go to My Project and the References Tab. From the list of .Net references,add Microsoft.DirectX.DirectSound.That should be all we need to get started. In the following posts we'll create a bunch of code files and get the keyboard noise-worthy.Reed Kimble - "When you do things right, people won't be sure you've done anything at all"
View 8 Replies
Feb 14, 2009
I was wondering if anyone could point me to a really good tutorial on Directsound.I don't know if trying to digest an API is a good thing for a beginner but I really need something that has a beginner in mind.I especially liked some of the Microsoft video tutorials on VB.NET so perhaps they offer some on Directsound?The goal is to stream a WAV file, (not just "play it") and I want to LEARN the process.
View 3 Replies
Mar 31, 2010
I'm currently working on web application using VB in ASP.NET.Right now I have 1 page with panels that we are using to show/hide depending on the flow. When the user first comes in, he/she is presented with a gridview containing a list of clients. Then the user, clicks a link from a row and is presented a form where he/she can update the clients' info.Originally, I had a HYPERLINKFIELD that put the clientId in the url, then I'd grab the url and do the code appropriately
<asp:HyperLinkField Text='<%$ Resources:Resource, ManageClient %>' DataNavigateUrlFields="CLIENT_ID" DataNavigateUrlFormatString="~/clients/manage.aspx?clientId={0}" />
[code]....
View 2 Replies
Jun 21, 2010
I have a problem trying to capture data from a database to a label. I am trying to display a list of values from my database when i press a button.
This is my code for my database
[ CODE]Dim strDBFileName As String
strDBFileName = "My DocumentsCDRecord.sdf"
If File.Exists(strDBFileName) Then
[Code]......
View 1 Replies
Sep 23, 2009
Is there an easy way for me to capture some system data when I except? Particular memory information. I have a service that has been running fine for years, but lately it keeps having System.OutOfMemory exceptions being thrown at random. I want to determine what memory the system is actually using then if possible to see if I am really out of memory.
View 4 Replies
Nov 8, 2010
Just trying to capture some text data flowing in on COM1. The port opens but the data does not flow in. I have a textbox on the form and a SerialPort in the tray.
Public Class Form1
Private Sub IncomingData(ByVal sender As System.Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
[code].....
View 4 Replies
May 9, 2012
I have several UserControls in an ASP:Repeater. They are 'Add to basket' User Controls with a text input for quantity and a button to add the item to the basket.
My problem is the value is being reset to 1 whenever I enter a value into the quantity text box. I think this is happening because the containing page reinitialised the repeater (which holds the UserControls) and the quantity is one again before the UserControl's click event is fired.
how to capture the value in the textbox before the Postback occurs, I am happy to stick this data in a session for now.
I am thinking I need something along the lines of PreLoad? But that didn't work for me
View 1 Replies
Aug 15, 2011
ok the scale is a truck scale connected to a terminal (cougar 8530) that was connected before via Rs232 now the pcs doesn't have a serial port so someone attach a usb adapter to it the thing is i cant capture any data from it. im an developing a small program that can capture the weight of the truck (trucks are weight with the product and then re-weight with out it so they can find how much the product or products weight) so any ideas? suggestions?
View 1 Replies
Nov 29, 2011
There is Bitmap data on the clipboard from a screen capture. If I paste it into a RichTextBox it works OK. That is, if I remove the first two lines below.
Dim clipboardDataO As DataObject = CType(Clipboard.GetDataObject(), DataObject)
Clipboard.SetDataObject(clipboardDataO)
RichTextBoxTxt.Paste(DataFormats.GetFormat(DataFormats.Bitmap))
However, If I capture the clipboard data and restore it before I paste I no longer get my bitmap displayed in the box. My problem is, in the real situation I need to use the clipboard before I paste which is why I save it and restore it above.
1) Do you know why restoring doesn't appear to work here?
2) I can't paste before the save/restore. Is there something else I can do?
View 1 Replies
Aug 23, 2010
In a Windows XP Pro environment, my system uses a mainframe emulator in a window in which a scanning application is running. The data populating the mainframe app comes from various instruments, scales, barcode scanners, etc.. The data inputs are captured by a winwedge type RS232 data aquisition software.
When all the data is processed correctly, the mainframe application sends an "operation completed" message and creates an exclamation system event associated with a specific sound to inform the user.
My goal is to create a MS Access application that would use the Exclamation system event to validate writing the barcode that was just read to a database without further querying the mainframe, creating a local database. I only want to write the barcode when the mainframe application completed and therefore played the sound.
View 5 Replies
Feb 7, 2011
I'm trying to find the right RegEx to capture some (potentially) repeating data. I don't know how many times it will repeat. If I give an exanple of the data and what I want to capture can anyone point me in the right direction? It's the .Net regex engine (Visual Basic)
[Code]...
View 1 Replies
Dec 23, 2009
I want to capture images and store it in access data base in vb.net 2005
View 4 Replies
Jul 30, 2008
I'm somewhat of a novice at VB.I have a DataGrid that I am manually populating from a SQL query-based dataset (see code below). Question: How do a capture the value of a specific column of the selected row (mouse click in the row) to use as a variable in other parts of the overall solution?Also, how do I add cell padding around the contents of the data grid cells?
[Code]...
View 5 Replies
Sep 5, 2011
I have written an application which extracts a list of URL's (currently in Internet Explorer cache) from an XML file and displays them in a data grid view. From here i would like to launch Internet Explorer in a hidden mode and capture an image for each of the selected URL's in the data grid view. Is this possbile? If so what is the best way to go about it?
View 2 Replies