Skip to content

Commit

Permalink
refactor!: move music theory code into dedicated directory
Browse files Browse the repository at this point in the history
  • Loading branch information
elasticdog committed May 5, 2024
1 parent d57d120 commit 33fccf8
Show file tree
Hide file tree
Showing 9 changed files with 19 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/constants.zig
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
pub const music_theory = struct {
pub const theory = struct {
const chromatic_pitches = []const u8{
"A",
"A#",
Expand Down
2 changes: 1 addition & 1 deletion src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ pub fn main() !void {

rl.setTargetFPS(60);

var midi_output = try MidiOutput.init();
var midi_output = try MidiOutput.init("ClefCraft");
defer midi_output.deinit();

while (!rl.windowShouldClose()) {
Expand Down
4 changes: 2 additions & 2 deletions src/midi/output.zig
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ const rtmidi = @import("rtmidi");
pub const MidiOutput = struct {
output: ?*rtmidi.Out,

pub fn init() !MidiOutput {
pub fn init(name: [:0]const u8) !MidiOutput {
var output = rtmidi.Out.createDefault() orelse return error.MidiOutFailed;
output.openVirtualPort("ClefCraft");
output.openVirtualPort(name);
return MidiOutput{ .output = output };
}

Expand Down
16 changes: 8 additions & 8 deletions src/root.zig
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
const std = @import("std");
const testing = std.testing;

pub const Interval = @import("interval.zig").Interval;
pub const Note = @import("note.zig").Note;
pub const Pitch = @import("pitch.zig").Pitch;
pub const Scale = @import("scale.zig").Scale;
pub const Interval = @import("theory/interval.zig").Interval;
pub const Note = @import("theory/note.zig").Note;
pub const Pitch = @import("theory/pitch.zig").Pitch;
pub const Scale = @import("theory/scale.zig").Scale;

test {
// Run all unit tests.
_ = @import("interval.zig");
_ = @import("note.zig");
_ = @import("pitch.zig");
_ = @import("scale.zig");
_ = @import("theory/interval.zig");
_ = @import("theory/note.zig");
_ = @import("theory/pitch.zig");
_ = @import("theory/scale.zig");
}
4 changes: 2 additions & 2 deletions src/interval.zig → src/theory/interval.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ const log = std.log.scoped(.interval);

const Note = @import("note.zig").Note;

const notes_per_octave = @import("constants.zig").music_theory.notes_per_octave;
const semitones_per_octave = @import("constants.zig").music_theory.semitones_per_octave;
const notes_per_octave = @import("../constants.zig").theory.notes_per_octave;
const semitones_per_octave = @import("../constants.zig").theory.semitones_per_octave;

pub const Interval = struct {
quality: Quality,
Expand Down
4 changes: 2 additions & 2 deletions src/note.zig → src/theory/note.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ const log = std.log.scoped(.note);

const pitch = @import("pitch.zig");
const _interval = @import("interval.zig");
const utils = @import("utils.zig");
const utils = @import("../utils.zig");

const Accidental = pitch.Accidental;
const Interval = _interval.Interval;
const Letter = pitch.Letter;
const Pitch = pitch.Pitch;

const semitones_per_octave = @import("constants.zig").music_theory.semitones_per_octave;
const semitones_per_octave = @import("../constants.zig").theory.semitones_per_octave;

// The international standard pitch, A440.
const standard_note = Note{ .pitch = Pitch{ .letter = .a, .accidental = null }, .octave = 4 };
Expand Down
4 changes: 2 additions & 2 deletions src/pitch.zig → src/theory/pitch.zig
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ const std = @import("std");
const assert = std.debug.assert;
const log = std.log.scoped(.pitch);

const utils = @import("utils.zig");
const utils = @import("../utils.zig");

const letter_count = 7;
const semitones_per_octave = @import("constants.zig").music_theory.semitones_per_octave;
const semitones_per_octave = @import("../constants.zig").theory.semitones_per_octave;

/// The chosen notational spelling for a pitch class.
///
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/ui/piano.zig
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ const log = std.log.scoped(.piano);
const rl = @import("raylib");

const MidiOutput = @import("../midi/output.zig").MidiOutput;
const Note = @import("../note.zig").Note;
const Note = @import("../theory/note.zig").Note;

const key_count = 88;
const key_spacing = 2;
Expand Down

0 comments on commit 33fccf8

Please sign in to comment.