|
This[^] lab manual contains links to a Matlab DSP script for a wah-wah effect. You'll need to implement this from scratch in C# (a daunting task) or use a C# binding to the Bass[^] library. Bass currently supports distortion, flanging, echo, reverb and EQ - you might want to ask the developer if there's an ETA for wah-wah. Good luck!
/ravi
|
|
|
|
|
I'll try the matlab approach, but i'm afraid of having issues regarding the application response speed.
Based on your suggestion, i'll look for some Pure Data integration to achieve this too...
Thanks!
|
|
|
|
|
You are going to face a number of tasks:
1) How to obtain your digital guitar signal. IE you need to read the A/D output from somewhere. Perhaps you have a library or set of routines already to access the data from your sound card. If you don't this is going to be step 1.
2) As the previous answerer posted this is no simple task but it can be fun to experiment. Basically for a wah effect you are looking for a variable filter. Filters can be low-pass, band-pass, high-pass and many others. The Wah effect is usually a variable filter that takes the high end (upper frequency) and as you rock the Wah pedal lowers that high end. This was the simplest form of Wah filter. They are much more complex now days. I built an analog version many years ago and it wasn't too hard. Unfortunately in the digital world it is actually a little harder to do. But once you have the data from step 1 you can write some code or use a library to modify it and get some interesting results.
3) Sending the modified data some where. Again like step one you are going to need to figure out where/how to transmit your modified data back out either to your sound card or perhaps in early stages just write it to a WAV file and then play that file back to see what your filters did.
I think there are signal processing libs in MatLab as mentioned above. There are probably some commercial libs to do this as well. I unfortunately cannot point you to any.
Good luck
|
|
|
|
|
Hello,
I want to send receipt as pdf format (which is generated by crystal report in asp.net) via mail to the end users. I wonder that someone crack the pdf file and send spam mail to end users. But end users dont know the receipt pdf is spam . I want to know how to prevent this type of scenario.
For that i am thinking that whether I add some encrypted jpeg file/text or digital signature in crystal report So we can overcome these issues. But i dont know how to add digital signature in crystal report.
Please do needful.
|
|
|
|
|
Digital Signatures require intelligent users to properly interpret. Maybe instead of a PDF receipt which is associated with virus, malware, spam, and other mischief you can send a plain text email that any one can read on any client and merely provide a link (to your trusted server) to the PDF. Then you save bandwidth for you and your customer, increase confidence in your emails, and give your self a valid way to track follow through on downloading the receipts. Which is important if you want to store the pdf files versus generate them on demand.
|
|
|
|
|
This is one intriguing error that I do not even know whether to call it a bug or not ... It is fairly likely that this thing is already solved somehow by locale of which I am yet to get the precise clue.
OK! all of the contents of this post (rant) revolves around DateTime, something that we, fortunately agree on values but just cannot have uniformity on how we'd like to store, read on screen and pass around.
I am writing one .net application in C# that parses dates and times coming in from a ASCII bytestream. This problem only occurs when date is sent as ASCII string. As a part of early design decision,I had decided that I decided to keep will only keep one dedicated function to parse strings into dates.
At first, this function started with "dd/MM/yyyy HH:mm:ss". In a different record, I discovered "yyyyMMdd". In yet another place, I discovered only date (no time) "dd-MMM-yyyy". Given that I am in India, this is the defacto date format used, so no problems.
All of these were very efficiently handled by DateTime.TryParse no problems, but then I started getting dates being sent as "MM/dd/yyyy HH:mm:ss" which is like a giant monkey spanner at TryParse regardless of the locale setting. If locale is set to American, 07/01 gets read as July 1. If I set locale to British, 07/01 gets read 7 January. At least some of the byte stream format will be read incorrectly if I use same locale setting!!!
At least for first 12 days of all month, this would read date incorrectly!!! Cannot use TryParse. Cannot tell people sending me byte-stream to fix up the mess. I want data, so its my headache on how to read it... Fortunately, I do tag attributes on field on what format date is it going to be in.
All in all, between 50 different byte-streams, I get string dates in formats listed below. List is sorted by frequency of occurrence. Rest of them come either as # of seconds from some epoch or pair of integers.
"MM/dd/yyyy HH:mm:ss",
"dd/MM/yyyy HH:mm:ss",
"yyyy-MM-dd HH:mm:ss.fff",
"yyyy-MM-dd HH:mm:ss.ff",
"yyyy-MM-dd HH:mm:ss.f",
"ddMMMyyyy",
"yyyyMMdd",
"dd-MMM-yyyy"
fff are miliseconds and honestly only one should be needed, but I do get 1, 2 or 3 digits after the decimal!!!
In my function, I've plonked the all format strings into a static String array and then loop over it like this ... try catch inside the loop allows loop to go to next format if current one fails.
for (int i = 0; i < DateFormatStrings.Length; i++)
{
try
{
dt = DateTime.ParseExact(formatDate, DateFormatStrings[i], null);
fInfo.SetValue(this, dt);
if (formatFailed > 0)
Logger.LogLine(String.Format("Field {0} in class {1}, was finally able to parse date [{3}] in pre-defined format {4}",
fInfo.Name, myType, formatDate, DateFormatStrings[i]), LoggingLevel.HighLevelDebugging);
break;
}
catch (FormatException)
{
formatFailed++;
Logger.LogLine(String.Format("Field {0} in class {1}, was unable to parse date [{2}] in pre-defined format {3}",
fInfo.Name, myType.Name, formatDate, DateFormatStrings[i]), LoggingLevel.HighLevelDebugging);
fInfo.SetValue(this, null);
}
}
Now the most funny thing at which I can neither laugh nor cry is.
that this loop ParseExact fails with FormatException whenever date comes in as 2013-07-31 09:34:44.74
The format string to parse it correctly is present in array at index 3 and it does get looped over too throwing exception.
In another function, with following code, this works without format exception...
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", null);
In other words, ParseExact fails with exception, when inside try-catch block and works fine when not enclosed.
[REPOSTED!!!]
modified 6-Aug-13 5:30am.
|
|
|
|
|
I just tried
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", false);
which will not compile, as the third parameter is invalid.
I changed it to
DateTime dt = DateTime.ParseExact(
"2013-07-31 09:34:44.74", "yyyy-MM-dd HH:mm:ss.ff", null);
and it works fine, whether inside a try {} catch {} or not.
Use the best guess
|
|
|
|
|
Yes ... you are correct. 3rd param is null. It is null in my code too. I guess I made a cut-copy error. Sorry for that!!!
On my machine, it does not parse only when it is within the try catch block.... especially in the function body that I have shown above...
When that failed, I added one line at beginning of Main method where it worked correctly
So, something is happening within the loop... My guess is that it most likely something not being made volatile, but then my log messages should give a clue. Log messages are accurate. After pasting on code project, I tried with zero compile optimizations and will know what happens
|
|
|
|
|
You are testing the value of formatFailed in your try block, but you set it inside the catch block. This is not the way to code a try catch sequence. You should be displaying the failure message in the catch block, and break out of the loop only when the parsing succeeds.
Use the best guess
|
|
|
|
|
Richard MacCutchan wrote: You are testing the value of formatFailed in your try block, but you set it inside the catch block. This is not the way to code a try catch sequence. You should be displaying the failure message in the catch block, and break out of the loop only when the parsing succeeds.
Richard
Actual code of the function is 150-200 lines with lots of Reflection and stuff. I had only posted tail portion of code which was the problem area. What happens is as follows. For each field, I have custom attribute that spells out what format is going to be present which I call tryFirstFormat. So, there is one another parseexact before code enters loop. If it enters the loop, it is 100% certain that formatFailed will be set to 1. Fortunately, C# will not let me compile without initialized variable antway.
Lastly, Message that gets logged inside try block is actually to report a successful parse after blah-blah number of attempts. Message in catch block is when parsing fails where attempt count increases
Tonight, I spent time thumbing thru few other sites and decided to change the loop index (i) to be a volatile member of class Will discover how this performs tomorrow.
|
|
|
|
|
You will also have a problem with the first two of your format strings when the month and day are both less than 13.
Use the best guess
|
|
|
|
|
Richard MacCutchan wrote: You will also have a problem with the first two of your format strings when the month and day are both less than 13.
Actually, I did have that problem when I was using TryParse and using locale.
What I've done is following. For each datetime field, I've added custom attribute that spells out which format is most likely to be most appropriate for that particular field. This way, on some fields, I do instruct it to read it as dd/mm and on others I do ask it to read mm/dd.
|
|
|
|
|
I would address this a different way, assuming each stream is identifiable and is internally consistent, I would register a format for each source.
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
Mycroft Holmes wrote: I would address this a different way, assuming each stream is identifiable and is internally consistent, I would register a format for each source.
They are consistent in a sense that if mm was before dd, it does seem to remain that way ... but I'd be in trouble if I assume that it will always be slash / between characters. Sometimes it is dash or space too. So, I weed out all unwanted characters using String.Replace and replace them with what slashes as I have
'em on my format string before even attempting to parse the date.
Further, I do have custom attribute defined for each and every date/time field which essentially leads to one of the eight format strings as "tryFirstFormat". So, yes! I do have one format registered for each field although I know that expecting it to remain consistent is a bit-too-much at this point in time....
In the code, before the loop, I use parseExact to parse the date. Naturally that too is in its own try-catch block. Only if that fails, code will enter the loop.
I did not post all of the above code assuming that more code will confuse people and felt that it was not relevant to problem. But it seems from the early responses that partial code is confusing ppl more.
modified 7-Aug-13 1:02am.
|
|
|
|
|
Will it help if I publish entire parsing code? ... Certainly there is little bit of refactoring that can reduce the lines which I've postponed until it works correctly?
I had omitted code above the for loop because (a) it is working fine (as I coded it). (b) I did not want to post too big code here
|
|
|
|
|
Hi,
I'm developing window application ...
My question is simple, i'm getting form name in a string...
now i want to open the form using string name
how to convert string to form object in c# window application
please reply me.........
modified 6-Aug-13 3:44am.
|
|
|
|
|
Some variation of this
Assembly assembly = System.Reflection.Assembly.GetAssembly();
classAsType = assembly.GetType(classNameAsString);
|
|
|
|
|
Have you created your form object already? where you want to open that form, can you tell how you want to do, i hope can help you with that
|
|
|
|
|
susanna.floora wrote: My question is simple, i'm getting form name in a string...
The name of a form-object (name property) or the name of the forms' class? In other words, does the form already exist that you're looking for, or are you showing a new instance of that form?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Form already exists in the application.
form name is in a string.
how do i open that form.
|
|
|
|
|
Assembly assembly = System.Reflection.Assembly.GetAssembly();
classAsType = assembly.GetType(<big>classNameAsString</big>);
classNameAsString as string is where you will type in your form's name as string. After this you obtain constructor using reflection and show the class
|
|
|
|
|
Simple:
var t = System.Type.GetType("MyClass.FormName");
var form = Activator.CreateInstance(t);
|
|
|
|
|
|
Welcome, upvote it.
|
|
|
|
|
I usually don't comment on a question like this, when the OP has a made a comment of the form "it works," in response to a solution.
But, I'd like to note that, imho, Eddie Vluggen asked what I think is the critical question here:
"The name of a form-object (name property) or the name of the forms' class? In other words, does the form already exist that you're looking for, or are you showing a new instance of that form?"
To which the OP responded:
"Form already exists in the application.
form name is in a string.
how do i open that form."
The code shown in the response by Jean Brandelero will create a new instance of the Form based on its class-name. And, perhaps, that is exactly what the OP wanted.
But, it also seems possible the OP does not want to create a new instance, but to "open" an existing Form.
In that case there are two alternatives:
a. the Form instance is already open, and is visible: your done.
Whether an instance of a Form is visible, or hidden, it's in the Application.OpenForms collection. Note that the collection has a very limited set of operators: you can't use something like 'Contains. And, each Form in that collection is in a "vanilla" type-form: you can't automatically assign it to a variable of the type of FormX: you have to cast the result to ProjectName.FormX.
b. the Form instance is now hidden: your job is to 'Show it.
So, now you can define the alternatives here clearly: based on whether, as Eddie was pointing out, the "string" you have contains a Class Name of a Form, or the string contains the name of a form already created as an instance.
You can use Brandelero's code to create a new instance, if that's what you want, and it doesn't matter to you if there already any other instances of the Type that exist.
And, if you want to create an instance only if an instance does not already exist, or you just want to make sure an existing instance is visible: you can mess around with the Application.OpenForms collection to see what's what.
Let's look at simple test case:
private Form2 newForm2 = new Form2();
private Form2 newForm2a = new Form2();
newForm2.Name = "newForm2";
newForm2.Show();
newForm2.Hide();
newForm2a.Name = "newForm2a";
newForm2a.Show();
newForm2a.Hide();
foreach (Form theCandidateForm in Application.OpenForms)
{
if (theCandidateForm.Name == "newForm2")
{
Console.WriteLine("Found match by Name: " + theCandidateForm.Name);
}
if( theCandidateForm.GetType() == newForm2.GetType())
{
Console.WriteLine("Found match by Type " + theCandidateForm.Name);
}
} The output of this in the VS 'Output window would be:
Found match by Name: newForm2
Found match by Type newForm2
Found match by Type newForm2a
I hope this information adds something to this thread.
“This isn't right; this isn't even wrong." Wolfgang Pauli, commenting on a physics paper submitted for a journal
|
|
|
|
|