Giter Site home page Giter Site logo

bigman73 / practicesharp Goto Github PK

View Code? Open in Web Editor NEW
37.0 6.0 16.0 109.9 MB

A playback practice tool for musicians that allows slowing down, changing pitch, defining presets and loops on music files.

Batchfile 0.34% C# 99.66%
guitar bass music slow tempo pitch playback presets musicians practice

practicesharp's Introduction

practicesharp

A playback practice tool for musicians that allows slowing down, changing pitch, defining presets and loops on music files.

Current stable release: 2.0.6 alt screenshot

Features

  • Playback of the following formats: MP3, WAV, WMA, AIFF, Ogg Vorbis, FLAC and M4A
  • Speed change - The ability to slow down or speed up music without changing its pitch
  • Pitch change - The ability to change the pitch of music up or down without changing its speed. New! (1.4.6) - Accurate half semi-tone increments
  • Loops - Start and End Marker with Cue (waiting a few seconds before the loop starts, useful to get hands back into position)
  • Persistent Presets - The biggest difference currently between Practice# and the other tools out there. In fact, that is why this tool was written by me in the first place. When you practice some song over and over for a while it is extremely useful to have some presets of your practice habits for this song. For example: One preset can be for the intro and one for the verse or two presets can be for the solo - one regular speed and one slowed down to 75% with a cue of 2 seconds.
  • Cross Windows Platform - Runs on all latest Windows Operating systems, Tested on Windows XP Pro SP3 32 bit, Vista Home Premium 32 Bit, Windows 7 Pro 64 bit and Windows 10.
  • 3 Band Equalizer
  • Voice Suppression
  • Input channel selection ( - Version 2.0.1.0) - Select if the left, right or both channels are used from the input file. Very useful for double mono practice files that have for example drums on the left channel and guitar or bass on the right channel (common in instrument teaching books)

Usage

A youtube video that demonstrates Practice# usage:

Practice# demo of usage

Installation

