Code Monkey home page Code Monkey logo

simformsolutionspvtltd / audio_waveforms Goto Github PK

View Code? Open in Web Editor NEW
238.0 238.0 122.0 23.64 MB

Use this plugin to generate waveforms while recording audio in any file formats supported by given encoders or from audio files. We can use gestures to scroll through the waveforms or seek to any position while playing audio and also style waveforms

Home Page: https://pub.dev/packages/audio_waveforms

License: MIT License

Kotlin 23.12% Ruby 1.31% Swift 17.05% Objective-C 0.43% Dart 58.09%
audio audio-player audiowaveform audiowaves dart flutter flutter-package flutter-plugin flutter-widget ios

audio_waveforms's People

Contributors

abhay-s-rawat avatar aditya-css avatar devarshranpara avatar dhavalrkansara avatar himanshugandhisimform avatar kashifalaliwala avatar linchen00 avatar mschudt avatar rlee1990 avatar shwetachauhan18 avatar ujas-m-simformsolutions avatar ujas-majithiya avatar vatsaltanna-simformsolutions avatar yohom avatar zubii12 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

audio_waveforms's Issues

E/AudioWaveforms(17220): Microphone might be turned off

Thank you for this package.
I am getting this error message repeatedly when trying out the example code.
However, it seems to work fine. The WaveForm appears to show the negative of the input. When I record, it gets small, when I am silent, it is at max.

Best regards!

Generate waveform from an URL?

Great package! I needed something just like this for our app. The documentation shows how to generate a waveform by recording audio. But is there a way to generate waveforms from an URL or local audio file? Thanks.

Can't load file path

E/flutter ( 8529): [ERROR:flutter/lib/ui/ui_dart_state.cc(198)] Unhandled Exception: Please provide a valid file path
E/flutter ( 8529): #0      PlayerController._readAudioFile (package:audio_waveforms/src/controllers/player_controller.dart:74:7)
E/flutter ( 8529): <asynchronous suspension>
E/flutter ( 8529): #1      PlayerController.preparePlayer (package:audio_waveforms/src/controllers/player_controller.dart:90:5)
E/flutter ( 8529): <asynchronous suspension>
E/flutter ( 8529): 

I tried below code for load Music, but I got error.

but other library(audioplayers) can work.

static const audioSet = "assets/audio/HoldOn.mp3";
playerController.preparePlayer(audioSet);

version: 0.1.4

Waveform timer listener.?

very good package, the waveform audio package in flutter is mostly outdated, I understand this package is still new but one feature that is quite cool I think is the timer listener when the waveform is scrolled we can get the time position of the audio, and we can play the audio right at the scroll position

When I run the project, this error appears

/C:/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.5/lib/src/controllers/player_controller.dart:14:3: Error: Type 'Uint8List' not found.
Uint8List? _bufferData;
^^^^^^^^^
/C:/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.5/lib/src/controllers/player_controller.dart:17:3: Error: Type 'Uint8List' not found.
Uint8List? get bufferData => _bufferData;
^^^^^^^^^

Is there a way to listen to player reaching end of audio file?

I am using AudioFileWaveforms to listen to an audio recording. I have a play button that turns into a pause button once the recording start. I achieve that using addListener() on the PlayerController as shown in the docs example. My problem is that I want to turn the pause button back to play button once the player reached the end of the recording. I can see that the listener is not called when the player reaches the end.
I was wondering if maybe there is a way to do this? and if not it could be a good enhancement

Display waves and play content from web url like: https://example.com/example_audio.mp4

Hey guys, I love this project, could you explain me how to generate waves from an http audio url?
I can't find any doc or example in the pub.dev link or by reading the sources.

To work around the problem I created a temporary file, but it would be nice to have a method to invoke fromUrl.
I'm posting this code to help someone who would like to read voice messages from a database.

ElevatedButton(
    onPressed: () async {
        Response response = await get(Uri.parse(
            "https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3"));
        Uint8List bytes = response.bodyBytes;
        File file = File('${appDirectory.path}/audio1.mp3');

        if (response.statusCode == 200) {
              await file.writeAsBytes(bytes);
               playerController1.preparePlayer(file.path).then((value) {
                    if (mounted) {
                        setState(() {});
                    }
             });
       }
 },
child: Text("Buf url"),
 ),

