Sha256: 62a9e8511e3d43ad82d15c6c91d96a251d8757ef8e099d1e2fb6bf5f1e5038fa

Contents?: true

Size: 1.17 KB

Versions: 1

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require "dry-struct"

require "foxtracker/types"
require "foxtracker/format/extended_module/pattern"
require "foxtracker/format/extended_module/instrument"

module Foxtracker
  module Format
    class ExtendedModule < Dry::Struct
      # Header
      attribute :title, Types::Strict::String
      attribute :tracker, Types::Strict::String
      attribute :version_number, Types::Strict::Integer
      attribute :header_size, Types::Strict::Integer
      attribute :song_length, Types::Strict::Integer.constrained(min_size: 1, max_size: 256)
      attribute :restart_position, Types::Strict::Integer
      attribute :number_of_channels, Types::Strict::Integer
      attribute :number_of_patterns, Types::Strict::Integer
      attribute :number_of_instruments, Types::Strict::Integer
      attribute :flags, Types::Strict::Integer
      attribute :default_tempo, Types::Strict::Integer
      attribute :default_bpm, Types::Strict::Integer
      attribute :pattern_order, Types::Strict::Array.of(Types::Strict::Integer)

      attribute :patterns, Types::Strict::Array.of(Pattern)
      attribute :instruments, Types::Strict::Array.of(Instrument)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
foxtracker-0.1.0.pre1337 lib/foxtracker/format/extended_module.rb