Code Monkey home page Code Monkey logo

zentuner's Introduction

Zen Tuner

CI

A minimal chromatic tuner for iOS, watchOS, macOS & visionOS. Works well with any instrument, whether it’s woodwinds, brass, strings or voice.

Dark Light
iOS
macOS

Features

  • Beautiful, clean and simple interface
  • Large current note representation and a high marker that change from red to green when the note is in tune
  • One-touch menu to apply a transposition to easily tune all instruments
  • Tap the main note to adjust preference to prefer sharps or flats
  • Works well on all screen sizes and orientations, from the smallest Apple Watch to the largest iPad or Mac

Credits

License

MIT.

zentuner's People

Contributors

dependabot[bot] avatar hemant3370 avatar johjakob avatar jpsim avatar soffes avatar zachwaugh avatar zntfdr 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

zentuner's Issues

iOS: App stops updating after backgrounding

Steps to reproduce:

  1. Launch Zen Tuner
  2. Notice the current note, marker and pitch all update in real time
  3. Switch to another app, might require an app playing video (e.g. Twitter)
  4. Switch back to Zen Tuner
  5. Notice the current note, marker and pitch are all frozen at the previous values before backgrounding the app

Metronome

Would love a metronome added, though also don't want to complicate the app because it's so great because it's so simple.

Select input microphone

Problem:

When I open ZenTuner it automatically selects the default input microphone which is usually the Macbook microphone. When I change the default macbook microphone, the app doesn't update the input device either.

To resolve the issue, I need first to set the audio interface (where my guitar is plugged in) as the default macOS mic. Then open/reopen ZenTuner.

Possible improvements

It would be nice to have a way to select which input device I want to use or even make the app automatically update the microphone when I update the default input device.

How to obtain ZenTuner

I'm assuming that there is a macOS version of this app. However, it doesn't seem to be available on the App Store from the UK. I'm quite comfortable cloning it in Git and building from source, but I cannot see any build instructions. Can you help? Thanks!

Using double precision audio format .pcmFormatFloat64, throws error

I need the audio to be double precision. I tried updating...

private extension AVAudioFormat {
    static var stereo: AVAudioFormat {
        AVAudioFormat(standardFormatWithSampleRate: 44_100, channels: 2) ?? AVAudioFormat()
    }
}

to

private extension AVAudioFormat {
    static var stereo: AVAudioFormat {
        AVAudioFormat(commonFormat: .pcmFormatFloat64,
                      sampleRate: 44_100,
                      channels: AVAudioChannelCount(2),
                      interleaved: false) ??
        AVAudioFormat()
    }
}

But it throws this error no matter what I do on line 98 in AudioEngine

Line of error:

avEngine.connect(mixer.avAudioNode, to: avEngine.outputNode, format: .stereo)

Error:

2023-03-20 12:31:27.372153+0700 App[7710:87518] [avae]            AVAEInternal.h:130   [AUInterface.mm:539:SetFormat: ([[busArray objectAtIndexedSubscript:(NSUInteger)element] setFormat:format error:&nsErr])] returned false, error Error Domain=NSOSStatusErrorDomain Code=-10868 "(null)"
2023-03-20 12:31:27.375080+0700 App[7710:87518] *** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: '[[busArray objectAtIndexedSubscript:(NSUInteger)element] setFormat:format error:&nsErr]: returned false, error Error Domain=NSOSStatusErrorDomain Code=-10868 "(null)"'
*** First throw call stack:
(
	0   CoreFoundation                      0x000000018040e7c8 __exceptionPreprocess + 172
	1   libobjc.A.dylib                     0x0000000180051144 objc_exception_throw + 56
	2   CoreFoundation                      0x000000018040e66c +[NSException raise:format:] + 0
	3   AVFAudio                            0x00000001a1e4e0e0 _Z19AVAE_RaiseExceptionP8NSStringz + 48
	4   AVFAudio                            0x00000001a1f30334 _Z30_AVAE_CheckSuccessAndNoNSErrorPKciS0_S0_bP7NSError + 328
	5   AVFAudio                            0x00000001a1f2efd4 _ZN17AUInterfaceBaseV39SetFormatEbjP13AVAudioFormat + 116
	6   AVFAudio                            0x00000001a1e97dc0 _ZN18AVAudioEngineGraph8_ConnectEP19AVAudioNodeImplBaseS1_jjP13AVAudioFormat + 4556
	7   AVFAudio                            0x00000001a1f2d5f4 _ZN17AVAudioEngineImpl7ConnectEP11AVAudioNodeS1_mmP13AVAudioFormat + 1436
	8   AVFAudio                            0x00000001a1f22edc -[AVAudioEngine connect:to:format:] + 124
	9   App                         0x00000001007897ec $s11App11AudioEngineC06createD5Mixer33_BF4FC786C8E6896A8E43796B650784B2LLyyF + 420
	10  App                         0x0000000100789114 $s11App11AudioEngineC18createSilentOutput33_BF4FC786C8E6896A8E43796B650784B2LLyyF + 156
	11  App                         0x000000010078904c $s11App11AudioEngineC5inputAC9InputNodeCvg + 188
	12  App                         0x00000001008cd5f0 $s11App23MicrophonePitchDetectorC05setUpD8TrackingyyFyyYaYbScMYccfU_TY0_ + 116
	13  App                         0x00000001008cd76d $s11App23MicrophonePitchDetectorC05setUpD8TrackingyyFyyYaYbScMYccfU_TATQ0_ + 1
	14  App                         0x00000001008cdabd $sIeghH_ytIeghHr_TRTQ0_ + 1
	15  App                         0x00000001008cdc05 $sIeghH_ytIeghHr_TRTATQ0_ + 1
	16  App                         0x00000001008ce979 $sxIeghHr_xs5Error_pIegHrzo_s8SendableRzs5NeverORs_r0_lTRTQ0_ + 1
	17  App                         0x00000001008cead9 $sxIeghHr_xs5Error_pIegHrzo_s8SendableRzs5NeverORs_r0_lTRTATQ0_ + 1
	18  libswift_Concurrency.dylib          0x00000001b03bedcd _ZL23completeTaskWithClosurePN5swift12AsyncContextEPNS_10SwiftErrorE + 1
)
libc++abi: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'com.apple.coreaudio.avfaudio', reason: '[[busArray objectAtIndexedSubscript:(NSUInteger)element] setFormat:format error:&nsErr]: returned false, error Error Domain=NSOSStatusErrorDomain Code=-10868 "(null)"'

Smooth indicator movement

Is there a way to apply a "smoothing" factor to cause the note indicator to not jump around so much and just ease slowly into a new position?

Could there be a macos build?

Since there are so many apps using translations between ipad touch to macos trackpad, could this be built for x86_mac or universal binaries which includes the ARM macs too?

Microfone feedback too low

Hello,
When I simulate the tuner I really need to play extremely loud in order to receive the note I am playing on the app.
Do you know what is happening?

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.