Originally posted by @bulgarian-beast in #20 (comment)

Android error: Class 'AudioRecorder' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult

/Users/kkkkk/SDKS/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (20, 1): Class 'AudioRecorder' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener
e: /Users/ericli/SDKS/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (97, 5): 'onRequestPermissionsResult' overrides nothing

file path error in playerController

I want to record and then play the file.
Code like this
Screen Shot 2022-05-03 at 9 15 46 PM

But, occur this error.
Screen Shot 2022-05-03 at 9 16 27 PM

Test in my real device iphone8+.
Is my code wrong?

And I also try in my real android device.
Then no problem.

AudioFileWaveforms does not show waveforms

I'm using the AudioFileWaveforms in a row to create a player UI, and this is how I do it:

Container(
          margin: const EdgeInsets.symmetric(horizontal: 0, vertical: 12),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            crossAxisAlignment: CrossAxisAlignment.center,
            children: [
              // Wave
              Expanded(
                child: LayoutBuilder(
                  builder: (context, constraints) => AudioFileWaveforms(
                    size: Size(constraints.maxWidth, 80.0),
                    playerController: _playerController,
                  ),
                ),
              ),

              // Timer
              const SizedBox(width: 4),
              Text(
                "${timeCounter.formattedTime}/${TimeCounter.formatTime(_trackDurationMillis)}",
                style: Theme.of(context).textTheme.bodySmall,
              ),
              const SizedBox(width: 4),

              // Pause/resume button (shown only when playing has started)
              IconButton(
                icon: Icon(
                    _audioPlayerState == AudioPlayerState.paused
                        ? Icons.play_arrow
                        : Icons.pause,
                    color: Colors.black),
                onPressed: _audioPlayerState != AudioPlayerState.stopped
                    ? () {
                        togglePauseResume(timeCounter);
                      }
                    : null,
              ),

              // Start/stop button (shown always)
              IconButton(
                icon: Icon(
                    (_audioPlayerState == AudioPlayerState.stopped ||
                            _audioPlayerState == AudioPlayerState.unprepared)
                        ? Icons.play_arrow
                        : Icons.stop,
                    color: Colors.red),
                onPressed: () {
                  toggleStartStop(timeCounter);
                },
              ),
            ],
          ),
        );

Thing is, it gets played correctly, but no waveforms appear. It's just blank. Why is this so?

Duration doesn't reset after calling stop (IOS)

Hello, first of all thank you for this great package.

If I call recoderController.stop() and try to take a new recording without leaving the page (and triggering dispose), it will start by first displaying no wave. If one has the duration markers enabled, one can see that it renders the last timestamp at the near the left most position.

Video of the issue
Audio_issue.mp4

Device: Iphone 12 mini
IOS version: 15.6
Flutter Version: 3.0.4
package version: 0.1.3

Edit: No clue if the issue also is on android

Code snippet for my recording button:

class RecordingButton extends StatefulWidget {
  const RecordingButton(
      {Key? key, required this.controller, required this.audioManager})
      : super(key: key);
  final RecorderController controller;
  final AudioManager audioManager;
  @override
  _RecordingButtonState createState() => _RecordingButtonState();
}

class _RecordingButtonState extends State<RecordingButton> {
  bool isRecording = false;
  @override
  Widget build(BuildContext context) {
    return FloatingActionButton(
        onPressed: () async {
          isRecording = !isRecording;
          String savePath = await widget.audioManager.audioPath;
          isRecording == true
              ? await widget.controller.record(savePath)
              : await widget.controller.stop(true);
          setState(() {});
        },
        child: isRecording ? const Icon(Icons.stop) : const Icon(Icons.mic));
  }
}

Player Reset Option

I don't see an option to reset the player at all. Looping doesn't seem like a great option when using in a chat app.

After I upgrade flutter 3.0. build error on android

