Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
141 changes: 134 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,11 +1,138 @@
# Files and directories created by pub
# Miscellaneous
*.class
*.lock
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/*

# Visual Studio Code related
.classpath
.project
.settings/
.vscode/*

# Flutter repo-specific
/bin/cache/
/bin/mingit/
/dev/benchmarks/mega_gallery/
/dev/bots/.recipe_deps
/dev/bots/android_tools/
/dev/docs/doc/
/dev/docs/flutter.docs.zip
/dev/docs/lib/
/dev/docs/pubspec.yaml
/dev/integration_tests/**/xcuserdata
/dev/integration_tests/**/Pods
/packages/flutter/coverage/
version

# packages file containing multi-root paths
.packages.generated

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
# Remove the following pattern if you wish to check in your lock file
pubspec.lock

# Conventional directory for build outputs
.pub-cache/
.pub/
build/
flutter_*.png
linked_*.ds
unlinked.ds
unlinked_spec.ds
.fvm/flutter_sdk

# Android related
**/android/**/gradle-wrapper.jar
**/android/.gradle
**/android/captures/
**/android/gradlew
**/android/gradlew.bat
**/android/local.properties
**/android/**/GeneratedPluginRegistrant.java
**/android/key.properties
**/android/.idea/
*.jks

# iOS/XCode related
**/ios/**/*.mode1v3
**/ios/**/*.mode2v3
**/ios/**/*.moved-aside
**/ios/**/*.pbxuser
**/ios/**/*.perspectivev3
**/ios/**/*sync/
**/ios/**/.sconsign.dblite
**/ios/**/.tags*
**/ios/**/.vagrant/
**/ios/**/DerivedData/
**/ios/**/Icon?
**/ios/**/Pods/
**/ios/**/.symlinks/
**/ios/**/profile
**/ios/**/xcuserdata
**/ios/.generated/
**/ios/Flutter/App.framework
**/ios/Flutter/Flutter.framework
**/ios/Flutter/Flutter.podspec
**/ios/Flutter/Generated.xcconfig
**/ios/Flutter/app.flx
**/ios/Flutter/app.zip
**/ios/Flutter/.last_build_id
**/ios/Flutter/flutter_assets/
**/ios/Flutter/flutter_export_environment.sh
**/ios/ServiceDefinitions.json
**/ios/Runner/GeneratedPluginRegistrant.*

# Windows
**/windows/flutter/generated_plugin_registrant.cc
**/windows/flutter/generated_plugin_registrant.h
**/windows/flutter/generated_plugins.cmake
**/windows/flutter/ephemeral

# Coverage
coverage/

# Submodules
!pubspec.lock
packages/**/pubspec.lock

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Exceptions to the above rules.
!**/ios/**/default.mode1v3
!**/ios/**/default.mode2v3
!**/ios/**/default.pbxuser
!**/ios/**/default.perspectivev3
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
!/dev/ci/**/Gemfile.lock
!.vscode/extensions.json
!.vscode/launch.json
!.idea/codeStyles/
!.idea/dictionaries/
!.idea/runConfigurations/

# Directory created by dartdoc
doc/api/
# Ignore non-CI golden files and failures
test/**/goldens/**/*.*
test/**/failures/**/*.*
!test/**/goldens/ci/*.*
5 changes: 5 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## [0.2.0] - Null safety and data chunk fix
* Updated to null safety
* Updated to Dart 3 & Flutter 3.13.x
* Added official flutter_test dependency and removed test dependency

## [0.1.0] - Initial open source version

* Generate 8 bit audio
Expand Down
22 changes: 12 additions & 10 deletions lib/src/data_chunk8.dart
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import 'dart:typed_data';
import 'dart:math';
import 'dart:typed_data';

import 'byte_helpers.dart';
import 'chunk.dart';
import 'format_chunk.dart';
import 'generator_function.dart';
import 'package:wave_generator/src/byte_helpers.dart';
import 'package:wave_generator/src/chunk.dart';
import 'package:wave_generator/src/format_chunk.dart';
import 'package:wave_generator/src/generator_function.dart';

import '../wave_generator.dart';

class DataChunk8 implements DataChunk {
final FormatChunk format;
final List<Note> notes;

final String _sGroupId = 'data';
final String _sGroupId = "data";

// nb. Stored as unsigned bytes in the rage 0 to 255
static const int min = 0;
Expand All @@ -22,7 +22,7 @@ class DataChunk8 implements DataChunk {
return byte.clamp(min, max);
}

const DataChunk8(this.format, this.notes);
DataChunk8(this.format, this.notes);

@override
Stream<int> bytes() async* {
Expand All @@ -46,15 +46,15 @@ class DataChunk8 implements DataChunk {
// compare against step count to select the correct note
int noteNumber = 0;
int incrementNoteOnSample =
(notes[noteNumber].msDuration * format.sampleRate) ~/ 1000;
((notes[noteNumber].msDuration * format.sampleRate) / 1000).round();

int sampleMax = totalSamples;
var amplify = (max + 1) / 2;
for (int step = 0; step < sampleMax; step++) {
if (incrementNoteOnSample == step) {
noteNumber += 1;
incrementNoteOnSample +=
(notes[noteNumber].msDuration * format.sampleRate) ~/ 1000;
((notes[noteNumber].msDuration * format.sampleRate) / 1000).round();
}

double theta = notes[noteNumber].frequency * (2 * pi) / format.sampleRate;
Expand All @@ -76,7 +76,9 @@ class DataChunk8 implements DataChunk {
}

@override
int get length => totalSamples * format.blockAlign;
int get length {
return totalSamples * format.blockAlign;
}

int get totalSamples {
double secondsDuration =
Expand Down
24 changes: 18 additions & 6 deletions lib/wave_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -98,16 +98,28 @@ class WaveGenerator {
var dataChunk = _getDataChunk(formatHeader, notes);
var fileHeader = WaveHeader(formatHeader, dataChunk);

await for (int data in fileHeader.bytes()) {
yield data;
try {
await for (int data in fileHeader.bytes()) {
yield data;
}
} catch (e) {
print(e);
}

await for (int data in formatHeader.bytes()) {
yield data;
try {
await for (int data in formatHeader.bytes()) {
yield data;
}
} catch (e) {
print(e);
}

await for (int data in dataChunk.bytes()) {
yield data;
try {
await for (int data in dataChunk.bytes()) {
yield data;
}
} catch (e) {
print(e);
}
}

Expand Down
Loading