Giter VIP home page Giter VIP logo

zcant's People

Contributors

riggsd avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

wavx

zcant's Issues

Windows Build

Make sure the app builds on Windows 7, 10.

Provide a pre-compiled executable so end users don't need to know anything about Python or dependency installation.

`beep()` Doesn't Work From .app

Writing print('\a') doesn't actually sound a bell when there's no stdout (like when running from a py2app .app. Package up a .WAV file to utilize for warnings.

Speed: WAV Reading Code

Quick comparison of our zcant.conversion.read_wav() routine versus scipy.io.wavfile.read(). Shows that the latter is ~100 times faster, and can sometimes be ~600 times faster when using mmap. The difference isn't quite as great with smaller .WAV files, but amounts to a 0.5sec loadtime difference for a 10mb .WAV file.

Our implementation uses Struct.unpack_from(), which yields a Python list, and is in turn converted to an np.ndarray. Their implementation uses np.fromstring() or np.memmap() so the extraction is performed entirely in C.

Either switch to using scipy.io.wavfile.read() or utilize the more efficient C-based functions for loading wav data.

import timeit
import os.path

n = 1
size = float(os.path.getsize('test.wav')) / 1024 / 1024
print 'loading file "test.wav" (%.1f mb) %d times...' % (size, n)

print '\nzcant.conversion.load_wav()'
t = timeit.Timer('load_wav("test.wav")', 'from zcant.conversion import load_wav')
print '%.4f' % t.timeit(n)

print '\nscipy.io.wavfile.read()'
t = timeit.Timer('wavfile.read("test.wav")', 'from scipy.io import wavfile')
print '%.4f' % t.timeit(n)

print '\nscipy.io.wavfile.read(mmap=True)'
t = timeit.Timer('wavfile.read("test.wav", mmap=True)', 'from scipy.io import wavfile')
print '%.4f' % t.timeit(n)
loading file "test.wav" (11.0 mb) 1 times...

zcant.conversion.load_wav()
0.5974

scipy.io.wavfile.read()
0.0084

scipy.io.wavfile.read(mmap=True)
0.0015

Drag n' Drop File Opening

Allow end users to drag files or filenames into the app and magically open them (on all platforms).

Keyboard Shortcuts Help

Make the keyboard shortcuts available from the Help -> Keyboard Shortcuts menu item.

Consider making it printable.

Provide a .PDF for reference as well?

(Note that keybindings are slightly different on OS X, Windows)

Anabat File Format Saving

Correctly fill out all available metadata.

Ensure that the produced Anabat file doesn't exceed these limits:

  • 2**14 (16,384) dots
  • 2**15 (32kb) in file size
  • 15sec in length

Should we split a large file over multiple Anabat files? Truncate with warning? Fail?

Migrate to wxPython 4.0 "Phoenix"

The rewritten version of wxPython, "Phoenix", is now being made available as a binary wheel for major platforms, making its installation significantly easier. It is currently in beta release, which minor API changes still happening. Track its development and plan a port to the new version once it appears mature.

Slope Histogram is Two-Sided

Sometimes - usually with Anabat-format files, but not always - the slope histogram seems to display both positive & negative (or left & right) bins. Don't do that.

screenshot 2017-01-04 18 21 38

Audio Playback

Allow time-expanded and realtime audio playback of .WAV files.

Add Proper Compressed View

Add a view which respects real time on the X axis, but which collapses the empty space between pulses.

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.