/Users/gony/development/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (20, 1): Class 'AudioRecorder' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener
e: /Users/gony/development/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (97, 5): 'onRequestPermissionsResult' overrides nothing

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':audio_waveforms:compileDebugKotlin'.

Compilation error. See log for more details

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 11s
Exception: Gradle task assembleDebug failed with exit code 1

This is error code. How I can fix it?

Invalid file

final path = await recorderController.stop();
final String finalPath = path!.substring(7);
File file = File(finalPath);
bool filepresence = await file.exists();
print(filepresence);

This is giving me invalid file and player controller is also saying invalid file path

WidgetsBindingObserver build failed

I was looking for a solution for this plugin as I was getting fails while trying to build out an apk. I jsut updated to newest version from 0.1.1 to 0.1.4 the verifyresource issue is indeed gone now but now I have a new issue with widgetbindings. This is the error I'm getting when build fails...

../flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.4/lib/src/audio_waveforms.dart:176:29: Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?' because it is potentially null.
 - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../flutter/packages/flutter/lib/src/widgets/binding.dart').  
Try calling using ?. instead.
    WidgetsBinding.instance.addPostFrameCallback((_) {
                            ^^^^^^^^^^^^^^^^^^^^
../flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.4/lib/src/controllers/recorder_controller.dart:203:29: Error: Method 'addPostFrameCallback' cannot be called on 'WidgetsBinding?' because it is potentially null.
 - 'WidgetsBinding' is from 'package:flutter/src/widgets/binding.dart' ('../flutter/packages/flutter/lib/src/widgets/binding.dart').  
Try calling using ?. instead.
    WidgetsBinding.instance.addPostFrameCallback((_) {

The only 2 places I use the audiowaveform I also use a timer in the widget so I use the WidgetsBindingObserver on the class.

So after checking out the two errors a bit more I went to the 2 locations that you use addPostFrameCallback and added an ! at the end of instance like so for the first file reference...

    WidgetsBinding.instance!.addPostFrameCallback((_) {
      setState(() {});
    });

and again for the second file reference

    WidgetsBinding.instance!.addPostFrameCallback((_) {
      shouldClearLabels = false;
      notifyListeners();
    });

After I added those 2 exclamation marks I am able to build the apk now

Cannot start iOS recorder

I'm testing the iOS recording on iOS real device 15

and I got this error:

Any idead what I'm doing wrong?

[VERBOSE-2:ui_dart_state.cc(198)] Unhandled Exception: PlatformException(, Failed to start recording, null, null)
#0      StandardMethodCodec.decodeEnvelope
package:flutter/…/services/message_codecs.dart:607
#1      MethodChannel._invokeMethod
package:flutter/…/services/platform_channel.dart:167
<asynchronous suspension>
#2      AudioWaveformsInterface.record
package:audio_waveforms/…/base/audio_waveforms_interface.dart:13
<asynchronous suspension>
#3      RecorderController.record
package:audio_waveforms/…/controllers/recorder_controller.dart:105
<asynchronous suspension>
#4      MessageController.startRecording
package:qusayalomiri/…/Controllers/Message.controller.dart:236
<asynchronous suspension>
#5      MessageController._startOrStopRecording
package:qusayalomiri/…/Controllers/Message.controller.dart:229
<asynchronous suspension>
#6      MessageController.sendVoiceMessage
package:qusayalomiri/…/Controllers/Message.controller.dart:196
<asynchronous suspension>

Class 'AudioRecorder' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.0.1, on macOS 12.4 21F79 darwin-arm, locale
en-EG)
[✓] Android toolchain - develop for Android devices (Android SDK version
32.1.0-rc1)
[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
[✓] Chrome - develop for the web
[✓] Android Studio
[✓] VS Code (version 1.68.1)
[✓] Connected device (3 available)
[✓] HTTP Host Availability

• No issues found!

Waveform scroll gesture can't begin with swipe to left

I've noticed this strange behaviour where I can only begin with a swipe-right gesture to scroll through the waveform. I can swipe left but only if I begin the gesture with a swipe to the right. Below is the AudioWaveforms widget, let me know if you need the full code snippet. I have also attached a recording of this behaviour.

AudioWaveforms(
  enableGesture: true,
  size: const Size(double.infinity, 80.0),
  waveStyle: const WaveStyle(
    showMiddleLine: false,
    waveThickness: 4,
  ),
  recorderController: recorderController,
)

image

Example of a file path for player

I/flutter (13493): My File path: /data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-09_22:07:02.483249.mp4
I/flutter (13493): My File path: /data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-08_22:52:26.804572.mp4
I/ExoPlayerImpl(13493): Init 81a792b [ExoPlayerLib/2.17.1] [generic_x86_arm, AOSP on IA Emulator, Google, 28]
I/ExoPlayerImpl(13493): Init 500945d [ExoPlayerLib/2.17.1] [generic_x86_arm, AOSP on IA Emulator, Google, 28]
E/ExoPlayerImplInternal(13493): Playback error
E/ExoPlayerImplInternal(13493):   com.google.android.exoplayer2.ExoPlaybackException: Source error
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleIoException(ExoPlayerImplInternal.java:641)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.ExoPlayerImplInternal.handleMessage(ExoPlayerImplInternal.java:613)
E/ExoPlayerImplInternal(13493):       at android.os.Handler.dispatchMessage(Handler.java:102)
E/ExoPlayerImplInternal(13493):       at android.os.Looper.loop(Looper.java:193)
E/ExoPlayerImplInternal(13493):       at android.os.HandlerThread.run(HandlerThread.java:65)
E/ExoPlayerImplInternal(13493):   Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.MalformedURLException: no protocol: /data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-09_22:07:02.483249.mp4
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:365)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.DefaultDataSource.open(DefaultDataSource.java:258)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:84)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:1009)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:412)
E/ExoPlayerImplInternal(13493):       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
E/ExoPlayerImplInternal(13493):       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
E/ExoPlayerImplInternal(13493):       at java.lang.Thread.run(Thread.java:764)
E/ExoPlayerImplInternal(13493):   Caused by: java.net.MalformedURLException: no protocol: /data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-09_22:07:02.483249.mp4
E/ExoPlayerImplInternal(13493):       at java.net.URL.<init>(URL.java:601)
E/ExoPlayerImplInternal(13493):       at java.net.URL.<init>(URL.java:498)
E/ExoPlayerImplInternal(13493):       at java.net.URL.<init>(URL.java:447)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:507)
E/ExoPlayerImplInternal(13493):       at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:359)
E/ExoPlayerImplInternal(13493):       ... 7 more