Pre-conditions

  • Latest Windows OS - XP, Vista, 7, 10
  • .NET Framework 4.5 (the MSI installer doesn't install .NET Framework 4.5)
  • Visual Studio Express for Desktop 2012+

Installation steps

  1. Download the Practice# MSI installer to your local machine - https://github.com/bigman73/practicesharp/tree/master/Installer/MSI
  2. Run it
  3. That's it!

WMA Support

As of Sep 2015 - naudio.wma has become an official Nuget project under NAudio open source project https://github.com/naudio/NAudio.Wma

Code Project article

Documentation of the design can be found in: https://www.codeproject.com/Articles/129929/PracticeSharp-or-Practice-A-Utility-for-Practicing

License

License: alt LGPLV3

Credits

practicesharp's People

Contributors

bigman73 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

practicesharp's Issues

NAudio FLAC reading stack imbalances

I noticed I kept getting PInvokeStack imbalances with your test program for the 
NAudio FLAC player. Then when I checked LibFLACSharp.cs I noticed all of the 
DLLImport calls are as follows

[DLLImport(DLLName)]

The stack imbalance exceptions were fixed by changing these to:

[DllImport(DLLName, CallingConvention = CallingConvention.Cdecl)]

Original issue reported on code.google.com by mathew1800 on 22 May 2013 at 3:40

Status: Error when mp3 file is loaded

What steps will reproduce the problem?
1.Install PracticeSharp (this worked fine on Windows 7)

2.Use the file icon to select an mp3 file from within iTunes Media folder

3.

What is the expected output? What do you see instead?
I expected to see the file name at the bottom of the Practice# window.
It is there (following "File:"), but it is preceded by Status: Error 


What version of the product are you using? On what operating system?
1.5.0.0 on Windows 7 Professional, Service Pack 1 

Please provide any additional information below.
This looks like just the tool I and other singers need for
practicing choral works.  I hope it is just something I need to do.
You can send email to me.


Original issue reported on code.google.com by [email protected] on 13 May 2012 at 9:20

  • Merged into: #10

1.62 test

Default volume setting in Practice.Sharp.exe.config does not appear to be read 
by program. This feature worked fine in 1.41.


Original issue reported on code.google.com by [email protected] on 12 Mar 2013 at 1:19

Reverse Playback

Hello,

First, I have to say you created a great program.
My question : is there an easy way to make a reverse playback with your sound 
engine ?

Thanks by advance !

Julien

Original issue reported on code.google.com by [email protected] on 20 Oct 2014 at 10:26

Problem with Skip() command when using WMAFileReader.

I am building an app with NAudio and was playing around with WMAFileReader(). 
It plays WMA files great but I am having an issue when using the skip() method. 
My app works great works perfectly with .mp3 and .wav. 
I should be using the latest dll. It's the one form your latest practice# app.

for me the seek() method is working great.

I didn't know if this was an issue you were aware of.

Below is the error I am getting.

System.InvalidCastException was unhandled by user code
  Message=Unable to cast COM object of type 'System.__ComObject' to interface type 'NAudio.WindowsMediaFormat.IWMSyncReader'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{9397F121-7705-4DC9-B049-98B698188414}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
  Source=mscorlib
  StackTrace:
       at System.StubHelpers.StubHelpers.GetCOMIPFromRCW(Object objSrc, IntPtr pCPCMD, Boolean& pfNeedsRelease)
       at NAudio.WindowsMediaFormat.IWMSyncReader.SetRange(UInt64 cnsStartTime, Int64 cnsDuration)
       at NAudio.WindowsMediaFormat.WmaStream.Seek(Int64 offset, SeekOrigin origin)
       at NAudio.WindowsMediaFormat.WmaStream.set_Position(Int64 value)
       at NAudio.WindowsMediaFormat.WMAFileReader.set_Position(Int64 value)
       at NAudio.Wave.WaveStream.Skip(Int32 seconds)


Original issue reported on code.google.com by [email protected] on 8 Dec 2011 at 9:56

Feature Enhancement request

Any chance you can add a user-selectable plus-and-minus buttons that when 
clicked move forward/backward the number of seconds the user has defined?

(Alternatively a static plus/minus five or ten seconds button, but user 
selection would be a plus).

Thanks as always.

Original issue reported on code.google.com by [email protected] on 20 Jul 2013 at 1:27

Change audio out device

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 25 Apr 2015 at 12:23

1.5.0 locks up, but 1.4.1 works perfectly

What steps will reproduce the problem?
1.Download an MP3 podcast, for example 
http://downloads.bbc.co.uk/podcasts/radio4/iot/iot_20111208-1145a.mp3
2. Double click that podcast in Windows Explorer (this assumes you have 
associated MP3 with Practice#)

What is the expected output? What do you see instead?
File "opens" but does not "play". The program says it is playing (the pause 
button is available, the text at the bottom says Playing), but the MP3 does NOT 
play.


What version of the product are you using? On what operating system?
1.50 on Windows 7

Please provide any additional information below.
Copying the 1.41 executable over the 1.50 and retrying, then everything works 
normally.
I have had this problem since the day 1.50 was released and it appears I am the 
only person who does (or perhaps others downloaded 1.50 and had the same 
experience and just abandoned it). I was curious to see if you had a new 
release and it looks like you did but it was pulled back.  

I guess you have not been able to replicate this. I have no other problems with 
my PC. I will TRY to assess with PROCMON to see if it shows anything of note, 
but I just wanted to revive this issue as it still boggles me why it exhibits 
this behavior. I even tried uninstalling and removing every trace of the 
program and its registry entries and files and only installing 1.50 and that 
did not fix anything. 
Aside from this (meaning using 1.41) your program is unbelievably great. I just 
want to be able to use the latest version for the few tweaks and fixes it gives.

Original issue reported on code.google.com by [email protected] on 9 Feb 2013 at 12:00

When starting a song again it does not use the previously set pitch setting

What steps will reproduce the problem?
1. Open song
2. Change Pitch Semi-tone to +1
3. Play song
4. when song finishes, press play again

What is the expected output? What do you see instead?

    The slider is still at +1 but the song plays the second time at 0 instead of +1

What version of the product are you using? On what operating system?

   1.6.4.0 - Windows 8.1


Original issue reported on code.google.com by [email protected] on 6 Jan 2015 at 2:23

Thank you very much for this extraordinary program (PracticeSharp)

I just want to thank you for this wonderful program! I´ve been using it for 
about six months now and I love it. It´s such a great and helpful tool when 
learning new pieces on my keyboard, so please continue developing the program. 
Thanks!

Kind regards,
J-E (Sweden)

Original issue reported on code.google.com by [email protected] on 25 Jun 2012 at 8:36

24-bit FLAC support.

I realized the FLAC reader didn't have 24-bit support implemented in 
CopyFlacBufferToNAudioBuffer().

Couldn't you simply just add:

m_NAudioSampleBuffer[m_playbackBufferOffset++] = 
(byte)(sample);                     m_NAudioSampleBuffer[m_playbackBufferOffset++] = 
(byte)(sample >> 8);                        m_NAudioSampleBuffer[m_playbackBufferOffset++] = 
(byte)(sample >> 16);

nAudioBufferFull = m_playbackBufferOffset >= m_NAudioSampleBuffer.Length;

to the 'case 24' part of the switch statement? I did this and it play back fine.

Original issue reported on code.google.com by mathew1800 on 9 Aug 2013 at 2:48

Trying to decode FLAC with NAudio

Hi.

Not sure if this is the best place to put this, so apologies if it isn't.

Trying to use the Naudioflac.dll to convert FLAC to a WAV file, using the 
following code :

Using reader As New FLACFileReader(InputFilname)

   Using pcmStream As WaveStream =
       WaveFormatConversionStream.CreatePcmStream(reader)

       WaveFileWriter.CreateWaveFile("tmp.wav", pcmStream)
   End Using
End Using

This is the same code that works fine with the MP3filereader option, but with 
the FLAC version, it produces a massive wav file that keeps writing forever.

Any ideas?

Thanks
Simon

Original issue reported on code.google.com by [email protected] on 26 Sep 2012 at 9:53

NAudio WaveOutEvent never goes to Stopped state when playing FLAC files using FLACFileReader

What steps will reproduce the problem?
1. Run attached program, using a few .mp3, .wav and .flac files in playlist.

What is the expected output? What do you see instead?
When playing wav and mp3 files the player enters Stopped state and playback 
continues to the next track.
When playing flac file it never ends, always playing the last buffer.
Flac files should behave the same as mp3 and wav files.

What version of the product are you using? On what operating system?
Version 1.6.4 and commit 349 from the subversion repository.
Windows 7 64bit.

Please provide any additional information below.
The method DoPlayback in NAudio WaveOutEvent class calls buffer.OnDone. OnDone 
calls Read on the wavestream and expects it to return 0 on the end of stream. 
Method Read in FlacFileReader always returns numBytes passed in parameter of 
the method.

Read should check the state of FLAC decoder and return a value of 
flacBytesCopied instead of numBytes. 

LibFLACSharp needs two more imports: FLAC__stream_decoder_get_state and 
StreamDecoderState (see attached file)

Also, a quick fix for the Read method is in the attachment.

    Cheers, 
    Tom

Original issue reported on code.google.com by [email protected] on 4 Jun 2013 at 8:40

Attachments:

Channel selector

Great software, but it needs still one thing.

I'd like to use it for studying aebersold play-a-long but...

...I can't switch the channels in double mono recs!

it would be great a selector, but greater a slide that merges the volumes of 
the two channels in the way you like!


Compliments for the project. Look for .net framework 4


Original issue reported on code.google.com by [email protected] on 2 Mar 2011 at 11:44

"FLAC: Could not process single!


1. Change .NET Framework of the TestApp to .NET 4.0 or 4.5
2. Execute
3. Error on 'FLAC__stream_decoder_process_single'

This problem do not occurs with .NET 3.5 or lower.
You can reproduce this issue on any app with .NET 4.0 and this DLL included.

Original issue reported on code.google.com by [email protected] on 25 May 2015 at 12:57

1.62 Large position change freezes PracticeSharp

Anything but the slightest change in position locks up PS and requires a Task 
Manager "End Process". This worked in 1.41, now does not work in 1.62. (tested 
with 5 various MP3s and 2 FLACs, always locks up)

Original issue reported on code.google.com by [email protected] on 12 Mar 2013 at 2:49

Practice# 2.1.0.0 won't open .wav files

I've tried loading a number of .wav files into Practice# but they won't load.

There's no error message, just a Status indicator at the bottom set to "Error".

I can load MP3 files OK. Would be nice if .wav files worked also.

Translation

First things first: thank you for that amazing software! I'm from germany and 
would translate your product, if you are interested.



Original issue reported on code.google.com by [email protected] on 18 Jul 2012 at 9:51

Save the output to a file with a different name (to distinguish it from the original)

What steps will reproduce the problem?
1.
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?


Please provide any additional information below.
It would be great if there would be a button to save the output to a file, 
rather than playing it back on-the-fly. My daughter could download this to her 
smartphone then and exercise quite simply.

Original issue reported on code.google.com by [email protected] on 13 Nov 2014 at 11:39

Mp3 files are not played fully

What steps will reproduce the problem?
1. load the attached mp3
2. play it
3. you will notice it stops too early

What is the expected output? What do you see instead?

Expected: to hear 'We can try to understand' at the end.

What version of the product are you using? On what operating system?

Using 1.6.4.0, Windows 7 and 8 

Please provide any additional information below.

When playing the mp3 in other media players (window media player, soundbooth, 
audacity) you do hear the last sentence fully.


Original issue reported on code.google.com by [email protected] on 21 Jan 2015 at 8:18

Attachments:

Confused about how the presets feature works

First, to be clear, I do not play an instrument and am relatively clueless 
about how one would use presets. However, I did watch your video and I am still 
confused. But let me digress for a moment: I was looking for a good program to 
play my MP3 podcasts at 1.5 speed and yours is by far and away the best out 
there. I found your app by way of the Soundtouch library page list of 
applications that use that library. 

As I mentioned, I am totally clueless about how you have implemented presets. I 
have no clue what the icon is in the lower left and what it does. I would love 
to have you explain to me how I would do the following: lets say I am 10 
minutes into an hourlong podcast but am called to dinner by my wife. I want to 
save my spot so when I come back next time I can continue where I left off. How 
exactly can I create a preset to save that? I have been playing with this for 
20 minutes and cannot figure it out. Sorry for being so dense .. (and it is 2am 
so I have an excuse. I have been looking for the right MP3 player to supplant 
my media player of choice(PotPlayer) since its variable speed feature is OK but 
not great. Six hours later, I am ready to finally call it a night as I found 
your program and love it.

Anyway, to reiterate .. I think this is by far and away the best variable speed 
MP3 player out there. All I want is a program that loads quickly and can play 
my MP3 at a speed of my choosing. You go above and beyond with the equalizer .. 
but how do I save my position using the presets?


Original issue reported on code.google.com by [email protected] on 28 Dec 2011 at 7:05

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.