I would like to play a file which is saved in app directory
/data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-09_22:07:02.483249.mp4

But it said
Caused by: com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: java.net.MalformedURLException: no protocol: /data/user/0/com.example.testdrive/app_flutter/mysound-2022-06-09_22:07:02.483249.mp4

I have tried adding file:/ or file://. However it gives another error which is
Please provide a valid file path

Is there any example of what should a file path looks like ??

Thank you

Waveforms for extra long audios

I'm recording interview sessions, each lasting more than 60 minutes. Displaying the whole waveform is to inaccurate to skim through the interview.

Is there any way to scroll vertically with the audio with the player?
The Audiorecorder does exactly what I want, just that I want a player with that style.

Thanks in advance for any help.

Build Error with Flutter 3

I upgrade flutter version to 3 then the plugin produces errors like.

audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (20, 1): Class 'AudioRecorder' is not abstract and does not implement abstract member public abstract fun onRequestPermissionsResult(p0: Int, p1: Array<(out) String!>, p2: IntArray): Boolean defined in io.flutter.plugin.common.PluginRegistry.RequestPermissionsResultListener

e: /Users/user/Downloads/flutter/.pub-cache/hosted/pub.dartlang.org/audio_waveforms-0.1.1/android/src/main/kotlin/com/simform/audio_waveforms/AudioRecorder.kt: (97, 5): 'onRequestPermissionsResult' overrides nothing

kindly guide me how to reslove this issue.
Thanks

Clear waveData

Hey, what a great package, very good job !

I have used to record and after I want to preview it, it works fine but I want to clear the waveData manually and I've seen it's not possible since the method reset is private.

Could you made it public to let us use it ?

Thanks a lot !

how can I get state when finished?

When the player is finished, how can I get state? The controller.stop or pause is not received by the listener. Even when I print out the log, it stops at state.playing.

The last wave form is always flickering when recording

My code:

@override
  void initState() {
    super.initState();
    _recorderController = RecorderController();
    _recorderController.record();
  }

...

AudioWaveforms(
    size: const Size(230, 50),
    recorderController: _recorderController,
    waveStyle: const WaveStyle(
      waveColor: Colors.pink,
      spacing: 8.0,
      extendWaveform: true,
      showMiddleLine: false,
   ),
)

For some reason the last wave form always appears to be flickering:
recording flickering bug

Is this a bug? or am I doing something wrong?

Page needs to be reloaded before audiowave works

Hello there and great plugin. I'm having an issue where after I create the audiofile and display the waveform widget it doesnt populate. I have to go to another screen then back for the widget to load in the audio data. Just a quick background. I have chat list screen, from there I click a button and it takes me to a separate audio recording screen. I do the recording fine. Choose to save file. File gets sent to firebase and then my app closes the audio recording screen and returns user to chat list screen. The list now shows the widget but its empty and I can click on the play button to start the recording(along with a log print in console to verify the action). So I have to go out of the chat screen and back in and then the widget loads the data and shows the waveform.

Not sure if there is something I'm missing or what. I've been trying to find a way to reload the page after the recording screen pops off the tree stack but I have yet to figure it out. Any help would be much appreciated.

Web support

Hi 👋🏼, Amazing plugin. Do you have in mind to add web support?

pause on recording issue

I pause recording and then start record, recording wave is no problem.
But I stop recording and playing file, there's only last record thing exist. Before last pause are disappear.

Microphone might be turned off

Issue:
Starting audio recording with recorderController.record() prints this:

D/AudioWaveforms( 8758): Microphone might be turned off

And nothing else happens. The waveforms don't appear.

Version:
audio_waveforms: 0.1.3

Issue With iOS 15.6.1

I get the below error on ios:
scheduledTimer(withTimeInterval:repeats:block:)' is only available in iOS 10.0 or newer
By switching:

func startListening(){
        timer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: {_ in
            let ms = (self.player?.currentTime ?? 0) * 1000
            self.plugin.onCurrentDuration(duration: Int(ms),playerKey: self.playerKey)
        })
    }```
to:

func startListening(){
if #available(iOS 10.0, *) {
timer = Timer.scheduledTimer(withTimeInterval: 0.2, repeats: true, block: {_ in
let ms = (self.player?.currentTime ?? 0) * 1000
self.plugin.onCurrentDuration(duration: Int(ms),playerKey: self.playerKey)
})
} else {
// Fallback on earlier versions
}
}

it then builds

bug while release android

how to solve iam try to use the

  audio_waveforms:
    git: https://github.com/SimformSolutionsPvtLtd/audio_waveforms.git

and also v 0.1.3

* What went wrong:
Execution failed for task ':audio_waveforms:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
   > Android resource linking failed
     ERROR:/Users/hatemragap/.gradle/caches/transforms-3/a9f4480d4badf2df91e3401ac7ead06e/transformed/core-1.7.0/res/values/values.xml:105:5-114:25: AAPT: error: resource android:attr/lStar not found.

Waveforms of no sound at all appear at their max size instead of their min size

My code:

@override
  void initState() {
    super.initState();
    _recorderController = RecorderController();
    _recorderController.record();
  }

...

AudioWaveforms(
    size: const Size(230, 50),
    recorderController: _recorderController,
    waveStyle: const WaveStyle(
      waveColor: Colors.pink,
      spacing: 8.0,
      extendWaveform: true,
      showMiddleLine: false,
   ),
)

For some reason the wave forms of absolute silence appear at max size.
Here is a photo - took the screenshot when there was no sound at all
no sound bug

It is important to mention that when there is sound the waveforms seems to work as expected.

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.